1- cmake_minimum_required (VERSION 3.0)
1+ cmake_minimum_required (VERSION 3.0...3.20 FATAL_ERROR )
22
3- project (GLFW VERSION 3.3.2 LANGUAGES C)
3+ project (GLFW VERSION 3.3.8 LANGUAGES C)
44
55set (CMAKE_LEGACY_CYGWIN_WIN32 OFF )
66
77if (POLICY CMP0054)
88 cmake_policy (SET CMP0054 NEW)
99endif ()
1010
11+ if (POLICY CMP0069)
12+ cmake_policy (SET CMP0069 NEW)
13+ endif ()
14+
1115if (POLICY CMP0077)
1216 cmake_policy (SET CMP0077 NEW)
1317endif ()
1418
1519set_property (GLOBAL PROPERTY USE_FOLDERS ON )
1620
17- set (BUILD_SHARED_LIBS OFF )
18- set (GLFW_INSTALL OFF )
19- set (GLFW_VULKAN_STATIC OFF )
21+ option (BUILD_SHARED_LIBS "Build shared libraries" OFF )
22+ option (GLFW_INSTALL "Generate installation target" OFF )
23+ option (GLFW_VULKAN_STATIC "Assume the Vulkan loader is linked with the application" OFF )
2024
2125include (GNUInstallDirs)
2226include (CMakeDependentOption)
@@ -60,7 +64,8 @@ if (GLFW_BUILD_DOCS)
6064endif ()
6165
6266#--------------------------------------------------------------------
63- # Set compiler specific flags
67+ # Apply Microsoft C runtime library option
68+ # This is here because it also applies to tests and examples
6469#--------------------------------------------------------------------
6570if (MSVC )
6671 if (MSVC90 )
@@ -73,22 +78,26 @@ if (MSVC)
7378 # Workaround for VS 2008 not shipping with stdint.h
7479 list (APPEND glfw_INCLUDE_DIRS "${GLFW_SOURCE_DIR} /deps/vs2008" )
7580 endif ()
81+ endif ()
7682
77- if (NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
83+ if (MSVC AND NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
84+ if (CMAKE_VERSION VERSION_LESS 3.15)
7885 foreach (flag CMAKE_C_FLAGS
7986 CMAKE_C_FLAGS_DEBUG
8087 CMAKE_C_FLAGS_RELEASE
8188 CMAKE_C_FLAGS_MINSIZEREL
8289 CMAKE_C_FLAGS_RELWITHDEBINFO)
8390
84- if (${ flag} MATCHES "/MD" )
91+ if (flag MATCHES "/MD" )
8592 string (REGEX REPLACE "/MD" "/MT" ${flag} "${${flag} }" )
8693 endif ()
87- if (${ flag} MATCHES "/MDd" )
94+ if (flag MATCHES "/MDd" )
8895 string (REGEX REPLACE "/MDd" "/MTd" ${flag} "${${flag} }" )
8996 endif ()
9097
9198 endforeach ()
99+ else ()
100+ set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
92101 endif ()
93102endif ()
94103
@@ -125,6 +134,9 @@ if (MINGW)
125134 if (_GLFW_HAS_64ASLR)
126135 set (CMAKE_SHARED_LINKER_FLAGS "-Wl,--high-entropy-va ${CMAKE_SHARED_LINKER_FLAGS} " )
127136 endif ()
137+
138+ # Clear flags again to avoid breaking later tests
139+ set (CMAKE_REQUIRED_FLAGS)
128140endif ()
129141
130142#--------------------------------------------------------------------
@@ -241,7 +253,7 @@ if (_GLFW_WAYLAND)
241253 find_package (WaylandScanner REQUIRED)
242254 find_package (WaylandProtocols 1.15 REQUIRED)
243255
244- list (APPEND glfw_PKG_DEPS "wayland-egl " )
256+ list (APPEND glfw_PKG_DEPS "wayland-client " )
245257
246258 list (APPEND glfw_INCLUDE_DIRS "${Wayland_INCLUDE_DIRS} " )
247259 list (APPEND glfw_LIBRARIES "${Wayland_LIBRARIES} " "${CMAKE_THREAD_LIBS_INIT} " )
@@ -251,10 +263,9 @@ if (_GLFW_WAYLAND)
251263
252264 include (CheckIncludeFiles)
253265 include (CheckFunctionExists)
254- check_include_files(xkbcommon/xkbcommon-compose.h HAVE_XKBCOMMON_COMPOSE_H)
255266 check_function_exists(memfd_create HAVE_MEMFD_CREATE)
256267
257- if (NOT ( " ${ CMAKE_SYSTEM_NAME} " STREQUAL "Linux" ) )
268+ if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux" )
258269 find_package (EpollShim)
259270 if (EPOLLSHIM_FOUND)
260271 list (APPEND glfw_INCLUDE_DIRS "${EPOLLSHIM_INCLUDE_DIRS} " )
0 commit comments