FindCg.cmake 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. # Filename: FindCg.cmake
  2. # Author: kestred (8 Dec, 2013)
  3. #
  4. # Usage:
  5. # find_package(Cg [REQUIRED] [QUIET])
  6. #
  7. # Once done this will define:
  8. # CG_FOUND - system has NvidiaCg
  9. # CG_INCLUDE_DIR - the NvidiaCg include directory
  10. # CG_INCLUDE_DIRS - directories for all NvidiaCg components
  11. # CG_LIBRARY_DIR - the NvidiaCg library directory
  12. # CG_LIBRARY - the path to the library binary
  13. # CG_LIBRARIES - the paths to the Cg library and each library below.
  14. #
  15. # CGGL_FOUND - system has CgGL
  16. # CGGL_INCLUDE_DIR - the CgGL include directory
  17. # CGGL_LIBRARY_DIR - the CgGL library directory
  18. # CGGL_LIBRARY - the path to the library binary
  19. #
  20. ### Define macros to find each sublibrary ###
  21. # Find Cg for OpenGL
  22. macro(find_cggl)
  23. if(Cg_FIND_QUIETLY)
  24. set(CgGL_FIND_QUIETLY TRUE)
  25. endif()
  26. if(NOT CGGL_LIBRARY_DIR OR NOT CGGL_INCLUDE_DIR)
  27. # Find the include directory
  28. find_path(CGGL_INCLUDE_DIR
  29. NAMES "cgGL.h"
  30. PATHS "C:/Program Files/Cg"
  31. "C:/Program Files/NVIDIA Corporation/Cg/include"
  32. "/usr/include"
  33. "/usr/local/include"
  34. "/opt/Cg"
  35. "/opt/nvidia-cg-toolkit/include" # Gentoo
  36. PATH_SUFFIXES "" "Cg" "cg"
  37. DOC "The path to NvidiaCgGL's include directory."
  38. )
  39. # Find the library directory
  40. find_library(CGGL_LIBRARY
  41. NAMES "CgGL" "libCgGL"
  42. PATHS "C:/Program Files/Cg"
  43. "C:/Program Files/NVIDIA Corporation/Cg"
  44. "/usr"
  45. "/usr/lib/x86_64-linux-gnu"
  46. "/usr/local"
  47. "/opt/Cg"
  48. "/opt/nvidia-cg-toolkit" # Gentoo
  49. PATH_SUFFIXES "" "lib" "lib32" "lib64"
  50. DOC "The filepath to NvidiaCgGL's libary binary."
  51. )
  52. get_filename_component(CGGL_LIBRARY_DIR "${CGGL_LIBRARY}" PATH)
  53. set(CGGL_LIBRARY_DIR "${CGGL_LIBRARY_DIR}" CACHE PATH "The path to the CgGL library directory.") # Library path
  54. mark_as_advanced(CGGL_INCLUDE_DIR)
  55. mark_as_advanced(CGGL_LIBRARY_DIR)
  56. mark_as_advanced(CGGL_LIBRARY)
  57. endif()
  58. find_package_handle_standard_args(CgGL DEFAULT_MSG CGGL_LIBRARY CGGL_INCLUDE_DIR CGGL_LIBRARY_DIR)
  59. endmacro()
  60. # Find Cg for Direct3D 9
  61. macro(find_cgd3d9)
  62. if(Cg_FIND_QUIETLY)
  63. set(CgD3D9_FIND_QUIETLY TRUE)
  64. endif()
  65. if(NOT CGD3D9_LIBRARY_DIR OR NOT CGD3D9_INCLUDE_DIR)
  66. # Find the include directory
  67. find_path(CGD3D9_INCLUDE_DIR
  68. NAMES "cgD3D9.h"
  69. PATHS "C:/Program Files/Cg"
  70. "C:/Program Files/NVIDIA Corporation/Cg/include"
  71. "/usr/include"
  72. "/usr/local/include"
  73. "/opt/Cg"
  74. "/opt/nvidia-cg-toolkit/include" # Gentoo
  75. PATH_SUFFIXES "" "Cg" "cg"
  76. DOC "The path to NvidiaCgD3D9's include directory."
  77. )
  78. # Find the library directory
  79. find_library(CGD3D9_LIBRARY
  80. NAMES "CgD3D9" "libCgD3D9"
  81. PATHS "C:/Program Files/Cg"
  82. "C:/Program Files/NVIDIA Corporation/Cg"
  83. "/usr"
  84. "/usr/lib/x86_64-linux-gnu"
  85. "/usr/local"
  86. "/opt/Cg"
  87. "/opt/nvidia-cg-toolkit" # Gentoo
  88. PATH_SUFFIXES "" "lib" "lib32" "lib64"
  89. DOC "The filepath to NvidiaCgD3D9's libary binary."
  90. )
  91. get_filename_component(CGD3D9_LIBRARY_DIR "${CGD3D9_LIBRARY}" PATH)
  92. set(CGD3D9_LIBRARY_DIR "${CGD3D9_LIBRARY_DIR}" CACHE PATH "The path to the CgD3D9 library directory.") # Library path
  93. mark_as_advanced(CGD3D9_INCLUDE_DIR)
  94. mark_as_advanced(CGD3D9_LIBRARY_DIR)
  95. mark_as_advanced(CGD3D9_LIBRARY)
  96. endif()
  97. find_package_handle_standard_args(CgD3D9 DEFAULT_MSG CGD3D9_LIBRARY CGD3D9_INCLUDE_DIR CGD3D9_LIBRARY_DIR)
  98. endmacro()
  99. # Find base Nvidia Cg
  100. if(NOT CG_LIBRARY_DIR OR NOT CG_INCLUDE_DIRS)
  101. # On OSX default to using the framework version of Cg.
  102. if(APPLE)
  103. include(${CMAKE_ROOT}/Modules/CMakeFindFrameworks.cmake)
  104. set(CG_INCLUDES)
  105. cmake_find_frameworks(Cg)
  106. if(Cg_FRAMEWORKS)
  107. foreach(dir ${Cg_FRAMEWORKS})
  108. list(APPEND CG_INCLUDES ${dir}/Headers ${dir}/PrivateHeaders)
  109. endforeach(dir)
  110. unset(Cg_FRAMEWORKS)
  111. # Find the include dir
  112. find_path(CG_INCLUDE_DIR
  113. NAMES "cg.h"
  114. PATHS ${CG_INCLUDES}
  115. DOC "The path to NvidiaCg's include directory."
  116. )
  117. unset(CG_INCLUDES)
  118. # Set the library dir (TODO: Check the correctness on Mac OS X)
  119. set(CG_LIBRARY_DIR "/Library/Frameworks/Cg.framework" CACHE PATH "The path to NvidiaCg's library directory.")
  120. endif()
  121. else()
  122. # Find the include directory
  123. find_path(CG_INCLUDE_DIR
  124. NAMES "cg.h"
  125. PATHS "C:/Program Files/Cg"
  126. "C:/Program Files/NVIDIA Corporation/Cg/include"
  127. "/usr/include"
  128. "/usr/local/include"
  129. "/opt/Cg"
  130. "/opt/nvidia-cg-toolkit/include" # Gentoo
  131. PATH_SUFFIXES "" "Cg" "cg"
  132. DOC "The path to NvidiaCg's include directory."
  133. )
  134. # Find the library directory
  135. find_library(CG_LIBRARY
  136. NAMES "Cg" "libCg"
  137. PATHS "C:/Program Files/Cg"
  138. "C:/Program Files/NVIDIA Corporation/Cg"
  139. "/usr"
  140. "/usr/lib/x86_64-linux-gnu"
  141. "/usr/local"
  142. "/opt/Cg"
  143. "/opt/nvidia-cg-toolkit" # Gentoo
  144. PATH_SUFFIXES "" "lib" "lib32" "lib64"
  145. )
  146. get_filename_component(CG_LIBRARY_DIR "${CG_LIBRARY}" PATH)
  147. set(CG_LIBRARY_DIR "${CG_LIBRARY_DIR}" CACHE PATH "The path to NvidiaCG's library directory.") # Library path
  148. endif()
  149. string(REGEX REPLACE "/Cg$" "" CG_BASE_INCLUDE_DIR "${CG_INCLUDE_DIR}")
  150. set(CG_INCLUDE_DIRS ${CG_BASE_INCLUDE_DIR} ${CG_INCLUDE_DIR})
  151. mark_as_advanced(CG_INCLUDE_DIRS)
  152. mark_as_advanced(CG_INCLUDE_DIR)
  153. mark_as_advanced(CG_LIBRARY_DIR)
  154. mark_as_advanced(CG_LIBRARY)
  155. endif()
  156. include(FindPackageHandleStandardArgs)
  157. find_package_handle_standard_args(Cg DEFAULT_MSG CG_LIBRARY CG_INCLUDE_DIRS CG_LIBRARY_DIR)
  158. if(CG_INCLUDE_DIR AND CG_LIBRARY_DIR)
  159. find_cggl()
  160. find_cgd3d9()
  161. set(CG_LIBRARIES ${CG_LIBRARY})
  162. if(CGGL_LIBRARY)
  163. list(APPEND CG_LIBRARIES "${CGGL_LIBRARY}")
  164. endif()
  165. if(CGD3D9_LIBRARY)
  166. list(APPEND CG_LIBRARIES "${CGD3D9_LIBRARY}")
  167. endif()
  168. endif()