FindGLUT.cmake 5.8 KB

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