summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2021-07-15 13:41:15 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-16 15:09:59 +0000
commitd11971f352914d3fe43bd09de48322cc02c08def (patch)
treea22a77ccbbec03c2fb417b92db17b5fc43321c1f
parenta3c9f5c101539bd5dbd9f17bc204ea4951d20412 (diff)
CMake: Apply bitcode flags to internal plugin object lib initializers
All internal libraries, plugins, object libraries (resources, plugin initializers) need to be built with bitcode flags when targeting iOS. Internal here means all libraries added by qt_internal_add_X functions or associated with internal libraries. We didn't do that for plugin initializers, which were added not too long ago. Extract the logic that links to Qt::PlatformModuleInternal into a separate function to be used for object libraries. Use it for resources and plugin initializers. It will also be used in qtdeclarative for qml plugin initializers. Task-number: QTBUG-95208 Change-Id: I366996078f5e9d1c2d2797f6b81c522ee99529e3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit e0a010129059634ce6e63199081b2e2d401a4e96) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--cmake/QtPluginHelpers.cmake1
-rw-r--r--cmake/QtResourceHelpers.cmake5
-rw-r--r--cmake/QtTargetHelpers.cmake10
3 files changed, 12 insertions, 4 deletions
diff --git a/cmake/QtPluginHelpers.cmake b/cmake/QtPluginHelpers.cmake
index 1b92a638a0..4ec7ef6009 100644
--- a/cmake/QtPluginHelpers.cmake
+++ b/cmake/QtPluginHelpers.cmake
@@ -329,6 +329,7 @@ function(qt_internal_add_plugin target)
if(qt_module_target)
__qt_internal_add_static_plugin_init_object_library("${target}" plugin_init_target)
+ qt_internal_link_internal_platform_for_object_library("${plugin_init_target}")
endif()
endif()
diff --git a/cmake/QtResourceHelpers.cmake b/cmake/QtResourceHelpers.cmake
index 4b7d81cc7f..092b112333 100644
--- a/cmake/QtResourceHelpers.cmake
+++ b/cmake/QtResourceHelpers.cmake
@@ -87,10 +87,7 @@ function(qt_internal_record_rcc_object_files target resource_targets)
endif()
set_property(TARGET ${target} APPEND PROPERTY _qt_rcc_objects "${rcc_object_file_path}")
- # Make sure that the target cpp files are compiled with the regular Qt internal compile
- # flags, needed for building iOS apps with qmake where bitcode is involved.
- target_link_libraries("${out_target}" PRIVATE Qt::PlatformModuleInternal)
-
+ qt_internal_link_internal_platform_for_object_library("${out_target}")
qt_set_common_target_properties(${out_target})
endforeach()
endfunction()
diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake
index 9c1d0c5157..75642c70b0 100644
--- a/cmake/QtTargetHelpers.cmake
+++ b/cmake/QtTargetHelpers.cmake
@@ -762,3 +762,13 @@ endfunction()
function(qt_internal_mark_as_internal_library target)
set_target_properties(${target} PROPERTIES _qt_is_internal_library TRUE)
endfunction()
+
+function(qt_internal_link_internal_platform_for_object_library target)
+ # We need to apply iOS bitcode flags to object libraries that are associated with internal
+ # modules or plugins (e.g. object libraries added by qt_internal_add_resource,
+ # qt_internal_add_plugin, etc.)
+ # The flags are needed when building iOS apps because Xcode expects bitcode to be
+ # present by default.
+ # Achieve this by compiling the cpp files with the PlatformModuleInternal compile flags.
+ target_link_libraries("${target}" PRIVATE Qt::PlatformModuleInternal)
+endfunction()