From 0f1aaa474a0d81ccb8c7fd74d856cd42e48cb3b0 Mon Sep 17 00:00:00 2001 From: Ahmad Fatoum Date: Sat, 12 May 2018 15:39:13 +0200 Subject: CMake: (Properly) build glfw separately with CMake This reverts commit 2d6fb5c628068757387525e190c3afdbe33ae9c6, and adds a fix for Alien::raylib's test failures. The tests failed because the resulting static library didn't reexport GLFW symbols. As a fix, we now have GLFW create a CMake "object library" target that we can link with both the static and shared raylib. This is arguably ugly... Proper fix would probably be a GLFW upstream object library target. Closes #536. --- src/external/glfw/src/CMakeLists.txt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/external') diff --git a/src/external/glfw/src/CMakeLists.txt b/src/external/glfw/src/CMakeLists.txt index 22ce68f1..6d3e33a5 100644 --- a/src/external/glfw/src/CMakeLists.txt +++ b/src/external/glfw/src/CMakeLists.txt @@ -92,7 +92,9 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL GNU OR ${CMAKE_C_COMPILER_ID} STREQUAL Clang COMPILE_FLAGS -Wdeclaration-after-statement) endif() -add_library(glfw ${glfw_SOURCES} ${glfw_HEADERS}) +add_library(glfw_objlib OBJECT ${glfw_SOURCES} ${glfw_HEADERS}) +add_library(glfw $) + set_target_properties(glfw PROPERTIES OUTPUT_NAME ${GLFW_LIB_NAME} VERSION ${GLFW_VERSION} @@ -100,11 +102,11 @@ set_target_properties(glfw PROPERTIES POSITION_INDEPENDENT_CODE ON FOLDER "GLFW3") -target_compile_definitions(glfw PRIVATE _GLFW_USE_CONFIG_H) -target_include_directories(glfw PUBLIC +target_compile_definitions(glfw_objlib PRIVATE _GLFW_USE_CONFIG_H) +target_include_directories(glfw_objlib PUBLIC "$" "$/include>") -target_include_directories(glfw PRIVATE +target_include_directories(glfw_objlib PRIVATE "${GLFW_SOURCE_DIR}/src" "${GLFW_BINARY_DIR}/src" ${glfw_INCLUDE_DIRS}) @@ -113,11 +115,11 @@ target_include_directories(glfw PRIVATE # the inclusion of stddef.h (by glfw3.h), which is itself included before # win32_platform.h. We define them here until a saner solution can be found # NOTE: MinGW-w64 and Visual C++ do /not/ need this hack. -target_compile_definitions(glfw PRIVATE +target_compile_definitions(glfw_objlib PRIVATE "$<$:UNICODE;WINVER=0x0501>") # Enable a reasonable set of warnings (no, -Wextra is not reasonable) -target_compile_options(glfw PRIVATE +target_compile_options(glfw_objlib PRIVATE "$<$:-Wall>" "$<$:-Wall>") @@ -135,7 +137,7 @@ if (BUILD_SHARED_LIBS) endif() elseif (APPLE) # Add -fno-common to work around a bug in Apple's GCC - target_compile_options(glfw PRIVATE "-fno-common") + target_compile_options(glfw_objlib PRIVATE "-fno-common") set_target_properties(glfw PROPERTIES INSTALL_NAME_DIR "lib${LIB_SUFFIX}") -- cgit v1.2.3