|
|
|
@ -54,13 +54,6 @@ else() |
|
|
|
|
set(GLFW_BUILD_SHARED_LIBRARY ${BUILD_SHARED_LIBS}) |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
if (UNIX AND GLFW_BUILD_SHARED_LIBRARY) |
|
|
|
|
# On Unix-like systems, shared libraries can use the soname system. |
|
|
|
|
set(GLFW_LIB_NAME glfw) |
|
|
|
|
else() |
|
|
|
|
set(GLFW_LIB_NAME glfw3) |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${GLFW_SOURCE_DIR}/CMake/modules") |
|
|
|
|
|
|
|
|
|
find_package(Threads REQUIRED) |
|
|
|
@ -117,142 +110,6 @@ else() |
|
|
|
|
message(FATAL_ERROR "No supported platform was detected") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
# Find and add Unix math and time libraries |
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
if (UNIX AND NOT APPLE) |
|
|
|
|
find_library(RT_LIBRARY rt) |
|
|
|
|
mark_as_advanced(RT_LIBRARY) |
|
|
|
|
if (RT_LIBRARY) |
|
|
|
|
list(APPEND glfw_LIBRARIES "${RT_LIBRARY}") |
|
|
|
|
list(APPEND glfw_PKG_LIBS "-lrt") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
find_library(MATH_LIBRARY m) |
|
|
|
|
mark_as_advanced(MATH_LIBRARY) |
|
|
|
|
if (MATH_LIBRARY) |
|
|
|
|
list(APPEND glfw_LIBRARIES "${MATH_LIBRARY}") |
|
|
|
|
list(APPEND glfw_PKG_LIBS "-lm") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
if (CMAKE_DL_LIBS) |
|
|
|
|
list(APPEND glfw_LIBRARIES "${CMAKE_DL_LIBS}") |
|
|
|
|
list(APPEND glfw_PKG_LIBS "-l${CMAKE_DL_LIBS}") |
|
|
|
|
endif() |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
# Use Win32 for window creation |
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
if (_GLFW_WIN32) |
|
|
|
|
list(APPEND glfw_PKG_LIBS "-lgdi32") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
# Use X11 for window creation |
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
if (_GLFW_X11) |
|
|
|
|
|
|
|
|
|
find_package(X11 REQUIRED) |
|
|
|
|
|
|
|
|
|
# Set up library and include paths |
|
|
|
|
list(APPEND glfw_INCLUDE_DIRS "${X11_X11_INCLUDE_PATH}") |
|
|
|
|
|
|
|
|
|
# Check for XRandR (modern resolution switching and gamma control) |
|
|
|
|
if (NOT X11_Xrandr_INCLUDE_PATH) |
|
|
|
|
message(FATAL_ERROR "RandR headers not found; install libxrandr development package") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
# Check for Xinerama (legacy multi-monitor support) |
|
|
|
|
if (NOT X11_Xinerama_INCLUDE_PATH) |
|
|
|
|
message(FATAL_ERROR "Xinerama headers not found; install libxinerama development package") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
# Check for Xkb (X keyboard extension) |
|
|
|
|
if (NOT X11_Xkb_INCLUDE_PATH) |
|
|
|
|
message(FATAL_ERROR "XKB headers not found; install X11 development package") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
# Check for Xcursor (cursor creation from RGBA images) |
|
|
|
|
if (NOT X11_Xcursor_INCLUDE_PATH) |
|
|
|
|
message(FATAL_ERROR "Xcursor headers not found; install libxcursor development package") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
# Check for XInput (modern HID input) |
|
|
|
|
if (NOT X11_Xi_INCLUDE_PATH) |
|
|
|
|
message(FATAL_ERROR "XInput headers not found; install libxi development package") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
# Check for X Shape (custom window input shape) |
|
|
|
|
if (NOT X11_Xshape_INCLUDE_PATH) |
|
|
|
|
message(FATAL_ERROR "X Shape headers not found; install libxext development package") |
|
|
|
|
endif() |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
# Use Wayland for window creation |
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
if (_GLFW_WAYLAND) |
|
|
|
|
|
|
|
|
|
include(FindPkgConfig) |
|
|
|
|
pkg_check_modules(Wayland REQUIRED |
|
|
|
|
wayland-client>=0.2.7 |
|
|
|
|
wayland-cursor>=0.2.7 |
|
|
|
|
wayland-egl>=0.2.7 |
|
|
|
|
xkbcommon) |
|
|
|
|
|
|
|
|
|
list(APPEND glfw_INCLUDE_DIRS "${Wayland_INCLUDE_DIRS}") |
|
|
|
|
|
|
|
|
|
if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux") |
|
|
|
|
find_package(EpollShim) |
|
|
|
|
if (EPOLLSHIM_FOUND) |
|
|
|
|
list(APPEND glfw_INCLUDE_DIRS "${EPOLLSHIM_INCLUDE_DIRS}") |
|
|
|
|
list(APPEND glfw_LIBRARIES "${EPOLLSHIM_LIBRARIES}") |
|
|
|
|
endif() |
|
|
|
|
endif() |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
# Use Cocoa for window creation and NSOpenGL for context creation |
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
if (_GLFW_COCOA) |
|
|
|
|
|
|
|
|
|
list(APPEND glfw_LIBRARIES |
|
|
|
|
"-framework Cocoa" |
|
|
|
|
"-framework IOKit" |
|
|
|
|
"-framework CoreFoundation") |
|
|
|
|
|
|
|
|
|
set(glfw_PKG_DEPS "") |
|
|
|
|
set(glfw_PKG_LIBS "-framework Cocoa -framework IOKit -framework CoreFoundation") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
# Add the Vulkan loader as a dependency if necessary |
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
if (GLFW_VULKAN_STATIC) |
|
|
|
|
if (BUILD_SHARED_LIBS) |
|
|
|
|
# If you absolutely must do this, remove this line and add the Vulkan |
|
|
|
|
# loader static library via the CMAKE_SHARED_LINKER_FLAGS |
|
|
|
|
message(FATAL_ERROR "You are trying to link the Vulkan loader static library into the GLFW shared library") |
|
|
|
|
endif() |
|
|
|
|
list(APPEND glfw_PKG_DEPS "vulkan") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
# Export GLFW library dependencies |
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
foreach(arg ${glfw_PKG_DEPS}) |
|
|
|
|
string(APPEND deps " ${arg}") |
|
|
|
|
endforeach() |
|
|
|
|
foreach(arg ${glfw_PKG_LIBS}) |
|
|
|
|
string(APPEND libs " ${arg}") |
|
|
|
|
endforeach() |
|
|
|
|
|
|
|
|
|
set(GLFW_PKG_CONFIG_REQUIRES_PRIVATE "${deps}" CACHE INTERNAL |
|
|
|
|
"GLFW pkg-config Requires.private") |
|
|
|
|
set(GLFW_PKG_CONFIG_LIBS_PRIVATE "${libs}" CACHE INTERNAL |
|
|
|
|
"GLFW pkg-config Libs.private") |
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
# Create generated files |
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
@ -269,8 +126,6 @@ write_basic_package_version_file(src/glfw3ConfigVersion.cmake |
|
|
|
|
VERSION ${GLFW_VERSION} |
|
|
|
|
COMPATIBILITY SameMajorVersion) |
|
|
|
|
|
|
|
|
|
configure_file(CMake/glfw3.pc.in src/glfw3.pc @ONLY) |
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|
# Add subdirectories |
|
|
|
|
#-------------------------------------------------------------------- |
|
|
|
|