diff --git a/CMakeLists.txt b/CMakeLists.txt index 1cb28776a..5a1164db2 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) diff --git a/src/Magnum/CMakeLists.txt b/src/Magnum/CMakeLists.txt index 1b05ac225..e89298bb1 100644 --- a/src/Magnum/CMakeLists.txt +++ b/src/Magnum/CMakeLists.txt @@ -189,7 +189,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() @@ -277,7 +279,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)