librw/cmake/Findglfw3.cmake
2021-07-09 12:58:25 +02:00

80 lines
2.4 KiB
CMake

# This script supports shared and static libglfw3 simultaneously.
if(NOT DEFINED GLFW3_STATIC_INIT)
set(GLFW3_STATIC_INIT OFF)
endif()
option(GLFW3_STATIC "By default, use static glfw3." ${GLFW3_STATIC_INIT})
if(MSVC)
set(_lib_prefix )
set(_lib_static_suffix .lib)
set(_lib_shared_suffix .dll.lib)
else()
set(_lib_prefix lib)
if(WIN32)
set(_lib_static_suffix .a)
set(_lib_shared_suffix .dll.a)
else()
set(_lib_static_suffix .a)
if(APPLE)
set(_lib_shared_suffix .dylib)
else()
set(_lib_shared_suffix .so)
endif()
endif()
endif()
find_path(GLFW3_INCLUDE_DIR glfw3.h PATH_SUFFIXES GLFW)
find_library(GLFW3_STATIC_LIBRARY NAMES ${_lib_prefix}glfw3${_lib_static_suffix} ${_lib_prefix}glfw${_lib_static_suffix})
find_library(GLFW3_SHARED_LIBRARY NAMES ${_lib_prefix}glfw3${_lib_shared_suffix} ${_lib_prefix}glfw${_lib_shared_suffix})
set(_glfw3_required_variables )
if(GLFW3_STATIC)
list(APPEND _glfw3_required_variables GLFW3_STATIC_LIBRARY)
else()
list(APPEND _glfw3_required_variables GLFW3_SHARED_LIBRARY)
endif()
list(APPEND _glfw3_required_variables GLFW3_INCLUDE_DIR)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(glfw3
REQUIRED_VARS ${_glfw3_required_variables}
)
if(GLFW3_INCLUDE_DIR AND GLFW3_STATIC_LIBRARY AND NOT TARGET glfw_static)
add_library(glfw_static STATIC IMPORTED)
set_target_properties(glfw_static PROPERTIES
IMPORTED_LOCATION "${GLFW3_STATIC_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${GLFW3_INCLUDE_DIR}"
)
endif()
if(GLFW3_INCLUDE_DIR AND GLFW3_SHARED_LIBRARY AND NOT TARGET glfw_shared)
add_library(glfw_shared SHARED IMPORTED)
set_target_properties(glfw_shared PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${GLFW3_INCLUDE_DIR}"
)
if(WIN32)
set_target_properties(glfw_shared PROPERTIES
IMPORTED_IMPLIB "${GLFW3_SHARED_LIBRARY}"
)
else()
set_target_properties(glfw_shared PROPERTIES
IMPORTED_LOCATION "${GLFW3_SHARED_LIBRARY}"
)
endif()
endif()
if(glfw3_FOUND AND NOT TARGET glfw)
add_library(glfw INTERFACE IMPORTED)
if(GLFW3_STATIC)
set_target_properties(glfw PROPERTIES
INTERFACE_LINK_LIBRARIES "glfw_static"
)
else()
set_target_properties(glfw PROPERTIES
INTERFACE_LINK_LIBRARIES "glfw_shared"
)
endif()
endif()