80 lines
2.4 KiB
CMake
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()
|