From 43d7e10f2da2ff656ab1355ed68638e4e167df42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 12 Feb 2022 20:22:03 +0100 Subject: [PATCH] modules: updated Find modules from the Magnum repository. --- modules/FindCorrade.cmake | 20 ++++----- modules/FindGLFW.cmake | 2 + modules/FindMagnum.cmake | 40 ++++++++++------- modules/FindOpenGLES3.cmake | 1 + modules/FindSDL2.cmake | 86 +++++++++++++++++++++++++++++++------ 5 files changed, 108 insertions(+), 41 deletions(-) diff --git a/modules/FindCorrade.cmake b/modules/FindCorrade.cmake index 1747711..40b89b4 100644 --- a/modules/FindCorrade.cmake +++ b/modules/FindCorrade.cmake @@ -11,9 +11,6 @@ # # Corrade_FOUND - Whether the base library was found # CORRADE_LIB_SUFFIX_MODULE - Path to CorradeLibSuffix.cmake module -# CORRADE_INCLUDE_INSTALL_PREFIX - Prefix where to put platform-independent -# include and other files, defaults to ``.``. If a relative path is used, -# it's relative to :variable:`CMAKE_INSTALL_PREFIX`. # # This command will try to find only the base library, not the optional # components, which are: @@ -65,8 +62,8 @@ # # Features of found Corrade library are exposed in these variables: # -# CORRADE_MSVC2019_COMPATIBILITY - Defined if compiled with compatibility -# mode for MSVC 2019 +# CORRADE_MSVC_COMPATIBILITY - Defined if compiled with compatibility +# mode for MSVC 2019+ without the /permissive- flag set # CORRADE_MSVC2017_COMPATIBILITY - Defined if compiled with compatibility # mode for MSVC 2017 # CORRADE_MSVC2015_COMPATIBILITY - Defined if compiled with compatibility @@ -103,7 +100,7 @@ # CORRADE_TARGET_MINGW - Defined if compiling under MinGW # CORRADE_PLUGINMANAGER_NO_DYNAMIC_PLUGIN_SUPPORT - Defined if PluginManager # doesn't support dynamic plugin loading due to platform limitations -# CORRADE_TESTSUITE_TARGET_XCTEST - Defined if TestSuite is targetting Xcode +# CORRADE_TESTSUITE_TARGET_XCTEST - Defined if TestSuite is targeting Xcode # XCTest # CORRADE_UTILITY_USE_ANSI_COLORS - Defined if ANSI escape sequences are used # for colored output with Utility::Debug on Windows @@ -315,7 +312,7 @@ string(REGEX REPLACE "\n" ";" _corradeConfigure "${_corradeConfigure}") set(_corradeFlags MSVC2015_COMPATIBILITY MSVC2017_COMPATIBILITY - MSVC2019_COMPATIBILITY + MSVC_COMPATIBILITY BUILD_DEPRECATED BUILD_STATIC BUILD_STATIC_UNIQUE_GLOBALS @@ -618,8 +615,9 @@ find_package_handle_standard_args(Corrade REQUIRED_VARS # Finalize the finding process include(${CORRADE_USE_MODULE}) -# Installation dirs -set(CORRADE_INCLUDE_INSTALL_PREFIX "." - CACHE STRING "Prefix where to put platform-independent include and other files") +set(CORRADE_INCLUDE_INSTALL_DIR include/Corrade) -set(CORRADE_INCLUDE_INSTALL_DIR ${CORRADE_INCLUDE_INSTALL_PREFIX}/include/Corrade) +if(CORRADE_BUILD_DEPRECATED AND CORRADE_INCLUDE_INSTALL_PREFIX AND NOT CORRADE_INCLUDE_INSTALL_PREFIX STREQUAL ".") + message(DEPRECATION "CORRADE_INCLUDE_INSTALL_PREFIX is obsolete as its primary use was for old Android NDK versions. Please switch to the NDK r19+ layout instead of using this variable and recreate your build directory to get rid of this warning.") + set(CORRADE_INCLUDE_INSTALL_DIR ${CORRADE_INCLUDE_INSTALL_PREFIX}/${CORRADE_INCLUDE_INSTALL_DIR}) +endif() diff --git a/modules/FindGLFW.cmake b/modules/FindGLFW.cmake index 3017f18..9fe4403 100644 --- a/modules/FindGLFW.cmake +++ b/modules/FindGLFW.cmake @@ -87,6 +87,8 @@ if(CORRADE_TARGET_WINDOWS) set(_GLFW_LIBRARY_PATH_SUFFIX lib-vc2017) elseif(MSVC_VERSION VERSION_LESS 1930) set(_GLFW_LIBRARY_PATH_SUFFIX lib-vc2019) + elseif(MSVC_VERSION VERSION_LESS 1940) + set(_GLFW_LIBRARY_PATH_SUFFIX lib-vc2022) else() message(FATAL_ERROR "Unsupported MSVC version") endif() diff --git a/modules/FindMagnum.cmake b/modules/FindMagnum.cmake index a05edf0..51d9f10 100644 --- a/modules/FindMagnum.cmake +++ b/modules/FindMagnum.cmake @@ -13,9 +13,6 @@ # MAGNUM_DEPLOY_PREFIX - Prefix where to put final application # executables, defaults to ``.``. If a relative path is used, it's relative # to :variable:`CMAKE_INSTALL_PREFIX`. -# MAGNUM_INCLUDE_INSTALL_PREFIX - Prefix where to put platform-independent -# include and other files, defaults to ``.``. If a relative path is used, -# it's relative to :variable:`CMAKE_INSTALL_PREFIX`. # MAGNUM_PLUGINS_DEBUG_DIR - Base directory with dynamic plugins for # debug builds, defaults to magnum-d/ subdirectory of dir where Magnum # library was found @@ -63,6 +60,7 @@ # MeshTools - MeshTools library # Primitives - Primitives library # SceneGraph - SceneGraph library +# SceneTools - SceneTools library # Shaders - Shaders library # ShaderTools - ShaderTools library # Text - Text library @@ -232,7 +230,7 @@ foreach(_component ${Magnum_FIND_COMPONENTS}) # Unrolling the transitive dependencies here so this doesn't need to be # after resolving inter-component dependencies. Listing also all plugins. - if(_component MATCHES "^(Audio|DebugTools|MeshTools|Primitives|ShaderTools|Text|TextureTools|Trade|.+Importer|.+ImageConverter|.+Font|.+ShaderConverter)$") + if(_component MATCHES "^(Audio|DebugTools|MeshTools|Primitives|SceneTools|ShaderTools|Text|TextureTools|Trade|.+Importer|.+ImageConverter|.+Font|.+ShaderConverter)$") set(_MAGNUM_${_COMPONENT}_CORRADE_DEPENDENCIES PluginManager) endif() @@ -357,8 +355,8 @@ endif() # Component distinction (listing them explicitly to avoid mistakes with finding # components from other repositories) set(_MAGNUM_LIBRARY_COMPONENTS - Audio DebugTools GL MeshTools Primitives SceneGraph Shaders ShaderTools - Text TextureTools Trade + Audio DebugTools GL MeshTools Primitives SceneGraph SceneTools Shaders + ShaderTools Text TextureTools Trade WindowlessEglApplication EglContext OpenGLTester) set(_MAGNUM_PLUGIN_COMPONENTS AnyAudioImporter AnyImageConverter AnyImageImporter AnySceneConverter @@ -390,8 +388,7 @@ if(CORRADE_TARGET_EMSCRIPTEN) endif() if(CORRADE_TARGET_IOS) list(APPEND _MAGNUM_LIBRARY_COMPONENTS WindowlessIosApplication) -endif() -if(CORRADE_TARGET_APPLE AND NOT CORRADE_TARGET_IOS) +elseif(CORRADE_TARGET_APPLE AND NOT MAGNUM_TARGET_GLES) list(APPEND _MAGNUM_LIBRARY_COMPONENTS WindowlessCglApplication CglContext) endif() if(CORRADE_TARGET_UNIX AND NOT CORRADE_TARGET_APPLE) @@ -433,7 +430,7 @@ if(MAGNUM_TARGET_HEADLESS OR CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID list(APPEND _MAGNUM_OpenGLTester_DEPENDENCIES WindowlessEglApplication) elseif(CORRADE_TARGET_IOS) list(APPEND _MAGNUM_OpenGLTester_DEPENDENCIES WindowlessIosApplication) -elseif(CORRADE_TARGET_APPLE) +elseif(CORRADE_TARGET_APPLE AND NOT MAGNUM_TARGET_GLES) list(APPEND _MAGNUM_OpenGLTester_DEPENDENCIES WindowlessCglApplication) elseif(CORRADE_TARGET_UNIX) if(MAGNUM_TARGET_GLES AND NOT MAGNUM_TARGET_DESKTOP_GLES) @@ -454,8 +451,11 @@ if(MAGNUM_TARGET_GL) # GL not required by Primitives themselves, but transitively by MeshTools list(APPEND _MAGNUM_Primitives_DEPENDENCIES GL) endif() + set(_MAGNUM_SceneGraph_DEPENDENCIES ) +set(_MAGNUM_SceneTools_DEPENDENCIES Trade) set(_MAGNUM_Shaders_DEPENDENCIES GL) + set(_MAGNUM_Text_DEPENDENCIES TextureTools) if(MAGNUM_TARGET_GL) list(APPEND _MAGNUM_Text_DEPENDENCIES GL) @@ -469,6 +469,7 @@ endif() set(_MAGNUM_Trade_DEPENDENCIES ) set(_MAGNUM_VulkanTester_DEPENDENCIES Vk) set(_MAGNUM_AndroidApplication_DEPENDENCIES GL) + set(_MAGNUM_EmscriptenApplication_DEPENDENCIES) if(MAGNUM_TARGET_GL) list(APPEND _MAGNUM_EmscriptenApplication_DEPENDENCIES GL) @@ -611,7 +612,7 @@ foreach(_component ${Magnum_FIND_COMPONENTS}) # Dynamic plugins don't have any prefix (e.g. `lib` on Linux), # search with empty prefix and then reset that back so we don't - # accidentaly break something else + # accidentally break something else set(_tmp_prefixes "${CMAKE_FIND_LIBRARY_PREFIXES}") set(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES};") @@ -1185,17 +1186,27 @@ endif() # Installation and deploy dirs set(MAGNUM_DEPLOY_PREFIX "." CACHE STRING "Prefix where to put final application executables") -set(MAGNUM_INCLUDE_INSTALL_PREFIX "." - CACHE STRING "Prefix where to put platform-independent include and other files") include(${CORRADE_LIB_SUFFIX_MODULE}) set(MAGNUM_BINARY_INSTALL_DIR bin) set(MAGNUM_LIBRARY_INSTALL_DIR lib${LIB_SUFFIX}) -set(MAGNUM_DATA_INSTALL_DIR ${MAGNUM_INCLUDE_INSTALL_PREFIX}/share/magnum) +set(MAGNUM_DATA_INSTALL_DIR share/magnum) +set(MAGNUM_INCLUDE_INSTALL_DIR include/Magnum) +set(MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR include/MagnumExternal) +set(MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR include/MagnumPlugins) +if(MAGNUM_BUILD_DEPRECATED AND MAGNUM_INCLUDE_INSTALL_PREFIX AND NOT MAGNUM_INCLUDE_INSTALL_PREFIX STREQUAL ".") + message(DEPRECATION "MAGNUM_INCLUDE_INSTALL_PREFIX is obsolete as its primary use was for old Android NDK versions. Please switch to the NDK r19+ layout instead of using this variable and recreate your build directory to get rid of this warning.") + set(MAGNUM_DATA_INSTALL_DIR ${MAGNUM_INCLUDE_INSTALL_PREFIX}/${MAGNUM_DATA_INSTALL_DIR}) + set(MAGNUM_INCLUDE_INSTALL_DIR ${MAGNUM_INCLUDE_INSTALL_PREFIX}/${MAGNUM_INCLUDE_INSTALL_DIR}) + set(MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR ${MAGNUM_INCLUDE_INSTALL_PREFIX}/${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}) + set(MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR ${MAGNUM_INCLUDE_INSTALL_PREFIX}/${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}) +endif() + set(MAGNUM_PLUGINS_DEBUG_BINARY_INSTALL_DIR ${MAGNUM_BINARY_INSTALL_DIR}/magnum-d) set(MAGNUM_PLUGINS_DEBUG_LIBRARY_INSTALL_DIR ${MAGNUM_LIBRARY_INSTALL_DIR}/magnum-d) set(MAGNUM_PLUGINS_RELEASE_BINARY_INSTALL_DIR ${MAGNUM_BINARY_INSTALL_DIR}/magnum) set(MAGNUM_PLUGINS_RELEASE_LIBRARY_INSTALL_DIR ${MAGNUM_LIBRARY_INSTALL_DIR}/magnum) + set(MAGNUM_PLUGINS_SHADERCONVERTER_DEBUG_BINARY_INSTALL_DIR ${MAGNUM_PLUGINS_DEBUG_BINARY_INSTALL_DIR}/shaderconverters) set(MAGNUM_PLUGINS_SHADERCONVERTER_DEBUG_LIBRARY_INSTALL_DIR ${MAGNUM_PLUGINS_DEBUG_LIBRARY_INSTALL_DIR}/shaderconverters) set(MAGNUM_PLUGINS_SHADERCONVERTER_RELEASE_LIBRARY_INSTALL_DIR ${MAGNUM_PLUGINS_RELEASE_LIBRARY_INSTALL_DIR}/shaderconverters) @@ -1222,9 +1233,6 @@ set(MAGNUM_PLUGINS_AUDIOIMPORTER_DEBUG_BINARY_INSTALL_DIR ${MAGNUM_PLUGINS_DEBUG set(MAGNUM_PLUGINS_AUDIOIMPORTER_DEBUG_LIBRARY_INSTALL_DIR ${MAGNUM_PLUGINS_DEBUG_LIBRARY_INSTALL_DIR}/audioimporters) set(MAGNUM_PLUGINS_AUDIOIMPORTER_RELEASE_BINARY_INSTALL_DIR ${MAGNUM_PLUGINS_RELEASE_BINARY_INSTALL_DIR}/audioimporters) set(MAGNUM_PLUGINS_AUDIOIMPORTER_RELEASE_LIBRARY_INSTALL_DIR ${MAGNUM_PLUGINS_RELEASE_LIBRARY_INSTALL_DIR}/audioimporters) -set(MAGNUM_INCLUDE_INSTALL_DIR ${MAGNUM_INCLUDE_INSTALL_PREFIX}/include/Magnum) -set(MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR ${MAGNUM_INCLUDE_INSTALL_PREFIX}/include/MagnumExternal) -set(MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR ${MAGNUM_INCLUDE_INSTALL_PREFIX}/include/MagnumPlugins) # Get base plugin directory from main library location. This is *not* PATH, # because CMake always converts the path to an absolute location internally, diff --git a/modules/FindOpenGLES3.cmake b/modules/FindOpenGLES3.cmake index 65cf2e1..d41b670 100644 --- a/modules/FindOpenGLES3.cmake +++ b/modules/FindOpenGLES3.cmake @@ -47,6 +47,7 @@ if(CORRADE_TARGET_EMSCRIPTEN) set(OPENGLES3_LIBRARY GL CACHE STRING "Path to a library." FORCE) else() find_library(OPENGLES3_LIBRARY NAMES + # Used by Android GLESv3 # On some platforms (e.g. desktop emulation with Mesa or NVidia) ES3 diff --git a/modules/FindSDL2.cmake b/modules/FindSDL2.cmake index 6222588..fb99683 100644 --- a/modules/FindSDL2.cmake +++ b/modules/FindSDL2.cmake @@ -42,6 +42,63 @@ # DEALINGS IN THE SOFTWARE. # +# If we have a CMake subproject, use the targets directly. I'd prefer the +# static variant, however SDL2 defines its own SDL2::SDL2 alias for only the +# dynamic variant since https://github.com/libsdl-org/SDL/pull/4074 and so I'm +# forced to use that, if available. +if(TARGET SDL2) + # In case we don't have https://github.com/libsdl-org/SDL/pull/4074 yet, + # do the alias ourselves. + if(NOT TARGET SDL2::SDL2) + # Aliases of (global) targets are only supported in CMake 3.11, so we + # work around it by this. This is easier than fetching all possible + # properties (which are impossible to track of) and then attempting to + # rebuild them into a new target. + add_library(SDL2::SDL2 INTERFACE IMPORTED) + set_target_properties(SDL2::SDL2 PROPERTIES INTERFACE_LINK_LIBRARIES SDL2) + endif() + + # Just to make FPHSA print some meaningful location, nothing else. Not + # using the INTERFACE_INCLUDE_DIRECTORIES as that contains + # $