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 --- .../KDEFrameworkCompilerLegacySettings.cmake | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 kde-modules/KDEFrameworkCompilerLegacySettings.cmake (limited to 'kde-modules/KDEFrameworkCompilerLegacySettings.cmake') diff --git a/kde-modules/KDEFrameworkCompilerLegacySettings.cmake b/kde-modules/KDEFrameworkCompilerLegacySettings.cmake new file mode 100644 index 00000000..192d079b --- /dev/null +++ b/kde-modules/KDEFrameworkCompilerLegacySettings.cmake @@ -0,0 +1,81 @@ +# SPDX-FileCopyrightText: 2013 Albert Astals Cid +# SPDX-FileCopyrightText: 2007 Matthias Kretz +# SPDX-FileCopyrightText: 2006-2007 Laurent Montel +# SPDX-FileCopyrightText: 2006-2013 Alex Neundorf +# +# SPDX-License-Identifier: BSD-3-Clause + +#[=======================================================================[ +Backward-compatibility support +------------------------------ + +For all the non-KF projects which reused the KDEFrameworkCompilerSettings +module to get more strict settings. + +Kept as is, to be removed on next backward-compatibility-breakage occasion. +#]=======================================================================] + +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 ON) + set(CMAKE_CXX_EXTENSIONS OFF) + endif() +endif() + +include(KDECompilerSettings NO_POLICY_SCOPE) + +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() + +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 () -- cgit v1.2.1