From e7d3069cd2db2029f1acefba0f368fdfafa5a0e7 Mon Sep 17 00:00:00 2001 From: "Friedrich W. H. Kossebau" Date: Fri, 2 Jul 2021 18:05:51 +0200 Subject: KDEFrameworksCompilerSettings: move backward-compat code into separate file Also add trigger to switch to KDE_COMPILERSETTINGS_LEVEL of latest KDECompilerSettings on ECM dependency in KF modules to 5.85 NO_CHANGELOG --- kde-modules/KDEFrameworkCompilerSettings.cmake | 78 +++++++------------------- 1 file changed, 20 insertions(+), 58 deletions(-) (limited to 'kde-modules/KDEFrameworkCompilerSettings.cmake') diff --git a/kde-modules/KDEFrameworkCompilerSettings.cmake b/kde-modules/KDEFrameworkCompilerSettings.cmake index 144e0b1a..9c6efd67 100644 --- a/kde-modules/KDEFrameworkCompilerSettings.cmake +++ b/kde-modules/KDEFrameworkCompilerSettings.cmake @@ -29,70 +29,32 @@ flag, otherwise you may get spurious warnings with some versions of CMake. Since pre-1.0.0. #]=======================================================================] -if (NOT CMAKE_CXX_STANDARD) - if (ECM_GLOBAL_FIND_VERSION VERSION_GREATER_EQUAL 5.84.0) - set(CMAKE_CXX_STANDARD 17) - set(CMAKE_CXX_STANDARD_REQUIRED True) - set(CMAKE_CXX_EXTENSIONS OFF) - endif() +# No-one else should be using this module, at least by the time when requiring +# ECM 5.85 as minimum, where also settings levels had been introduced for +# KDECompilerSettings to satisfy the needs for stricter out-of-the-box +# settings. +# So making a clear cut here by that condition and providing backward-compat +# support from a separate file with the old code, avoiding the need for +# further if()-else() when changing the settings for current KDE Frameworks. +if (ECM_GLOBAL_FIND_VERSION VERSION_LESS 5.85.0) + include(KDEFrameworkCompilerLegacySettings NO_POLICY_SCOPE) + return() endif() -if (ECM_GLOBAL_FIND_VERSION VERSION_GREATER_EQUAL 5.85.0) - set(ENABLE_BSYMBOLICFUNCTIONS ON) -endif() -include(KDECompilerSettings NO_POLICY_SCOPE) +# set ENABLE_BSYMBOLICFUNCTIONS default to ON +# TODO: find a nice way to set an option default +set(ENABLE_BSYMBOLICFUNCTIONS ON) -add_definitions(-DQT_NO_CAST_TO_ASCII - -DQT_NO_CAST_FROM_ASCII - -DQT_NO_URL_CAST_FROM_STRING - -DQT_NO_CAST_FROM_BYTEARRAY - -DQT_USE_QSTRINGBUILDER - -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT - ) - -if (NOT WIN32) - # Strict iterators can't be used on Windows, they lead to a link error - # when application code iterates over a QVector for instance, unless - # Qt itself was also built with strict iterators. - # See example at https://bugreports.qt.io/browse/AUTOSUITE-946 - add_definitions(-DQT_STRICT_ITERATORS) -endif() - -# Some non-KF projects make (ab)use of KDEFrameworkCompilerSettings currently, -# let them only hit this as well when bumping their min. ECM requirement to a newer version. -if (ECM_GLOBAL_FIND_VERSION VERSION_GREATER_EQUAL 5.79.0) - add_definitions( - -DQT_NO_KEYWORDS - -DQT_NO_FOREACH - ) -else() - add_definitions(-DQT_NO_SIGNALS_SLOTS_KEYWORDS) -endif() +# Current defaults +include(KDECompilerSettings NO_POLICY_SCOPE) +# enable warnings for any deprecated Qt/KF API of current 5 series add_definitions( -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DKF_DEPRECATED_WARNINGS_SINCE=0x060000 ) -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic") -endif() - -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 5.0.0) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wzero-as-null-pointer-constant" ) - endif() -endif() - -if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 5.0.0) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wzero-as-null-pointer-constant" ) - endif() -endif() - -if (ECM_GLOBAL_FIND_VERSION VERSION_GREATER_EQUAL 5.80.0) - include(KDEClangFormat) - # add clang-format target - file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c) - kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) -endif () +# add clang-format target +include(KDEClangFormat) +file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c) +kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) -- cgit v1.2.1