summaryrefslogtreecommitdiffstats
path: root/cmake/QtPlatformTargetHelpers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/QtPlatformTargetHelpers.cmake')
-rw-r--r--cmake/QtPlatformTargetHelpers.cmake17
1 files changed, 15 insertions, 2 deletions
diff --git a/cmake/QtPlatformTargetHelpers.cmake b/cmake/QtPlatformTargetHelpers.cmake
index e9f40d0565..f1976b9975 100644
--- a/cmake/QtPlatformTargetHelpers.cmake
+++ b/cmake/QtPlatformTargetHelpers.cmake
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
# Defines the public Qt::Platform target, which serves as a dependency for all internal Qt target
# as well as user projects consuming Qt.
function(qt_internal_setup_public_platform_target)
@@ -41,8 +44,18 @@ function(qt_internal_setup_public_platform_target)
endif()
target_link_options(Platform INTERFACE "${libc_link_option}")
endif()
- if (QT_FEATURE_no_extern_direct_access)
- target_compile_options(Platform INTERFACE "-mno-direct-extern-access")
+ if (QT_FEATURE_no_direct_extern_access)
+ target_compile_options(Platform INTERFACE "$<$<CXX_COMPILER_ID:GNU>:-mno-direct-extern-access>")
+ target_compile_options(Platform INTERFACE "$<$<CXX_COMPILER_ID:Clang>:-fno-direct-access-external-data>")
+ endif()
+
+ # Qt checks if a given platform supports 128 bit integers
+ # by checking if __SIZEOF_128__ is defined
+ # VXWORKS doesn't support 128 bit integers
+ # but it uses clang which defines __SIZEOF_128__
+ # which breaks the detection mechanism
+ if(VXWORKS)
+ target_compile_definitions(Platform INTERFACE "-DQT_NO_INT128")
endif()
qt_set_msvc_cplusplus_options(Platform INTERFACE)