From da1a3ccc4d77b25ea837731e383ad243d7fe4298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 23 Jun 2018 21:53:12 +0200 Subject: [PATCH 1/2] Don't require OpenGL when building without GL --- CMakeLists.txt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b017dbf37..1d23a319d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,13 +213,15 @@ if(BUILD_STATIC) endif() # Check dependencies -if(NOT TARGET_GLES OR TARGET_DESKTOP_GLES) - set(OpenGL_GL_PREFERENCE GLVND) # since CMake 3.11 - find_package(OpenGL REQUIRED) -elseif(TARGET_GLES2) - find_package(OpenGLES2 REQUIRED) -else() - find_package(OpenGLES3 REQUIRED) +if(WITH_GL OR TARGET_GL) + if(NOT TARGET_GLES OR TARGET_DESKTOP_GLES) + set(OpenGL_GL_PREFERENCE GLVND) # since CMake 3.11 + find_package(OpenGL REQUIRED) + elseif(TARGET_GLES2) + find_package(OpenGLES2 REQUIRED) + else() + find_package(OpenGLES3 REQUIRED) + endif() endif() # Configuration variables (saved later to configure.h) From 9ff298b84f93b0a9629b262b72a7ed4daa8dd4f1 Mon Sep 17 00:00:00 2001 From: Squareys Date: Sat, 23 Jun 2018 22:05:31 +0200 Subject: [PATCH 2/2] Install External/OpenGL when building deprecated even without GL Some deprecated APIs use headers (but not externally defined symbols) from the GL library, link those includes as well Signed-off-by: Squareys --- src/Magnum/CMakeLists.txt | 6 ++++-- src/MagnumExternal/CMakeLists.txt | 5 ++++- src/MagnumExternal/OpenGL/GL/CMakeLists.txt | 23 +++++++++++++-------- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/Magnum/CMakeLists.txt b/src/Magnum/CMakeLists.txt index dfa75b48c..6ca63f840 100644 --- a/src/Magnum/CMakeLists.txt +++ b/src/Magnum/CMakeLists.txt @@ -185,7 +185,9 @@ endif() target_include_directories(Magnum PUBLIC ${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src) -if(BUILD_DEPRECATED AND TARGET_GL) # TODO: remove once compat gets dropped +if(BUILD_DEPRECATED) # TODO: remove once compat gets dropped + # Some deprecated APIs use headers (but not externally defined symbols) + # from the GL library, link those includes as well target_include_directories(Magnum PUBLIC ${PROJECT_SOURCE_DIR}/src/MagnumExternal/OpenGL) endif() @@ -272,7 +274,7 @@ if(BUILD_TESTS) target_include_directories(MagnumTestLib PUBLIC ${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src) - if(BUILD_DEPRECATED AND TARGET_GL) # TODO: remove once compat gets dropped + if(BUILD_DEPRECATED) # TODO: remove once compat gets dropped target_include_directories(MagnumTestLib PUBLIC ${PROJECT_SOURCE_DIR}/src/MagnumExternal/OpenGL) endif() diff --git a/src/MagnumExternal/CMakeLists.txt b/src/MagnumExternal/CMakeLists.txt index 211f3ad63..648f729e5 100644 --- a/src/MagnumExternal/CMakeLists.txt +++ b/src/MagnumExternal/CMakeLists.txt @@ -26,7 +26,10 @@ if(WITH_AUDIO) add_subdirectory(OpenAL) endif() -if(WITH_GL) +# Some deprecated APIs use headers (but not externally defined symbols) +# from the GL library, link those includes as well +# TODO: remove once compat gets dropped +if(WITH_GL OR MAGNUM_BUILD_DEPRECATED) add_subdirectory(OpenGL) endif() if(WITH_VK) diff --git a/src/MagnumExternal/OpenGL/GL/CMakeLists.txt b/src/MagnumExternal/OpenGL/GL/CMakeLists.txt index 6bc5c6edc..e58bb2e72 100644 --- a/src/MagnumExternal/OpenGL/GL/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GL/CMakeLists.txt @@ -23,15 +23,20 @@ # DEALINGS IN THE SOFTWARE. # -# flextGLPlatform.cpp is compiled as part of Magnum*Context libraries in Platform -add_library(MagnumFlextGLObjects OBJECT flextGL.cpp) -target_include_directories(MagnumFlextGLObjects PUBLIC $) -if(NOT BUILD_STATIC) - target_compile_definitions(MagnumFlextGLObjects PRIVATE "FlextGL_EXPORTS") +# Some deprecated APIs use headers (but not externally defined symbols) +# from the GL library, link those includes as well +# TODO: remove once compat gets dropped (condition only) +if(WITH_GL) + # flextGLPlatform.cpp is compiled as part of Magnum*Context libraries in Platform + add_library(MagnumFlextGLObjects OBJECT flextGL.cpp) + target_include_directories(MagnumFlextGLObjects PUBLIC $) + if(NOT BUILD_STATIC) + target_compile_definitions(MagnumFlextGLObjects PRIVATE "FlextGL_EXPORTS") + endif() + if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(MagnumFlextGLObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) + endif() + set_target_properties(MagnumFlextGLObjects PROPERTIES FOLDER "MagnumExternal/OpenGL") endif() -if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) - set_target_properties(MagnumFlextGLObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) -endif() -set_target_properties(MagnumFlextGLObjects PROPERTIES FOLDER "MagnumExternal/OpenGL") install(FILES flextGL.h DESTINATION ${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}/OpenGL/GL)