123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- # file Copyright.txt or https://cmake.org/licensing for details.
- #[=======================================================================[.rst:
- FindGLEW
- --------
- Find the OpenGL Extension Wrangler Library (GLEW)
- Input Variables
- ^^^^^^^^^^^^^^^
- The following variables may be set to influence this module’s behavior:
- ``GLEW_USE_STATIC_LIBS``
- to find and create :prop_tgt:`IMPORTED` target for static linkage.
- ``GLEW_VERBOSE``
- to output a detailed log of this module.
- Imported Targets
- ^^^^^^^^^^^^^^^^
- This module defines the following :ref:`Imported Targets <Imported Targets>`:
- ``GLEW::glew``
- The GLEW shared library.
- ``GLEW::glew_s``
- The GLEW static library, if ``GLEW_USE_STATIC_LIBS`` is set to ``TRUE``.
- ``GLEW::GLEW``
- Duplicates either ``GLEW::glew`` or ``GLEW::glew_s`` based on availability.
- Result Variables
- ^^^^^^^^^^^^^^^^
- This module defines the following variables:
- ``GLEW_INCLUDE_DIRS``
- include directories for GLEW
- ``GLEW_LIBRARIES``
- libraries to link against GLEW
- ``GLEW_SHARED_LIBRARIES``
- libraries to link against shared GLEW
- ``GLEW_STATIC_LIBRARIES``
- libraries to link against static GLEW
- ``GLEW_FOUND``
- true if GLEW has been found and can be used
- ``GLEW_VERSION``
- GLEW version
- ``GLEW_VERSION_MAJOR``
- GLEW major version
- ``GLEW_VERSION_MINOR``
- GLEW minor version
- ``GLEW_VERSION_MICRO``
- GLEW micro version
- #]=======================================================================]
- include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
- find_package(GLEW CONFIG QUIET)
- if(GLEW_FOUND)
- find_package_handle_standard_args(GLEW DEFAULT_MSG GLEW_CONFIG)
- return()
- endif()
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: did not find GLEW CMake config file. Searching for libraries.")
- endif()
- if(APPLE)
- find_package(OpenGL QUIET)
- if(OpenGL_FOUND)
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: Found OpenGL Framework.")
- message(STATUS "FindGLEW: OPENGL_LIBRARIES: ${OPENGL_LIBRARIES}")
- endif()
- else()
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: could not find GLEW library.")
- endif()
- return()
- endif()
- endif()
- function(__glew_set_find_library_suffix shared_or_static)
- if((UNIX AND NOT APPLE) AND "${shared_or_static}" MATCHES "SHARED")
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" PARENT_SCOPE)
- elseif((UNIX AND NOT APPLE) AND "${shared_or_static}" MATCHES "STATIC")
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE)
- elseif(APPLE AND "${shared_or_static}" MATCHES "SHARED")
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib;.so" PARENT_SCOPE)
- elseif(APPLE AND "${shared_or_static}" MATCHES "STATIC")
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE)
- elseif(WIN32 AND "${shared_or_static}" MATCHES "SHARED")
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" PARENT_SCOPE)
- elseif(WIN32 AND "${shared_or_static}" MATCHES "STATIC")
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib;.dll.a" PARENT_SCOPE)
- endif()
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: CMAKE_FIND_LIBRARY_SUFFIXES for ${shared_or_static}: ${CMAKE_FIND_LIBRARY_SUFFIXES}")
- endif()
- endfunction()
- if(GLEW_VERBOSE)
- if(DEFINED GLEW_USE_STATIC_LIBS)
- message(STATUS "FindGLEW: GLEW_USE_STATIC_LIBS: ${GLEW_USE_STATIC_LIBS}.")
- else()
- message(STATUS "FindGLEW: GLEW_USE_STATIC_LIBS is undefined. Treated as FALSE.")
- endif()
- endif()
- find_path(GLEW_INCLUDE_DIR GL/glew.h)
- mark_as_advanced(GLEW_INCLUDE_DIR)
- set(GLEW_INCLUDE_DIRS ${GLEW_INCLUDE_DIR})
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: GLEW_INCLUDE_DIR: ${GLEW_INCLUDE_DIR}")
- message(STATUS "FindGLEW: GLEW_INCLUDE_DIRS: ${GLEW_INCLUDE_DIRS}")
- endif()
- if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "x64" OR "${CMAKE_GENERATOR}" MATCHES "Win64")
- set(_arch "x64")
- else()
- set(_arch "Win32")
- endif()
- set(__GLEW_CURRENT_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
- __glew_set_find_library_suffix(SHARED)
- find_library(GLEW_SHARED_LIBRARY_RELEASE
- NAMES GLEW glew glew32
- PATH_SUFFIXES lib lib64 libx32 lib/Release/${_arch}
- PATHS ENV GLEW_ROOT)
- find_library(GLEW_SHARED_LIBRARY_DEBUG
- NAMES GLEWd glewd glew32d
- PATH_SUFFIXES lib lib64
- PATHS ENV GLEW_ROOT)
- __glew_set_find_library_suffix(STATIC)
- find_library(GLEW_STATIC_LIBRARY_RELEASE
- NAMES GLEW glew glew32s
- PATH_SUFFIXES lib lib64 libx32 lib/Release/${_arch}
- PATHS ENV GLEW_ROOT)
- find_library(GLEW_STATIC_LIBRARY_DEBUG
- NAMES GLEWds glewds glew32ds
- PATH_SUFFIXES lib lib64
- PATHS ENV GLEW_ROOT)
- set(CMAKE_FIND_LIBRARY_SUFFIXES ${__GLEW_CURRENT_FIND_LIBRARY_SUFFIXES})
- unset(__GLEW_CURRENT_FIND_LIBRARY_SUFFIXES)
- include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
- select_library_configurations(GLEW_SHARED)
- select_library_configurations(GLEW_STATIC)
- if(NOT GLEW_USE_STATIC_LIBS)
- set(GLEW_LIBRARIES ${GLEW_SHARED_LIBRARY})
- else()
- set(GLEW_LIBRARIES ${GLEW_STATIC_LIBRARY})
- endif()
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: GLEW_SHARED_LIBRARY_RELEASE: ${GLEW_SHARED_LIBRARY_RELEASE}")
- message(STATUS "FindGLEW: GLEW_STATIC_LIBRARY_RELEASE: ${GLEW_STATIC_LIBRARY_RELEASE}")
- message(STATUS "FindGLEW: GLEW_SHARED_LIBRARY_DEBUG: ${GLEW_SHARED_LIBRARY_DEBUG}")
- message(STATUS "FindGLEW: GLEW_STATIC_LIBRARY_DEBUG: ${GLEW_STATIC_LIBRARY_DEBUG}")
- message(STATUS "FindGLEW: GLEW_SHARED_LIBRARY: ${GLEW_SHARED_LIBRARY}")
- message(STATUS "FindGLEW: GLEW_STATIC_LIBRARY: ${GLEW_STATIC_LIBRARY}")
- message(STATUS "FindGLEW: GLEW_LIBRARIES: ${GLEW_LIBRARIES}")
- endif()
- # Read version from GL/glew.h file
- if(EXISTS "${GLEW_INCLUDE_DIR}/GL/glew.h")
- file(STRINGS "${GLEW_INCLUDE_DIR}/GL/glew.h" _contents REGEX "^VERSION_.+ [0-9]+")
- if(_contents)
- string(REGEX REPLACE ".*VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" GLEW_VERSION_MAJOR "${_contents}")
- string(REGEX REPLACE ".*VERSION_MINOR[ \t]+([0-9]+).*" "\\1" GLEW_VERSION_MINOR "${_contents}")
- string(REGEX REPLACE ".*VERSION_MICRO[ \t]+([0-9]+).*" "\\1" GLEW_VERSION_MICRO "${_contents}")
- set(GLEW_VERSION "${GLEW_VERSION_MAJOR}.${GLEW_VERSION_MINOR}.${GLEW_VERSION_MICRO}")
- endif()
- endif()
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: GLEW_VERSION_MAJOR: ${GLEW_VERSION_MAJOR}")
- message(STATUS "FindGLEW: GLEW_VERSION_MINOR: ${GLEW_VERSION_MINOR}")
- message(STATUS "FindGLEW: GLEW_VERSION_MICRO: ${GLEW_VERSION_MICRO}")
- message(STATUS "FindGLEW: GLEW_VERSION: ${GLEW_VERSION}")
- endif()
- find_package_handle_standard_args(GLEW
- REQUIRED_VARS GLEW_INCLUDE_DIRS GLEW_LIBRARIES
- VERSION_VAR GLEW_VERSION)
- if(NOT GLEW_FOUND)
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: could not find GLEW library.")
- endif()
- return()
- endif()
- if(NOT TARGET GLEW::glew AND NOT GLEW_USE_STATIC_LIBS)
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: Creating GLEW::glew imported target.")
- endif()
- add_library(GLEW::glew UNKNOWN IMPORTED)
- set_target_properties(GLEW::glew
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
- if(APPLE)
- set_target_properties(GLEW::glew
- PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
- endif()
- if(GLEW_SHARED_LIBRARY_RELEASE)
- set_property(TARGET GLEW::glew
- APPEND
- PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
- set_target_properties(GLEW::glew
- PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_SHARED_LIBRARY_RELEASE}")
- endif()
- if(GLEW_SHARED_LIBRARY_DEBUG)
- set_property(TARGET GLEW::glew
- APPEND
- PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
- set_target_properties(GLEW::glew
- PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_SHARED_LIBRARY_DEBUG}")
- endif()
- elseif(NOT TARGET GLEW::glew_s AND GLEW_USE_STATIC_LIBS)
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: Creating GLEW::glew_s imported target.")
- endif()
- add_library(GLEW::glew_s UNKNOWN IMPORTED)
- set_target_properties(GLEW::glew_s
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
- if(APPLE)
- set_target_properties(GLEW::glew_s
- PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
- endif()
- if(GLEW_STATIC_LIBRARY_RELEASE)
- set_property(TARGET GLEW::glew_s
- APPEND
- PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
- set_target_properties(GLEW::glew_s
- PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_STATIC_LIBRARY_RELEASE}")
- endif()
- if(GLEW_STATIC_LIBRARY_DEBUG)
- set_property(TARGET GLEW::glew_s
- APPEND
- PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
- set_target_properties(GLEW::glew_s
- PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_STATIC_LIBRARY_DEBUG}")
- endif()
- endif()
- if(NOT TARGET GLEW::GLEW)
- if(GLEW_VERBOSE)
- message(STATUS "FindGLEW: Creating GLEW::GLEW imported target.")
- endif()
- add_library(GLEW::GLEW UNKNOWN IMPORTED)
- set_target_properties(GLEW::GLEW
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
- if(APPLE)
- set_target_properties(GLEW::GLEW
- PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
- endif()
- if(TARGET GLEW::glew)
- if(GLEW_SHARED_LIBRARY_RELEASE)
- set_property(TARGET GLEW::GLEW
- APPEND
- PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
- set_target_properties(GLEW::GLEW
- PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_SHARED_LIBRARY_RELEASE}")
- endif()
- if(GLEW_SHARED_LIBRARY_DEBUG)
- set_property(TARGET GLEW::GLEW
- APPEND
- PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
- set_target_properties(GLEW::GLEW
- PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_SHARED_LIBRARY_DEBUG}")
- endif()
- elseif(TARGET GLEW::glew_s)
- if(GLEW_STATIC_LIBRARY_RELEASE)
- set_property(TARGET GLEW::GLEW
- APPEND
- PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
- set_target_properties(GLEW::GLEW
- PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_STATIC_LIBRARY_RELEASE}")
- endif()
- if(GLEW_STATIC_LIBRARY_DEBUG AND GLEW_USE_STATIC_LIBS)
- set_property(TARGET GLEW::GLEW
- APPEND
- PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
- set_target_properties(GLEW::GLEW
- PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_STATIC_LIBRARY_DEBUG}")
- endif()
- elseif(GLEW_VERBOSE)
- message(WARNING "FindGLEW: no `GLEW::glew` or `GLEW::glew_s` target was created. Something went wrong in FindGLEW target creation.")
- endif()
- endif()
|