summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/QtApp.cmake1
-rw-r--r--cmake/QtBuild.cmake4
-rw-r--r--src/corelib/Qt6CoreMacros.cmake16
3 files changed, 21 insertions, 0 deletions
diff --git a/cmake/QtApp.cmake b/cmake/QtApp.cmake
index c54bb3e940..ca46690fb7 100644
--- a/cmake/QtApp.cmake
+++ b/cmake/QtApp.cmake
@@ -38,6 +38,7 @@ function(qt_internal_add_app target)
TARGET_COPYRIGHT "${arg_TARGET_COPYRIGHT}"
)
qt_internal_add_target_aliases("${target}")
+ _qt_internal_apply_strict_cpp("${target}")
# To mimic the default behaviors of qt_app.prf, we by default enable GUI Windows applications,
# but don't enable macOS bundles.
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index f957d87332..c404a6b483 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -2686,6 +2686,7 @@ function(qt_add_module target)
endif()
qt_internal_add_target_aliases("${target}")
qt_skip_warnings_are_errors_when_repo_unclean("${target}")
+ _qt_internal_apply_strict_cpp("${target}")
# Add _private target to link against the private headers:
if(NOT ${arg_NO_PRIVATE_MODULE})
@@ -3764,6 +3765,7 @@ function(qt_internal_add_plugin target)
endif()
qt_internal_add_target_aliases("${target}")
qt_skip_warnings_are_errors_when_repo_unclean("${target}")
+ _qt_internal_apply_strict_cpp("${target}")
# Disable linking of plugins against other plugins during static regular and
# super builds. The latter causes cyclic dependencies otherwise.
@@ -4654,6 +4656,7 @@ function(qt_add_3rdparty_library target)
qt_internal_add_qt_repo_known_module(${target})
qt_internal_add_target_aliases(${target})
+ _qt_internal_apply_strict_cpp(${target})
if (ANDROID)
qt_android_apply_arch_suffix("${target}")
@@ -4970,6 +4973,7 @@ function(qt_add_tool target_name)
TARGET_COPYRIGHT "${arg_TARGET_COPYRIGHT}"
)
qt_internal_add_target_aliases("${target_name}")
+ _qt_internal_apply_strict_cpp("${target_name}")
if (NOT target_name STREQUAL name)
set_target_properties(${target_name} PROPERTIES
diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake
index 008452ea7c..34e5efb5e9 100644
--- a/src/corelib/Qt6CoreMacros.cmake
+++ b/src/corelib/Qt6CoreMacros.cmake
@@ -1290,3 +1290,19 @@ endif()
function(qt_disable_utf8_sources target)
set_target_properties("${target}" PROPERTIES QT_NO_UTF8_SOURCE TRUE)
endfunction()
+
+function(_qt_internal_apply_strict_cpp target)
+ # Disable C, Obj-C and C++ GNU extensions aka no "-std=gnu++11".
+ # Similar to mkspecs/features/default_post.prf's CONFIG += strict_cpp.
+ # Allow opt-out via variable.
+ if(NOT QT_ENABLE_CXX_EXTENSIONS)
+ get_target_property(target_type "${target}" TYPE)
+ if(NOT target_type STREQUAL "INTERFACE_LIBRARY")
+ set_target_properties("${target}" PROPERTIES
+ CXX_EXTENSIONS OFF
+ C_EXTENSIONS OFF
+ OBJC_EXTENSIONS OFF
+ OBJCXX_EXTENSIONS OFF)
+ endif()
+ endif()
+endfunction()