summaryrefslogtreecommitdiffstats
path: root/cmake
Commit message (Collapse)AuthorAgeFilesLines
* Add support for macOS universal buildsAllan Sandfeld Jensen2021-07-231-10/+117
| | | | | | Change-Id: I416036a925167204cf5121108922911bce854352 Reviewed-by: Michal Klocek <michal.klocek@qt.io> (cherry picked from commit 35144cbc3a285029574ea3ef45e4a6790f9607e4)
* Improve toolchain generationAllan Sandfeld Jensen2021-07-221-25/+63
| | | | | | | | | | Set is_clang and calculate v8-host arch for other hosts than x64. Change-Id: I5622839840141ed60328c8bd736e4cada3e0ecee Reviewed-by: Michal Klocek <michal.klocek@qt.io> (cherry picked from commit 9196f743cec64840c711d00a8e906b480ba1451e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* White-space fixes in Functions.cmakeAllan Sandfeld Jensen2021-07-221-97/+97
| | | | | | Change-Id: I124b4d6c30debe46f9929576620afb1b3a73837e (cherry picked from commit 19e27a6acfd967b0b4213da963bdc556108036bb) Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Refactor cmake buildMichal Klocek2021-07-221-1/+275
| | | | | | | | | | Add macros to share common cmake code blocks with QtPdf. Reconsider later to do proper scoping and change those to functions if make sense. Change-Id: I500acdba1415feab373a012dcf9a9ddedf33cfac (cherry picked from commit b3031066d17ef01802a4c9752f87675d6a4a1df5) Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add arm optimization flags to cmake buildMichal Klocek2021-07-071-0/+55
| | | | | | Pick-to: dev Change-Id: Ibab4630fd226f46f58d08c603436dc2c378212ec Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add cross compilation support to cmake buildsMichal Klocek2021-07-024-6/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add arm cross-compile basic support. CMake does not support host builds. However we do host build with gn and changing that would require an extra effort to keep all necessary changes with Chromium upstream. Therefore let gn to perform the host build for required tools and just feed gn with all the build data. Add new build steps: * install gn into QT_HOST_PATH/libexec. * run hostBuild project to get native architecture and compiler * call PkgConfigHost to pass pkg-config paths to gn * create wrapper script for host pkg-config to escape yocto shell pkg config exports This change also splits gn toolchain into 3 toolchains host,target,v8 Now hostBuild provides host and v8 toolchain in case of cross compile. The build optimizations will follow in another patch. Fix not existing 'boot2qt' condition and enables more test on QEMU. Note this is tested only with yocto based images. Pick-to: dev Task-number: QTBUG-91760 Change-Id: Ic2bea12229acc71fbd36a848e9ed4fed7e14b485 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix embarrassing typoMichal Klocek2021-07-011-1/+1
| | | | | | | | | | | | During testing topLevel build vs module build and moving patches between two repositories typo occurred. Fix incompetence. This is fixup for 82769967d3. Task-number: QTBUG-94343 Change-Id: I0f708288c312c4f1f3fb1ae30ca6cee957718b1f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 2eb0431c78b9854673f82a72e5d458339055c95f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add implicit dependencies in case of topLevel buildMichal Klocek2021-06-301-0/+12
| | | | | | | Change-Id: Ic7a4096d06b05a62a01565d6e7aceac12dc73def Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 7237c81bf20571fac2f898e7e29e7be386e3270a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix issues with missing headers for topLevel buildsMichal Klocek2021-06-301-1/+1
| | | | | | | | | | | | | | | Sync script is run by topLevel build during first configure phase. Move sync.profile to module root dir, and run sync script twice during the topLevel builds. This will work since sync script will look up in parent directory for sync.profile for libs external build. Fixes: QTBUG-94343 Fixes: QTBUG-94709 Task-number: QTBUG-94702 Change-Id: Icb80d9248ee4611317ab0fba9aa988f8e5ee8073 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 82769967d385c3037cfe2decb6687abdf23035f9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Ensure libs project is reconfigured when the root project isAlexandru Croitor2021-06-151-0/+20
| | | | | | | | | | To ensure that correct CMake and qmake support files are used when building examples. Change-Id: Ic52ee7f7153877071ab3883fd436ad888f90680d Reviewed-by: Michal Klocek <michal.klocek@qt.io> (cherry picked from commit f04bc6833c01efc0fb37d6f6c31c6fa427087664) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add spellchecker support and qwebengine_covert_dict to cmakeMichal Klocek2021-06-151-0/+34
| | | | | | | | | | Add spellchecker dictionary conversion tool. Change scope of gn object imported variables to function scope. Change-Id: Ice579a89e20b80034b675e7f767a774100478472 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 9451ceee24e832d32a86ae6a2f37eea781acaa2f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add support for gn versionMichal Klocek2021-05-281-3/+22
| | | | | | | | | | | | | | | | | | | | | | | | Check the version before using gn, since some systems can have already gn installed. In case of cross builds gn is installed into host qt and can simply end up in /usr/bin path of x86_64 sysroot in case of yocto builds, meaning it will be picked up by the host system path. Moreover, findGn.cmake is also going to be installed and should not just look for non existing builds paths. One can also avoid pointless recompilations of gn for every single clean build. Gn can be easily installed by simply building the "gn" project: cmake path/to/qtwebengine/src/gn cmake --build . --parallel cmake --install . Note setting DCMAKE_INSTALL_PREFIX and/or DESTDIR can install gn to desired location. Change-Id: Ie8f989c838dad2e6e7e346a4f6a861e187ec037f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add windows to the cmake buildMichal Klocek2021-05-221-0/+3
| | | | | | | | Fix cmake for windows builds and add QtWebEngineSandbox target. Task-number: QTBUG-91760 Change-Id: If962a81ddfb509d104ad8ffbfbf34f1150ae82ce Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add mac builds to cmakeMichal Klocek2021-05-221-8/+59
| | | | | | | | | | | We need to pass -F or -iframework to gn as a compiler flag, however cmake keeps this parameter as include dir and adds internally "-iframework QtFoo.framework/.." for the compiler call. This internal handling can not be accessed with the genex. Add the manual conversion. Task-number: QTBUG-91760 Change-Id: Id12831432ccb0516be52f79bd5f6cfcbe7e87d9c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Refactor and create gn targetMichal Klocek2021-05-221-8/+153
| | | | | | | | | | | | | | | | | Refactor the gn handling and add: * the gn target for encapsulating resources needed to run chromium builds * the support for SOURCES, INCLUDES, DEFINES, COMPILE OPTIONS. * the multi config support for cmake and enable debug, release builds * CONDITION evaluation for the gn target and the gn arg list * the linux specific config and all missing source sets * use REALPATH instead of ABSOLUTE, this fixes missing drive letter on windows Task-number: QTBUG-91760 Change-Id: Ib283d8ab817ff36ee9c94c2b8f44785709c45258 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add QtWebEngineCore module cmake buildMichal Klocek2021-05-191-0/+39
| | | | | | | | | | | | | | | | | | | | | Create QtWebEngineCore, QtWebEngineProcess and drive headers sync from the libs project. Main project build should not generate any header files, since the logic in qtbase assumes fixed QT_BUILD_DIR, which is by default CMAKE_BINARY_DIR for prefix builds. Drive all syncqt calls from the libs project and leave the main build just for the feature evolution and the build summary reporting. This fixes header installation issues, however this patch requires also sync.profile update which is done later, to keep the qmake build still functional. Note this patch only adds debug builds for linux. Task-number: QTBUG-91760 Change-Id: I516c26206baa1cf6b966629a694dadce7f79dbec Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Pass qtfeatures from the main project to the lib projectMichal Klocek2021-05-121-0/+17
| | | | | | | Task-number: QTBUG-91760 Change-Id: I56aaf6af42eb1877acbc0faf4e125bc8de4c72fb Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add configure.cmake filesMichal Klocek2021-05-124-0/+128
| | | | | | | | | | | | | | | | Only evaluate features in the super repo and do not create config headers files during the configure step. However, print the build summary. The build config headers will be created during the configure step of 'libs' external project. Done-With: Jüri Valdmann <juri.valdmann@qt.io> Done-With: Allan Sandfeld Jensen <allan.jensen@qt.io> Task-number: QTBUG-91760 Task-number: COIN-711 Change-Id: I481525571e71ca4684de5827f641416035a8f22a Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Setup cmake projectMichal Klocek2021-05-122-0/+54
Add the top level cmake project and ninja and gn cmake builds. Make ninja and gn build optional. With qmake we had four stages during the build: * configure (initial dependencies check) * qmake (build ninja, build gn, run gn) * make (compilation) * make install With cmake we have some limitations: a) we need to pass the build config to gn, however cmake evaluates generator expressions during the generation phase this means we need a recursive call to cmake b) qt-cmake qtbase logic (+syncqt) assumes "fixed" build locations to handle deployment of headers and libs (it uses CMAKE_BINARY_DIR for QT_BUILD_DIR) c) cmake can not run twice in the same build directory d) running recursive/child cmake, makes all generated targets not accessible during configure time of parent's cmake e) cmake can only "build" things for subdirectories To deal with mentioned limitations and to keep things simple we will split those steps into separate projects: * SUPERBUILD - this project does dependency checks, only evaluates features to show the build summary and passes them to EXAMPLES,LIBS,TESTS projects, it also runs the generator expression to feed LIBS project's cmake, it does not try to run syncqt as result of (b) and (c) * NINJA (build ninja) * GN (build gn) * LIBS - projects runs simplified feature evaluation (CONDITIONS resolved by SUPERBUILD cmake) to generate build headers (+syncqt), it also runs gn during configure and does all libs compilation. The project's source root must be "src" directory as a result of (a),(b),(c) * EXAMPLES - builds examples as a result of (d),(e) * TESTS - builds tests as a result of (d),(e) Each of projects will have three stages: configure, compile, install. Task-number: QTBUG-91760 Done-With: Jüri Valdmann <juri.valdmann@qt.io> Change-Id: I3b44decefa17f177e5e07c563796aa158a0b0ecb Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>