summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2020-05-27 14:42:35 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-05-28 15:13:27 +0200
commite189126f1ae1d2fa2ad0f95ee2c4aa72c770a97b (patch)
tree8d9b5207e69fb3745534545e313c6859b41968cf /cmake
parentf20f0b03d57b9517ac34043b873665bd41c098d2 (diff)
CMake: Use -fapplication-extension when building Qt libraries on macOS
Needed to avoid linker warnings transformed into errors, when linking QtWebEngine with qmake mixing. ld: warning: linking against a dylib which is not safe for use in application extensions: The flag is added to libraries and plugins, unless opted out. CMake equivalent of 944110089d4cb1c229dba422989e154db65a67fd Task-number: QTBUG-83929 Task-number: QTBUG-75666 Change-Id: I3e9acca4712c9a266bf54c6e35e2fd2c0096692b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtInternalTargets.cmake19
1 files changed, 19 insertions, 0 deletions
diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake
index c570771202..bf4d33126c 100644
--- a/cmake/QtInternalTargets.cmake
+++ b/cmake/QtInternalTargets.cmake
@@ -204,3 +204,22 @@ function(qt_auto_detect_fpmath)
endif()
endfunction()
qt_auto_detect_fpmath()
+
+function(qt_handle_apple_app_extension_api_only)
+ if(APPLE)
+ # Build Qt libraries with -fapplication-extension. Needed to avoid linker warnings
+ # transformed into errors on darwin platforms.
+ set(flags "-fapplication-extension")
+ set(genex_condition "$<NOT:$<BOOL:$<TARGET_PROPERTY:QT_NO_APP_EXTENSION_ONLY_API>>>")
+ set(flags "$<${genex_condition}:${flags}>")
+ target_compile_options(PlatformModuleInternal INTERFACE ${flags})
+ target_link_options(PlatformModuleInternal INTERFACE ${flags})
+ target_compile_options(PlatformPluginInternal INTERFACE ${flags})
+ target_link_options(PlatformPluginInternal INTERFACE ${flags})
+ endif()
+endfunction()
+function(qt_disable_apple_app_extension_api_only target)
+ set_target_properties("${target}" PROPERTIES QT_NO_APP_EXTENSION_ONLY_API TRUE)
+endfunction()
+
+qt_handle_apple_app_extension_api_only()