FindGLUT.cmake 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. #.rst:
  4. # FindGLUT
  5. # --------
  6. #
  7. # try to find glut library and include files.
  8. #
  9. # IMPORTED Targets
  10. # ^^^^^^^^^^^^^^^^
  11. #
  12. # This module defines the :prop_tgt:`IMPORTED` targets:
  13. #
  14. # ``GLUT::GLUT``
  15. # Defined if the system has GLUT.
  16. #
  17. # Result Variables
  18. # ^^^^^^^^^^^^^^^^
  19. #
  20. # This module sets the following variables:
  21. #
  22. # ::
  23. #
  24. # GLUT_INCLUDE_DIR, where to find GL/glut.h, etc.
  25. # GLUT_LIBRARIES, the libraries to link against
  26. # GLUT_FOUND, If false, do not try to use GLUT.
  27. #
  28. # Also defined, but not for general use are:
  29. #
  30. # ::
  31. #
  32. # GLUT_glut_LIBRARY = the full path to the glut library.
  33. # GLUT_Xmu_LIBRARY = the full path to the Xmu library.
  34. # GLUT_Xi_LIBRARY = the full path to the Xi Library.
  35. include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
  36. if (WIN32)
  37. find_path( GLUT_INCLUDE_DIR NAMES GL/glut.h
  38. PATHS ${GLUT_ROOT_PATH}/include )
  39. find_library( GLUT_glut_LIBRARY_RELEASE NAMES glut glut32 freeglut
  40. PATHS
  41. ${OPENGL_LIBRARY_DIR}
  42. ${GLUT_ROOT_PATH}/Release
  43. )
  44. find_library( GLUT_glut_LIBRARY_DEBUG NAMES freeglutd
  45. PATHS
  46. ${OPENGL_LIBRARY_DIR}
  47. ${GLUT_ROOT_PATH}/Debug
  48. )
  49. mark_as_advanced(GLUT_glut_LIBRARY_RELEASE GLUT_glut_LIBRARY_DEBUG)
  50. select_library_configurations(GLUT_glut)
  51. else ()
  52. if (APPLE)
  53. find_path(GLUT_INCLUDE_DIR glut.h ${OPENGL_LIBRARY_DIR})
  54. find_library(GLUT_glut_LIBRARY GLUT DOC "GLUT library for OSX")
  55. find_library(GLUT_cocoa_LIBRARY Cocoa DOC "Cocoa framework for OSX")
  56. mark_as_advanced(GLUT_glut_LIBRARY GLUT_cocoa_LIBRARY)
  57. if(GLUT_cocoa_LIBRARY AND NOT TARGET GLUT::Cocoa)
  58. add_library(GLUT::Cocoa UNKNOWN IMPORTED)
  59. # Cocoa should always be a Framework, but we check to make sure.
  60. if(GLUT_cocoa_LIBRARY MATCHES "/([^/]+)\\.framework$")
  61. set_target_properties(GLUT::Cocoa PROPERTIES
  62. IMPORTED_LOCATION "${GLUT_cocoa_LIBRARY}/${CMAKE_MATCH_1}")
  63. else()
  64. set_target_properties(GLUT::Cocoa PROPERTIES
  65. IMPORTED_LOCATION "${GLUT_cocoa_LIBRARY}")
  66. endif()
  67. endif()
  68. else ()
  69. if (BEOS)
  70. set(_GLUT_INC_DIR /boot/develop/headers/os/opengl)
  71. set(_GLUT_glut_LIB_DIR /boot/develop/lib/x86)
  72. else()
  73. find_library( GLUT_Xi_LIBRARY Xi
  74. /usr/openwin/lib
  75. )
  76. mark_as_advanced(GLUT_Xi_LIBRARY)
  77. find_library( GLUT_Xmu_LIBRARY Xmu
  78. /usr/openwin/lib
  79. )
  80. mark_as_advanced(GLUT_Xmu_LIBRARY)
  81. if(GLUT_Xi_LIBRARY AND NOT TARGET GLUT::Xi)
  82. add_library(GLUT::Xi UNKNOWN IMPORTED)
  83. set_target_properties(GLUT::Xi PROPERTIES
  84. IMPORTED_LOCATION "${GLUT_Xi_LIBRARY}")
  85. endif()
  86. if(GLUT_Xmu_LIBRARY AND NOT TARGET GLUT::Xmu)
  87. add_library(GLUT::Xmu UNKNOWN IMPORTED)
  88. set_target_properties(GLUT::Xmu PROPERTIES
  89. IMPORTED_LOCATION "${GLUT_Xmu_LIBRARY}")
  90. endif()
  91. endif ()
  92. find_path( GLUT_INCLUDE_DIR GL/glut.h
  93. /usr/include/GL
  94. /usr/openwin/share/include
  95. /usr/openwin/include
  96. /opt/graphics/OpenGL/include
  97. /opt/graphics/OpenGL/contrib/libglut
  98. ${_GLUT_INC_DIR}
  99. )
  100. find_library( GLUT_glut_LIBRARY glut
  101. /usr/openwin/lib
  102. ${_GLUT_glut_LIB_DIR}
  103. )
  104. mark_as_advanced(GLUT_glut_LIBRARY)
  105. unset(_GLUT_INC_DIR)
  106. unset(_GLUT_glut_LIB_DIR)
  107. endif ()
  108. endif ()
  109. include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
  110. FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLUT REQUIRED_VARS GLUT_glut_LIBRARY GLUT_INCLUDE_DIR)
  111. if (GLUT_FOUND)
  112. # Is -lXi and -lXmu required on all platforms that have it?
  113. # If not, we need some way to figure out what platform we are on.
  114. set( GLUT_LIBRARIES
  115. ${GLUT_glut_LIBRARY}
  116. )
  117. foreach(v GLUT_Xmu_LIBRARY GLUT_Xi_LIBRARY GLUT_cocoa_LIBRARY)
  118. if(${v})
  119. list(APPEND GLUT_LIBRARIES ${${v}})
  120. endif()
  121. endforeach()
  122. if(NOT TARGET GLUT::GLUT)
  123. add_library(GLUT::GLUT UNKNOWN IMPORTED)
  124. set_target_properties(GLUT::GLUT PROPERTIES
  125. INTERFACE_INCLUDE_DIRECTORIES "${GLUT_INCLUDE_DIR}")
  126. if(GLUT_glut_LIBRARY MATCHES "/([^/]+)\\.framework$")
  127. set_target_properties(GLUT::GLUT PROPERTIES
  128. IMPORTED_LOCATION "${GLUT_glut_LIBRARY}/${CMAKE_MATCH_1}")
  129. else()
  130. if(GLUT_glut_LIBRARY_RELEASE)
  131. set_property(TARGET GLUT::GLUT APPEND PROPERTY
  132. IMPORTED_CONFIGURATIONS RELEASE)
  133. set_target_properties(GLUT::GLUT PROPERTIES
  134. IMPORTED_LOCATION_RELEASE "${GLUT_glut_LIBRARY_RELEASE}")
  135. endif()
  136. if(GLUT_glut_LIBRARY_DEBUG)
  137. set_property(TARGET GLUT::GLUT APPEND PROPERTY
  138. IMPORTED_CONFIGURATIONS DEBUG)
  139. set_target_properties(GLUT::GLUT PROPERTIES
  140. IMPORTED_LOCATION_DEBUG "${GLUT_glut_LIBRARY_DEBUG}")
  141. endif()
  142. if(NOT GLUT_glut_LIBRARY_RELEASE AND NOT GLUT_glut_LIBRARY_DEBUG)
  143. set_property(TARGET GLUT::GLUT APPEND PROPERTY
  144. IMPORTED_LOCATION "${GLUT_glut_LIBRARY}")
  145. endif()
  146. endif()
  147. if(TARGET GLUT::Xmu)
  148. set_property(TARGET GLUT::GLUT APPEND
  149. PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xmu)
  150. endif()
  151. if(TARGET GLUT::Xi)
  152. set_property(TARGET GLUT::GLUT APPEND
  153. PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xi)
  154. endif()
  155. if(TARGET GLUT::Cocoa)
  156. set_property(TARGET GLUT::GLUT APPEND
  157. PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Cocoa)
  158. endif()
  159. endif()
  160. #The following deprecated settings are for backwards compatibility with CMake1.4
  161. set (GLUT_LIBRARY ${GLUT_LIBRARIES})
  162. set (GLUT_INCLUDE_PATH ${GLUT_INCLUDE_DIR})
  163. endif()
  164. mark_as_advanced(GLUT_INCLUDE_DIR)