summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2020-06-18 10:07:39 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-06-18 11:51:41 +0200
commit976fa5134aea52741df7b25a196fa36251dc932f (patch)
treef6603665d7ba06465f44437862970d83af5f5663
parent8b701f9bd92c62aaba3d652e95b0e3e04e8e847d (diff)
CMake: Use intelcet flags for bootstrap and qmake
This should fix build failures on Ubuntu 20.04. Amends fa98adbd04de9d44ce921436b92589a41f285dcd Change-Id: Iff399faff0cf06f5b88d756b1f632b8798069578 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--cmake/QtBuild.cmake19
-rw-r--r--qmake/CMakeLists.txt1
-rw-r--r--src/tools/bootstrap/CMakeLists.txt1
3 files changed, 21 insertions, 0 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index ebb4841844..95a84f7fc0 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -1494,6 +1494,25 @@ function(qt_internal_apply_gc_binaries target visibility)
endif()
endfunction()
+function(qt_internal_apply_intel_cet target visibility)
+ if(NOT QT_FEATURE_intelcet)
+ return()
+ endif()
+
+ set(possible_visibilities PRIVATE INTERFACE PUBLIC)
+ list(FIND possible_visibilities "${visibility}" known_visibility)
+ if (known_visibility EQUAL "-1")
+ message(FATAL_ERROR "Visibitily setting must be one of PRIVATE, INTERFACE or PUBLIC.")
+ endif()
+
+ if(GCC)
+ set(flags "-mshstk")
+ endif()
+ if(flags)
+ target_compile_options("${target}" ${visibility} "${flags}")
+ endif()
+endfunction()
+
function(qt_internal_add_linker_version_script target)
qt_parse_all_arguments(arg "qt_internal_add_linker" "INTERNAL" "" "PRIVATE_HEADERS" ${ARGN})
diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt
index efc6c81da4..9931a2e14a 100644
--- a/qmake/CMakeLists.txt
+++ b/qmake/CMakeLists.txt
@@ -274,3 +274,4 @@ qt_internal_apply_gc_binaries(${target_name} PRIVATE) # special case
qt_enable_msvc_cplusplus_define(${target_name} PUBLIC) # special case
qt_skip_warnings_are_errors(${target_name}) # special case
+qt_internal_apply_intel_cet(Bootstrap PUBLIC) # special case
diff --git a/src/tools/bootstrap/CMakeLists.txt b/src/tools/bootstrap/CMakeLists.txt
index 8b3a6e96d0..f3889008a9 100644
--- a/src/tools/bootstrap/CMakeLists.txt
+++ b/src/tools/bootstrap/CMakeLists.txt
@@ -265,4 +265,5 @@ qt_internal_apply_gc_binaries(Bootstrap PUBLIC)
set_target_properties(Bootstrap PROPERTIES AUTOMOC OFF AUTOUIC OFF AUTORCC OFF)
qt_internal_add_target_aliases(Bootstrap)
qt_enable_msvc_cplusplus_define(Bootstrap PUBLIC)
+qt_internal_apply_intel_cet(Bootstrap PUBLIC)
# special case end