Details
-
Epic
-
Resolution: Fixed
-
P3: Somewhat important
-
None
-
None
-
None
-
UNITY_BUILD
-
-
aa29b3ef5 (dev), d9d74723c (dev), c1e390f16 (dev), da36ac3c3 (6.5), d3596c07e (6.4), 9676e0de6 (6.5), 013a05a93 (6.5), 135a79294 (dev), bd99d0212 (6.4), 60816bcd3 (dev), b2789fd47 (6.5), c925d1b4a (dev), 356bed88f (tqtc/lts-6.2), f1fe08e07 (6.5)
Description
qt is a huge project and takes time to build
it could be great to support cmake unity/jumbo build and reduce build time:
https://cmake.org/cmake/help/latest/prop_tgt/UNITY_BUILD.html
I tried passing "cmake -DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=16"
typical errors are static variables cloberring and ambiguous namespaces:
qtbase/src/corelib/serialization/qcborstreamwriter.cpp:553:22: error: 'cbor_encode_float' was not declared in this scope; did you mean 'cbor_encode_uint'? 2022-12-13T15:35:22.2822474Z 553 | d->executeAppend(cbor_encode_float, f); 2022-12-13T15:35:22.2823065Z | ^~~~~~~~~~~~~~~~~ ... qtbase/src/corelib/text/qstring.cpp:6945:29: error: call of overloaded 'qIsUpper(const char&)' is ambiguous 2022-12-13T15:35:23.0507306Z 6945 | if (qIsUpper(*c)) 2022-12-13T15:35:23.0507774Z | ~~~~~~~^~~ 2022-12-13T15:35:23.0508296Z In file included from $SRC_DIR/build/qtbase/src/tools/bootstrap/CMakeFiles/Bootstrap.dir/Unity/unity_3_cxx.cxx:7: 2022-12-13T15:35:23.0509061Z $SRC_DIR/qtbase/src/corelib/text/qlocale.cpp:2601:13: note: candidate: 'bool qIsUpper(char)'
Known issues
- X11 headers containing things like #define None 0 causing clashes
- Some Windows headers (network?) not guarded
- Metatype declarations causing issues. Could be fixed by removing them (see https://lists.qt-project.org/pipermail/development/2022-July/042744.html )
- -Werror=subobject-linkage producing qerrormessage.cpp:38:7: error: ‘QErrorMessagePrivate’ has a field ‘QErrorMessagePrivate::pending’ whose type uses the anonymous namespace []
Attachments
Issue Links
- relates to
-
PYSIDE-2155 Support cmake UNITY_BUILD
- Closed
For Gerrit Dashboard: QTBUG-109394 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
483066,1 | Add Unity Build to config.summary | 6.5 | qt/qtbase | Status: NEW | 0 | 0 |
483067,1 | Add Unity Build to config.summary | 6.6 | qt/qtbase | Status: NEW | 0 | 0 |
483068,1 | Remove an unused variable | 6.6 | qt/qtbase | Status: NEW | 0 | 0 |
483069,1 | Remove an unused variable | 6.5 | qt/qtbase | Status: NEW | 0 | 0 |
483076,1 | Add Unity Build to config.summary | 6.5 | qt/qtbase | Status: NEW | 0 | 0 |
483077,1 | Add Unity Build to config.summary | 6.6 | qt/qtbase | Status: NEW | 0 | 0 |
483078,1 | Remove an unused variable | 6.5 | qt/qtbase | Status: NEW | 0 | 0 |
483079,1 | Remove an unused variable | 6.6 | qt/qtbase | Status: NEW | 0 | 0 |
483086,1 | Add Unity Build to config.summary | 6.5 | qt/qtbase | Status: NEW | 0 | 0 |
483087,1 | Add Unity Build to config.summary | 6.6 | qt/qtbase | Status: NEW | 0 | 0 |
483088,1 | Remove an unused variable | 6.5 | qt/qtbase | Status: NEW | 0 | 0 |
483089,1 | Remove an unused variable | 6.6 | qt/qtbase | Status: NEW | 0 | 0 |
483096,1 | Add Unity Build to config.summary | 6.5 | qt/qtbase | Status: NEW | 0 | 0 |
483097,1 | Add Unity Build to config.summary | 6.6 | qt/qtbase | Status: NEW | 0 | 0 |
483098,1 | Remove an unused variable | 6.5 | qt/qtbase | Status: NEW | 0 | 0 |
483099,1 | Remove an unused variable | 6.6 | qt/qtbase | Status: NEW | 0 | 0 |
463670,44 | Network: link directly to libresolv instead of dlopen()ing it | dev | qt/qtbase | Status: MERGED | +2 | 0 |
468159,25 | WIP: Add Insignificant Unity Builds to COIN | dev | qt/qt5 | Status: ABANDONED | -2 | 0 |
471326,2 | Exclude sources from the Unity Build | dev | qt/qtbase | Status: MERGED | +2 | 0 |
472013,7 | Resolve symbol conflict between qmutex_unix and qwaitcondition_unix.cpp | dev | qt/qtbase | Status: MERGED | +2 | 0 |
472014,4 | Add [[maybe_unused]] attribute to an unused variable | dev | qt/qtbase | Status: MERGED | +2 | 0 |
472077,3 | Resolve duplicate symbol error | dev | qt/qtwebengine | Status: MERGED | +2 | 0 |
472105,3 | Add drive letter to source paths when calling qt-internal- scripts | dev | qt/qtbase | Status: MERGED | +2 | 0 |
472137,3 | Replace a duplicate symbol | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
472144,2 | Resolve QTransform symbol ambiguity in unity build | 6.5 | qt/qt3d | Status: MERGED | +2 | 0 |
472174,2 | Place the QT_END_NAMESPACE in the right place | 6.5 | qt/qtdeclarative | Status: MERGED | +2 | 0 |
472233,2 | Exclude multimedia/windows files from the Unity Build | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |
472263,2 | Exclude thread/qwaitcondition_unix.cpp from the Unity Build | dev | qt/qtbase | Status: MERGED | +2 | 0 |
472302,2 | Exclude multimedia/windows files from the Unity Build | 6.5 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
472362,2 | Add drive letter to source paths when calling qt-internal- scripts | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
472363,2 | Add [[maybe_unused]] attribute to an unused variable | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
472364,2 | Exclude thread/qwaitcondition_unix.cpp from the Unity Build | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
472366,2 | Resolve duplicate symbol error | 6.5 | qt/qtwebengine | Status: MERGED | +2 | 0 |
472490,2 | Exclude wasm/qwasmaudiosink.cpp from the Unity Build | 6.5 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
472509,2 | Exclude wasm/qwasmaudiosink.cpp from the Unity Build | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |
472529,3 | Exclude `qmldomlib` from Unity Build | dev | qt/qtdeclarative | Status: MERGED | +2 | 0 |
472697,2 | Exclude `qmldomlib` from Unity Build | 6.5 | qt/qtdeclarative | Status: MERGED | +2 | 0 |
472769,2 | Remove the extra attribute | 6.5 | qt/qtcharts | Status: MERGED | +2 | 0 |
472797,5 | Remove the extra attribute | dev | qt/qtcharts | Status: MERGED | +2 | 0 |
472838,2 | Exclude a few source files from unity build | dev | qt/qtdatavis3d | Status: MERGED | +2 | 0 |
472955,2 | Exclude a few source files from unity build | 6.5 | qt/qtdatavis3d | Status: MERGED | +2 | 0 |
473153,3 | Exclude files from unity build to resolve Android's build | dev | qt/qtbase | Status: MERGED | +2 | 0 |
473194,4 | Resolve duplicate symbols | dev | qt/qtbase | Status: MERGED | +2 | 0 |
473260,2 | Resolve duplicate symbols | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
473261,2 | Exclude files from unity build to resolve Android's build | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
473344,3 | Exclude Android Vulkan sources from Unity Build | dev | qt/qtbase | Status: MERGED | +2 | 0 |
473508,16 | Enable Unity Build on QtBase for 3 Configurations | dev | qt/qt5 | Status: MERGED | +2 | 0 |
473543,2 | Exclude Android Vulkan sources from Unity Build | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
473571,2 | Exclude files from Unity Build | dev | qt/qtgraphs | Status: MERGED | +2 | 0 |
473628,2 | Use QCss:: namespace when accessing Value on Integrity | dev | qt/qtbase | Status: MERGED | +2 | 0 |
473697,2 | Exclude files from Unity Build | dev | qt/qtgraphs | Status: MERGED | +2 | 0 |
473703,2 | Exclude files from Unity Build | dev | qt/qtsensors | Status: MERGED | +2 | 0 |
473708,2 | Resolve a duplicate symbol issue | dev | qt/qtdatavis3d | Status: MERGED | +2 | 0 |
473713,3 | Remove Unnecessary Q_DECLARE_METATYPE(QJniObject) | dev | qt/qtconnectivity | Status: MERGED | +2 | 0 |
473791,2 | Resolve a duplicate symbol issue | 6.5 | qt/qtdatavis3d | Status: MERGED | +2 | 0 |
473925,2 | Exclude files from Unity Build | 6.5 | qt/qtsensors | Status: MERGED | +2 | 0 |
473926,2 | Use QCss:: namespace when accessing Value on Integrity | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
473989,2 | Remove Unnecessary Q_DECLARE_METATYPE(QJniObject) | 6.5 | qt/qtconnectivity | Status: MERGED | +2 | 0 |
473992,2 | Exclude a file from Unity Build | 6.5 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
473993,2 | Remove an unused private variable | 6.5 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
474009,2 | Refactor the usage of icutils::Node | dev | qt/qtdeclarative | Status: MERGED | +2 | 0 |
474021,4 | Remove an unused private variable | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |
474022,3 | Exclude a file from Unity Build | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |
474045,2 | Remove Q_DECLARE_METATYPE | dev | qt/qtnetworkauth | Status: MERGED | +2 | 0 |
474075,2 | Exclude files from unity build | dev | qt/qtbase | Status: MERGED | +2 | 0 |
474164,2 | Exclude files from unity build | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
474170,2 | Remove Q_DECLARE_METATYPE | 6.5 | qt/qtnetworkauth | Status: MERGED | +2 | 0 |
474180,2 | Refactor the usage of icutils::Node | 6.5 | qt/qtdeclarative | Status: MERGED | +2 | 0 |
474227,5 | Exclude hardwareintegration plugins from Unity Build | dev | qt/qtwayland | Status: MERGED | +2 | 0 |
474228,4 | Exclude files including EGL/egl.h from Unity Build | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |
474395,2 | Exclude files including EGL/egl.h from Unity Build | 6.5 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
474399,2 | Exclude hardwareintegration plugins from Unity Build | 6.5 | qt/qtwayland | Status: MERGED | +2 | 0 |
475195,3 | Resolve symbol ambiguity when building with Unity Build | dev | qt/qtbase | Status: MERGED | +2 | 0 |
475962,2 | Resolve symbol ambiguity when building with Unity Build | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
476666,4 | Add Unity Build to config.summary | dev | qt/qtbase | Status: MERGED | +2 | 0 |
477292,3 | Remove an unused variable | dev | qt/qtbase | Status: MERGED | +2 | 0 |
478362,8 | Compile Network with NOMINMAX | dev | qt/qtbase | Status: MERGED | +2 | 0 |
478676,1 | Resolve symbol conflict between qmutex_unix and qwaitcondition_unix.cpp | 6.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
478726,1 | Use %zu for qsizetype instead of %lld | dev | qt/qtbase | Status: ABANDONED | -1 | 0 |
478741,2 | Exclude source files from QFFmpegMediaPlugin when building for Android | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |
479590,2 | Compile Network with NOMINMAX | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
479628,2 | Exclude source files from QFFmpegMediaPlugin when building for Android | 6.5 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
483174,2 | Remove an unused variable | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
483175,2 | Remove an unused variable | 6.6 | qt/qtbase | Status: MERGED | +2 | 0 |
483176,2 | Add Unity Build to config.summary | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
483177,2 | Add Unity Build to config.summary | 6.6 | qt/qtbase | Status: MERGED | +2 | 0 |
490004,2 | Merge duplicate qHash(QBluetoohAddress) definitions | dev | qt/qtconnectivity | Status: MERGED | +2 | 0 |
490315,2 | Merge duplicate qHash(QBluetoohAddress) definitions | 6.5 | qt/qtconnectivity | Status: MERGED | +2 | 0 |
490316,2 | Merge duplicate qHash(QBluetoohAddress) definitions | 6.6 | qt/qtconnectivity | Status: MERGED | +2 | 0 |
492191,2 | Revert "Enable Unity Build on Qt Base for LLVM, and MinGW on Windows" | dev | qt/qt5 | Status: MERGED | +2 | 0 |
492192,2 | Revert "Enable Unity Build on Qt Base for macOS -developer-build" | dev | qt/qt5 | Status: MERGED | +2 | 0 |
492193,2 | Revert "Enable Unity Build on QtBase for 3 Configurations" | dev | qt/qt5 | Status: MERGED | +2 | 0 |
493369,4 | QFreeList: Resolve symbol ambiguity in unity build | dev | qt/qtbase | Status: MERGED | +2 | 0 |
494063,2 | QFreeList: Resolve symbol ambiguity in unity build | 6.6 | qt/qtbase | Status: MERGED | +2 | 0 |
494064,2 | QFreeList: Resolve symbol ambiguity in unity build | 6.5 | qt/qtbase | Status: MERGED | +2 | 0 |
535683,4 | Windows QPA: Fix unity build | dev | qt/qtbase | Status: MERGED | +2 | 0 |
541714,2 | Windows QPA: Fix unity build | 6.7 | qt/qtbase | Status: MERGED | +2 | 0 |
541782,2 | Windows QPA: Fix unity build | 6.6 | qt/qtbase | Status: MERGED | +2 | 0 |
541936,2 | Windows QPA: Fix unity build | tqtc/lts-6.5 | qt/tqtc-qtbase | Status: MERGED | +2 | 0 |
551670,3 | Fix CMake Unity build | dev | qt/qtquick3d | Status: MERGED | +2 | 0 |