aboutsummaryrefslogtreecommitdiff
path: root/kde-modules
diff options
context:
space:
mode:
authorFriedrich W. H. Kossebau <kossebau@kde.org>2021-07-16 03:08:10 +0200
committerFriedrich W. H. Kossebau <kossebau@kde.org>2021-07-16 03:08:10 +0200
commit98d74e94e84f8435e8a460484e354c322cd4f632 (patch)
tree2d67e72007019a0a45c2cfbd51a1f9d845937adf /kde-modules
parent0bb0b1b5f6d7df18d305b85c4914346007815fef (diff)
downloadextra-cmake-modules-98d74e94e84f8435e8a460484e354c322cd4f632.tar.gz
extra-cmake-modules-98d74e94e84f8435e8a460484e354c322cd4f632.tar.bz2
KDECompilerSettings: support multiple inclusion and auto-levels
Existing projects have muliple calls of find_package(ECM) and include(KDECompilerSettings), usually in pairs, e.g. for forks of 3rd-party software or examples. While this is not a recommnended setup, as there is no official mechanism to properly reset previously created setings, those existing projects and their releases can be supported by discarding any auto-level values at the end of the include, so the next can pick up again the value of any closer find_package(ECM) call. NO_CHANGELOG
Diffstat (limited to 'kde-modules')
-rw-r--r--kde-modules/KDECompilerSettings.cmake22
1 files changed, 16 insertions, 6 deletions
diff --git a/kde-modules/KDECompilerSettings.cmake b/kde-modules/KDECompilerSettings.cmake
index 83fa24fe..78559e42 100644
--- a/kde-modules/KDECompilerSettings.cmake
+++ b/kde-modules/KDECompilerSettings.cmake
@@ -209,11 +209,12 @@ Since pre-1.0.0.
# will offer as settings, the minimum required version of ECM sets the upper
# limit then for the level version.
if(NOT DEFINED KDE_COMPILERSETTINGS_LEVEL)
- set(KDE_COMPILERSETTINGS_LEVEL "${ECM_GLOBAL_FIND_VERSION}")
+ set(KDE_INTERNAL_COMPILERSETTINGS_LEVEL "${ECM_GLOBAL_FIND_VERSION}")
else()
if(KDE_COMPILERSETTINGS_LEVEL VERSION_GREATER "${ECM_GLOBAL_FIND_VERSION}")
message(FATAL_ERROR "KDE_COMPILERSETTINGS_LEVEL (${KDE_COMPILERSETTINGS_LEVEL}) cannot be newer than the min. required ECM version (${ECM_GLOBAL_FIND_VERSION}).")
endif()
+ set(KDE_INTERNAL_COMPILERSETTINGS_LEVEL "${KDE_COMPILERSETTINGS_LEVEL}")
endif()
include("${ECM_MODULE_DIR}/ECMSourceVersionControl.cmake")
@@ -355,7 +356,7 @@ endif()
# Pick sensible versions of the C and C++ standards.
if (NOT CMAKE_C_STANDARD)
- if (KDE_COMPILERSETTINGS_LEVEL VERSION_GREATER_EQUAL 5.85.0)
+ if (KDE_INTERNAL_COMPILERSETTINGS_LEVEL VERSION_GREATER_EQUAL 5.85.0)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED TRUE)
set(CMAKE_C_EXTENSIONS OFF)
@@ -364,7 +365,7 @@ if (NOT CMAKE_C_STANDARD)
endif()
endif()
if (NOT CMAKE_CXX_STANDARD)
- if (KDE_COMPILERSETTINGS_LEVEL VERSION_GREATER_EQUAL 5.85.0)
+ if (KDE_INTERNAL_COMPILERSETTINGS_LEVEL VERSION_GREATER_EQUAL 5.85.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS OFF)
else()
@@ -634,7 +635,7 @@ endif()
function(_kde_set_default_skip_variable_by_min_ecm _var_name _ecm_version)
if(NOT DEFINED ${_var_name})
- if (KDE_COMPILERSETTINGS_LEVEL VERSION_LESS ${_ecm_version})
+ if (KDE_INTERNAL_COMPILERSETTINGS_LEVEL VERSION_LESS ${_ecm_version})
set(${_var_name} TRUE PARENT_SCOPE)
else()
set(${_var_name} FALSE PARENT_SCOPE)
@@ -643,10 +644,12 @@ function(_kde_set_default_skip_variable_by_min_ecm _var_name _ecm_version)
endfunction()
if(NOT DEFINED KDE_QT_MODERNCODE_DEFINITIONS_LEVEL)
- set(KDE_QT_MODERNCODE_DEFINITIONS_LEVEL ${KDE_COMPILERSETTINGS_LEVEL})
+ set(KDE_INTERNAL_QT_MODERNCODE_DEFINITIONS_LEVEL ${KDE_INTERNAL_COMPILERSETTINGS_LEVEL})
+else()
+ set(KDE_INTERNAL_QT_MODERNCODE_DEFINITIONS_LEVEL ${KDE_INTERNAL_COMPILERSETTINGS_LEVEL})
endif()
-if (KDE_QT_MODERNCODE_DEFINITIONS_LEVEL VERSION_GREATER_EQUAL "5.85.0")
+if (KDE_INTERNAL_QT_MODERNCODE_DEFINITIONS_LEVEL VERSION_GREATER_EQUAL "5.85.0")
add_definitions(
-DQT_NO_CAST_TO_ASCII
-DQT_NO_CAST_FROM_ASCII
@@ -736,3 +739,10 @@ endif()
include("${ECM_MODULE_DIR}/ECMEnableSanitizers.cmake")
include("${ECM_MODULE_DIR}/ECMCoverageOption.cmake")
+
+############################################################
+# Clean-up
+############################################################
+# unset again, to not leak into caller scope and avoid usage there
+set(KDE_INTERNAL_COMPILERSETTINGS_LEVEL)
+set(KDE_INTERNAL_QT_MODERNCODE_DEFINITIONS_LEVEL)