-
Epic
-
Resolution: Fixed
-
P3: Somewhat important
-
None
-
None
-
None
-
UNITY_BUILD
-
-
013a05a93 (6.5), 135a79294 (dev), bd99d0212 (6.4), 60816bcd3 (dev), b2789fd47 (6.5), c925d1b4a (dev), 356bed88f (tqtc/lts-6.2), f1fe08e07 (6.5), c0957ca53 (dev), 79cc039b0 (dev), e2e1dd6f6 (6.10), fd045c49a (6.10), d4e61a130 (6.9), 5051c8e01 (6.9)
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 []
- relates to
-
PYSIDE-2155 Support cmake UNITY_BUILD
-
- Closed
-
| For Gerrit Dashboard: QTBUG-109394 | ||||||
|---|---|---|---|---|---|---|
| # | Subject | Branch | Project | Status | CR | V |
| 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 |
| 472077,3 | Resolve duplicate symbol error | dev | qt/qtwebengine | 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 |
| 483066,1 | Add Unity Build to config.summary | 6.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483067,1 | Add Unity Build to config.summary | 6.6 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483068,1 | Remove an unused variable | 6.6 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483069,1 | Remove an unused variable | 6.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483076,1 | Add Unity Build to config.summary | 6.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483077,1 | Add Unity Build to config.summary | 6.6 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483078,1 | Remove an unused variable | 6.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483079,1 | Remove an unused variable | 6.6 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483086,1 | Add Unity Build to config.summary | 6.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483087,1 | Add Unity Build to config.summary | 6.6 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483088,1 | Remove an unused variable | 6.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483089,1 | Remove an unused variable | 6.6 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483096,1 | Add Unity Build to config.summary | 6.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483097,1 | Add Unity Build to config.summary | 6.6 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483098,1 | Remove an unused variable | 6.5 | qt/qtbase | Status: ABANDONED | 0 | 0 |
| 483099,1 | Remove an unused variable | 6.6 | qt/qtbase | Status: ABANDONED | 0 | 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 |
| 629231,6 | lupdate: remove extra definition of CppMagicComment | dev | qt/qttools | Status: MERGED | +2 | 0 |
| 642242,3 | Fix unity build | dev | qt/qtsvg | Status: MERGED | +2 | 0 |
| 654054,2 | Fix Unity build on Windows | dev | qt/qtconnectivity | Status: MERGED | +2 | 0 |
| 654078,2 | Fix Unity build on Windows | 6.10 | qt/qtconnectivity | Status: MERGED | +2 | 0 |
| 654087,2 | Move Unity build exclusions to the correct location | 6.10 | qt/qtconnectivity | Status: MERGED | +2 | 0 |
| 654112,2 | Move Unity build exclusions to the correct location | dev | qt/qtconnectivity | Status: MERGED | +2 | 0 |
| 654239,2 | Fix Unity build on Windows | 6.9 | qt/qtconnectivity | Status: MERGED | +2 | 0 |
| 654240,2 | Move Unity build exclusions to the correct location | 6.9 | qt/qtconnectivity | Status: MERGED | +2 | 0 |