| # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying | 
 | # file Copyright.txt or https://cmake.org/licensing for details. | 
 |  | 
 | #[=======================================================================[.rst: | 
 | FindGLUT | 
 | -------- | 
 |  | 
 | Find OpenGL Utility Toolkit (GLUT) library and include files. | 
 |  | 
 | IMPORTED Targets | 
 | ^^^^^^^^^^^^^^^^ | 
 |  | 
 | .. versionadded:: 3.1 | 
 |  | 
 | This module defines the :prop_tgt:`IMPORTED` targets: | 
 |  | 
 | ``GLUT::GLUT`` | 
 |  Defined if the system has GLUT. | 
 |  | 
 | Result Variables | 
 | ^^^^^^^^^^^^^^^^ | 
 |  | 
 | This module sets the following variables: | 
 |  | 
 | :: | 
 |  | 
 |   GLUT_INCLUDE_DIR, where to find GL/glut.h, etc. | 
 |   GLUT_LIBRARIES, the libraries to link against | 
 |   GLUT_FOUND, If false, do not try to use GLUT. | 
 |  | 
 | Also defined, but not for general use are: | 
 |  | 
 | :: | 
 |  | 
 |   GLUT_glut_LIBRARY = the full path to the glut library. | 
 |   GLUT_Xmu_LIBRARY  = the full path to the Xmu library. | 
 |   GLUT_Xi_LIBRARY   = the full path to the Xi Library. | 
 |  | 
 | .. versionadded:: 3.13 | 
 |   Debug and Release variants are found separately. | 
 | #]=======================================================================] | 
 |  | 
 | include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) | 
 | include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) | 
 |  | 
 | function(_add_glut_target_simple) | 
 |   if(TARGET GLUT::GLUT) | 
 |     return() | 
 |   endif() | 
 |   add_library(GLUT::GLUT INTERFACE IMPORTED) | 
 |   if(GLUT_INCLUDE_DIRS) | 
 |     target_include_directories(GLUT::GLUT SYSTEM | 
 |       INTERFACE "${GLUT_INCLUDE_DIRS}") | 
 |   endif() | 
 |   if(GLUT_LIBRARIES) | 
 |     target_link_libraries(GLUT::GLUT INTERFACE ${GLUT_LIBRARIES}) | 
 |   endif() | 
 |   if(GLUT_LDFLAGS) | 
 |     target_link_options(GLUT::GLUT INTERFACE ${GLUT_LDFLAGS}) | 
 |   endif() | 
 |   if(GLUT_CFLAGS) | 
 |     separate_arguments(GLUT_CFLAGS_SPLIT UNIX_COMMAND "${GLUT_CFLAGS}") | 
 |     target_compile_options(GLUT::GLUT INTERFACE ${GLUT_CFLAGS_SPLIT}) | 
 |   endif() | 
 |  | 
 |   set_property(TARGET GLUT::GLUT APPEND PROPERTY | 
 |     IMPORTED_LOCATION "${GLUT_glut_LIBRARY}") | 
 | endfunction() | 
 |  | 
 | find_package(PkgConfig) | 
 | if(PKG_CONFIG_FOUND) | 
 |   pkg_check_modules(GLUT glut) | 
 |   if(GLUT_FOUND) | 
 |     _add_glut_target_simple() | 
 |     FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLUT REQUIRED_VARS GLUT_FOUND) | 
 |     return() | 
 |   endif() | 
 | endif() | 
 |  | 
 | if(WIN32) | 
 |   find_path( GLUT_INCLUDE_DIR NAMES GL/glut.h | 
 |     PATHS  ${GLUT_ROOT_PATH}/include ) | 
 |   find_library( GLUT_glut_LIBRARY_RELEASE NAMES glut glut32 freeglut | 
 |     PATHS | 
 |     ${OPENGL_LIBRARY_DIR} | 
 |     ${GLUT_ROOT_PATH}/Release | 
 |     ) | 
 |   find_library( GLUT_glut_LIBRARY_DEBUG NAMES freeglutd | 
 |     PATHS | 
 |     ${OPENGL_LIBRARY_DIR} | 
 |     ${GLUT_ROOT_PATH}/Debug | 
 |     ) | 
 |   mark_as_advanced(GLUT_glut_LIBRARY_RELEASE GLUT_glut_LIBRARY_DEBUG) | 
 |   select_library_configurations(GLUT_glut) | 
 | elseif(APPLE) | 
 |   find_path(GLUT_INCLUDE_DIR glut.h ${OPENGL_LIBRARY_DIR}) | 
 |   find_library(GLUT_glut_LIBRARY GLUT DOC "GLUT library for OSX") | 
 |   find_library(GLUT_cocoa_LIBRARY Cocoa DOC "Cocoa framework for OSX") | 
 |   mark_as_advanced(GLUT_glut_LIBRARY GLUT_cocoa_LIBRARY) | 
 |  | 
 |   if(GLUT_cocoa_LIBRARY AND NOT TARGET GLUT::Cocoa) | 
 |     add_library(GLUT::Cocoa UNKNOWN IMPORTED) | 
 |     # Cocoa should always be a Framework, but we check to make sure. | 
 |     if(GLUT_cocoa_LIBRARY MATCHES "/([^/]+)\\.framework$") | 
 |       set(_glut_cocoa "${GLUT_cocoa_LIBRARY}/${CMAKE_MATCH_1}") | 
 |       if(EXISTS "${_glut_cocoa}.tbd") | 
 |         string(APPEND _glut_cocoa ".tbd") | 
 |       endif() | 
 |       set_target_properties(GLUT::Cocoa PROPERTIES | 
 |         IMPORTED_LOCATION "${_glut_cocoa}") | 
 |     else() | 
 |       set_target_properties(GLUT::Cocoa PROPERTIES | 
 |         IMPORTED_LOCATION "${GLUT_cocoa_LIBRARY}") | 
 |     endif() | 
 |   endif() | 
 | else() | 
 |   if(BEOS) | 
 |     set(_GLUT_INC_DIR /boot/develop/headers/os/opengl) | 
 |     set(_GLUT_glut_LIB_DIR /boot/develop/lib/x86) | 
 |   else() | 
 |     find_library( GLUT_Xi_LIBRARY Xi | 
 |       /usr/openwin/lib | 
 |       ) | 
 |     mark_as_advanced(GLUT_Xi_LIBRARY) | 
 |  | 
 |     find_library( GLUT_Xmu_LIBRARY Xmu | 
 |       /usr/openwin/lib | 
 |       ) | 
 |     mark_as_advanced(GLUT_Xmu_LIBRARY) | 
 |  | 
 |     if(GLUT_Xi_LIBRARY AND NOT TARGET GLUT::Xi) | 
 |       add_library(GLUT::Xi UNKNOWN IMPORTED) | 
 |       set_target_properties(GLUT::Xi PROPERTIES | 
 |         IMPORTED_LOCATION "${GLUT_Xi_LIBRARY}") | 
 |     endif() | 
 |  | 
 |     if(GLUT_Xmu_LIBRARY AND NOT TARGET GLUT::Xmu) | 
 |       add_library(GLUT::Xmu UNKNOWN IMPORTED) | 
 |       set_target_properties(GLUT::Xmu PROPERTIES | 
 |         IMPORTED_LOCATION "${GLUT_Xmu_LIBRARY}") | 
 |     endif() | 
 |  | 
 |   endif () | 
 |  | 
 |   find_path( GLUT_INCLUDE_DIR GL/glut.h | 
 |     /usr/include/GL | 
 |     /usr/openwin/share/include | 
 |     /usr/openwin/include | 
 |     /opt/graphics/OpenGL/include | 
 |     /opt/graphics/OpenGL/contrib/libglut | 
 |     ${_GLUT_INC_DIR} | 
 |     ) | 
 |  | 
 |   find_library( GLUT_glut_LIBRARY glut | 
 |     /usr/openwin/lib | 
 |     ${_GLUT_glut_LIB_DIR} | 
 |     ) | 
 |  | 
 |   unset(_GLUT_INC_DIR) | 
 |   unset(_GLUT_glut_LIB_DIR) | 
 | endif() | 
 | mark_as_advanced(GLUT_glut_LIBRARY) | 
 |  | 
 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLUT REQUIRED_VARS GLUT_glut_LIBRARY GLUT_INCLUDE_DIR) | 
 |  | 
 | if (GLUT_FOUND) | 
 |   # Is -lXi and -lXmu required on all platforms that have it? | 
 |   # If not, we need some way to figure out what platform we are on. | 
 |   set( GLUT_LIBRARIES | 
 |     ${GLUT_glut_LIBRARY} | 
 |     ) | 
 |   foreach(v GLUT_Xmu_LIBRARY GLUT_Xi_LIBRARY GLUT_cocoa_LIBRARY) | 
 |     if(${v}) | 
 |       list(APPEND GLUT_LIBRARIES ${${v}}) | 
 |     endif() | 
 |   endforeach() | 
 |  | 
 |   if(NOT TARGET GLUT::GLUT) | 
 |     add_library(GLUT::GLUT UNKNOWN IMPORTED) | 
 |     set_target_properties(GLUT::GLUT PROPERTIES | 
 |       INTERFACE_INCLUDE_DIRECTORIES "${GLUT_INCLUDE_DIR}") | 
 |     if(GLUT_glut_LIBRARY MATCHES "/([^/]+)\\.framework$") | 
 |       set(_glut_glut "${GLUT_glut_LIBRARY}/${CMAKE_MATCH_1}") | 
 |       if(EXISTS "${_glut_glut}.tbd") | 
 |         string(APPEND _glut_glut ".tbd") | 
 |       endif() | 
 |       set_target_properties(GLUT::GLUT PROPERTIES | 
 |         IMPORTED_LOCATION "${_glut_glut}") | 
 |     else() | 
 |       if(GLUT_glut_LIBRARY_RELEASE) | 
 |         set_property(TARGET GLUT::GLUT APPEND PROPERTY | 
 |           IMPORTED_CONFIGURATIONS RELEASE) | 
 |         set_target_properties(GLUT::GLUT PROPERTIES | 
 |           IMPORTED_LOCATION_RELEASE "${GLUT_glut_LIBRARY_RELEASE}") | 
 |       endif() | 
 |  | 
 |       if(GLUT_glut_LIBRARY_DEBUG) | 
 |         set_property(TARGET GLUT::GLUT APPEND PROPERTY | 
 |           IMPORTED_CONFIGURATIONS DEBUG) | 
 |         set_target_properties(GLUT::GLUT PROPERTIES | 
 |           IMPORTED_LOCATION_DEBUG "${GLUT_glut_LIBRARY_DEBUG}") | 
 |       endif() | 
 |  | 
 |       if(NOT GLUT_glut_LIBRARY_RELEASE AND NOT GLUT_glut_LIBRARY_DEBUG) | 
 |         set_property(TARGET GLUT::GLUT APPEND PROPERTY | 
 |           IMPORTED_LOCATION "${GLUT_glut_LIBRARY}") | 
 |       endif() | 
 |     endif() | 
 |  | 
 |     if(TARGET GLUT::Xmu) | 
 |       set_property(TARGET GLUT::GLUT APPEND | 
 |         PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xmu) | 
 |     endif() | 
 |  | 
 |     if(TARGET GLUT::Xi) | 
 |       set_property(TARGET GLUT::GLUT APPEND | 
 |         PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xi) | 
 |     endif() | 
 |  | 
 |     if(TARGET GLUT::Cocoa) | 
 |       set_property(TARGET GLUT::GLUT APPEND | 
 |         PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Cocoa) | 
 |     endif() | 
 |   endif() | 
 |  | 
 |   #The following deprecated settings are for backwards compatibility with CMake1.4 | 
 |   set (GLUT_LIBRARY ${GLUT_LIBRARIES}) | 
 |   set (GLUT_INCLUDE_PATH ${GLUT_INCLUDE_DIR}) | 
 | endif() | 
 |  | 
 | mark_as_advanced(GLUT_INCLUDE_DIR) |