From 98fe431175a9709e1f845e2eaf2f4828bb77ffa3 Mon Sep 17 00:00:00 2001 From: "Bradley.Phillips" Date: Wed, 12 Jun 2019 12:56:08 +0800 Subject: [PATCH] feat: exports the glfw objects i need this so i can use the nanogui library this work is a copy of wjakob (thanks!) https://github.com/wjakob/glfw/tree/6a0dde2a65448bb54dee7a45979f3ebe72253a19 i need a later version of glfw because i need transparency --- CMakeLists.txt | 4 ++++ src/CMakeLists.txt | 50 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c0f62503..fba5f7d4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,10 @@ if (POLICY CMP0054) cmake_policy(SET CMP0054 NEW) endif() +if(POLICY CMP0022) + cmake_policy(SET CMP0022 NEW) +endif() + set(GLFW_VERSION_MAJOR "3") set(GLFW_VERSION_MINOR "3") set(GLFW_VERSION_PATCH "0") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0913579b6..f9e285881 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -92,19 +92,34 @@ if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR COMPILE_FLAGS -Wdeclaration-after-statement) endif() -add_library(glfw ${glfw_SOURCES} ${glfw_HEADERS}) +# wenzel: changes begin +add_library(glfw_objects OBJECT ${glfw_SOURCES} ${glfw_HEADERS}) +add_library(glfw $) +if (BUILD_SHARED_LIBS) + set_target_properties(glfw_objects PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() + set_target_properties(glfw PROPERTIES OUTPUT_NAME ${GLFW_LIB_NAME} - VERSION ${GLFW_VERSION} - SOVERSION ${GLFW_VERSION_MAJOR} - POSITION_INDEPENDENT_CODE ON - FOLDER "GLFW3") + # VERSION ${GLFW_VERSION} + # SOVERSION ${GLFW_VERSION_MAJOR} +) +# wenzel : changes end -target_compile_definitions(glfw PRIVATE _GLFW_USE_CONFIG_H) +if (BUILD_SHARED_LIBS) + set_target_properties(glfw PROPERTIES POSITION_INDEPENDENT_CODE ON + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +endif() + +# wenzel: changes begin target_include_directories(glfw PUBLIC "$" "$") -target_include_directories(glfw PRIVATE +target_include_directories(glfw_objects PUBLIC + "$" + "$") +target_compile_definitions(glfw_objects PRIVATE _GLFW_USE_CONFIG_H) +target_include_directories(glfw_objects PRIVATE "${GLFW_SOURCE_DIR}/src" "${GLFW_BINARY_DIR}/src" ${glfw_INCLUDE_DIRS}) @@ -113,14 +128,15 @@ 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_objects PRIVATE "$<$:UNICODE;WINVER=0x0501>") # Enable a reasonable set of warnings (no, -Wextra is not reasonable) -target_compile_options(glfw PRIVATE - "$<$:-Wall>" +target_compile_options(glfw_objects PRIVATE "$<$:-Wall>" + "$<$:-Wno-deprecated-declarations>" "$<$:-Wall>") +# wenzel: changes end if (BUILD_SHARED_LIBS) if (WIN32) @@ -136,13 +152,16 @@ 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") - + # wenzel : changes begin + target_compile_options(glfw_objects PRIVATE "-fno-common") set_target_properties(glfw PROPERTIES INSTALL_NAME_DIR "${CMAKE_INSTALL_LIBDIR}") + # wenzel : changes end elseif (UNIX) # Hide symbols not explicitly tagged for export from the shared library - target_compile_options(glfw PRIVATE "-fvisibility=hidden") + # wenzel : changes begin + target_compile_options(glfw_objects PRIVATE "-fvisibility=hidden") + # wenzel: changes end endif() target_compile_definitions(glfw INTERFACE GLFW_DLL) @@ -152,7 +171,9 @@ else() endif() if (MSVC) - target_compile_definitions(glfw PRIVATE _CRT_SECURE_NO_WARNINGS) + # wenzel: changes begin + target_compile_definitions(glfw_objects PRIVATE _CRT_SECURE_NO_WARNINGS) + # wenzel: changes end endif() if (GLFW_INSTALL) @@ -162,4 +183,3 @@ if (GLFW_INSTALL) ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() -