From c2fd8241604787de9fd667f16c9a929fd36015c6 Mon Sep 17 00:00:00 2001 From: Amir Masoud Abdol Date: Wed, 19 Apr 2023 12:19:07 +0200 Subject: [PATCH] Exclude files from unity build to resolve Android's build There are several duplicate symbols defined across android source files. For now, excluding the conflicting files allows us to continue working on bringing unity build to CI. I added some explanation and TODO's on what I think can be done for resolving the conflict. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Ic0b31c4ae845c69570ea5dd86316e5a795c166c4 Reviewed-by: Alexandru Croitor --- src/corelib/CMakeLists.txt | 6 ++++++ src/plugins/platforms/android/CMakeLists.txt | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 87ce6b5fc7..a1cb450627 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -981,6 +981,12 @@ qt_internal_extend_target(Core CONDITION ANDROID kernel/qjnihelpers.cpp kernel/qjnihelpers_p.h platform/android/qandroidextras_p.h platform/android/qandroidextras.cpp platform/android/qandroidnativeinterface.cpp + NO_UNITY_BUILD_SOURCES + platform/android/qandroidextras.cpp + # qtNativeClassName conflicts with similar symbols in android headers + # TODO: Resolve conflicts between various variables set as, + # `org/qtproject/qt/android/QtNative` QtAndroidPrivate might be a good + # place to put them. ) qt_internal_extend_target(Core CONDITION WIN32 diff --git a/src/plugins/platforms/android/CMakeLists.txt b/src/plugins/platforms/android/CMakeLists.txt index f352d5d2ac..632b1c1d42 100644 --- a/src/plugins/platforms/android/CMakeLists.txt +++ b/src/plugins/platforms/android/CMakeLists.txt @@ -42,6 +42,18 @@ qt_internal_add_plugin(QAndroidIntegrationPlugin qandroidplatformtheme.cpp qandroidplatformtheme.h qandroidplatformwindow.cpp qandroidplatformwindow.h qandroidsystemlocale.cpp qandroidsystemlocale.h + NO_UNITY_BUILD_SOURCES + # Conflicting symbols and macros with androidjnimain.cpp + # TODO: Unify the usage of FIND_AND_CHECK_CLASS, and similar + # macros. Q_JNI_FIND_AND_CHECK_CLASS in `qjnihelpers_p.h` + # seems to be doing most of the work already. + androidjnimenu.cpp + qandroidinputcontext.cpp + androidjniaccessibility.cpp + qandroidplatformdialoghelpers.cpp + # Conflicting JNI classes, and types + androidcontentfileengine.cpp + qandroidplatformintegration.cpp DEFINES QT_USE_QSTRINGBUILDER INCLUDE_DIRECTORIES