summaryrefslogtreecommitdiffstats
path: root/configure.cmake
Commit message (Collapse)AuthorAgeFilesLines
* Enable static jpeg featureMichal Klocek2022-06-121-1/+0
| | | | | | | | | All required qtbase dependencies has been updated long time ago. Change-Id: Ibcf2b8d5397980d8b51a829b580e12a899ded1f8 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit ba4314a4392ac0e86b7d7b47bf5ef01035628db2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Do not compile qtpdf 6.3 against 6.2Michal Klocek2022-05-161-0/+1
| | | | | | | | | | | We do not support building QtPdf against older version. There are some complains form moc compiler about missing Q_OBJECT macros when doing build against 6.2, simply disable the build. Change-Id: I7a9be5ec51400b39353d17d0d26146dd572f6ba2 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Support cross-compilation on macOSMichal Klocek2022-04-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | So far we only supported a cross-compiling with universal builds, however qmake also supports 'regular' cross compilation (by setting '-device-option'). This is semi-supported with qt-cmake as we need to provide additional configure defines like: * CMAKE_OSX_ARCHITECTURES=arm64 * CMAKE_SYSTEM_NAME=Darwin * CMAKE_OSX_DEPLOYMENT_TARGET=10.14 It might seem to be a far fetched issue, however in case of webengine doing the cross compilation for only one architecture allows to save compile times when testing only arm64 builds. Note we do not need to create gn toolchains for that case, however unlike universal builds it requires host qt build for tools. Change-Id: Ica8470fdd4cad4866c1470e0403ffd019eaf39a6 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit ba74eaba11b2df9d6c2b23f7595e7bb1a03e911e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix detection of then webengine-system-[gn|ninja] featuresJoerg Bornemann2022-04-141-7/+27
| | | | | | | | | | | | | | | Regexp matching against the build dir fails if the build dir contains characters that would form a regular expression. Worse, the regex could be malformed, and configuration would abort. Also, renamed the features from webengine-system-* to webengine-build-* to reflect what they are actually used for. Task-number: QTBUG-102323 Change-Id: I1b5f2bb156aaa7797fc059517a0d18c7d1cf9fd6 Reviewed-by: Michal Klocek <michal.klocek@qt.io> (cherry picked from commit f923582e8b2d73c6d05860652fb79e12784edaa5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix build with libc++Qt Submodule Update Bot2022-04-071-1/+4
| | | | | | | | | | | | | Fix build with libc++ on linux by adding missing use_libcxx parameter. Check if re2 and poppler can be used as they use std::string in their api. Add compiler test to check that. Change-Id: I74bf79b8443ad470621c1a2e0c9dc768d4cca1f1 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 288f60442fefa717dfc3c7587f1d480910b50874) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add static builds for qtpdfMichal Klocek2022-03-101-0/+45
| | | | | | | | | | | | | | | | | | | Add 3rdparty installed headers so static builds can use bundled qt libs. Fix static gn and archiver/librarian setup. Updates 3rdparty: * 5d88de975 Fix static build with qt3rdparty libs Task-number: QTBUG-87154 Task-number: QTBUG-88614 Change-Id: Iad7682da92b558b500140f415acc0bc9c9a1c22e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 99d77b9f1eed817cb3eae68d9e7224a01d55d656) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Fail gracefully when using an unsupported CMake versionAlexandru Croitor2022-03-051-0/+10
| | | | | | | | | | | | | | | | | | | Previously if qtwebengine was configured with a CMake version lower than 3.19, CMake would exit with a fatal error saying the version is too low. Now the CMake version check is delayed to the configure summary which changes the hard error into a build time warning instead, just like with all the other repo requirements. An additional cmake_minimum_required call is used to require all 3.19 behaviors (upgraded policies) once configure establishes that the CMake version is new enough. Change-Id: I03a20ae62ce2dcee23e5615241c6c97a86df4d2f Reviewed-by: Michal Klocek <michal.klocek@qt.io> (cherry picked from commit 0332065357a5f65bb43d113f99a7138d0bc65261) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix required harfbuzz versionMichal Klocek2022-02-171-1/+1
| | | | | | | | | | We need at least harfbuzz 2.9. In ci qemu has outdated harfbuzz, so use bundled one. Change-Id: Ie6bcde1fba54d5f213741df02e1542d388d3ded0 Reviewed-by: Michael Brüning <michael.bruning@qt.io> (cherry picked from commit 35a1ffb234ef5dd32c00a30c7ab6236c926da8f9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add QtPdf iOS buildsMichal Klocek2022-02-081-3/+9
| | | | | | | | | | | | | | | | | | | | | | | QtPDf iOS builds must support fat libs builds. Compared to 5.15 however this is done differently. Before we tweaked gn to compile multi arch with 'Xarch' parameter. This had few downsides as we could not determine which arch/cpu compiles given file as compilation was opaque to gn. The current approach is to follow mac universal builds, compile builds separately for each architecture and lipo the outcome. However, this introduces some issues as ios builds are static builds and creating lipo archive will gather object files, which should end up in final QtPdf lib instead. Therefore create multi arch object file instead of archive and use this one. Note the compiler now uses arch triple for Pdfium as Chromium does, however qt files still use 'arch' and '*-version-min' combination. Task-number: QTBUG-88614 Change-Id: I7775c8b4d1554df497eb61fa6187f12c00b9032d Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> (cherry picked from commit 8998563677e3f308083ba1c4c28efd6fe3d850f7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Search PYTHON3_PATH for Python3Allan Sandfeld Jensen2021-12-071-4/+7
| | | | | Change-Id: If9de5a87ff7c398a198a31fd4fd20858e82bec7e Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Lower requirement to Python 3.6Allan Sandfeld Jensen2021-12-071-2/+2
| | | | | | | This is the version available on RHEL, and appears to work. Change-Id: I150138cc64b5a796acaeed838a8ec685d4a38c86 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Adaptations for Chromium 94Allan Sandfeld Jensen2021-12-021-5/+18
| | | | | Change-Id: I9fb8998a3a7762b0aea70993ca231f0bbf4f7761 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Add a support check for windows 10 sdk versionMichal Klocek2021-11-101-0/+12
| | | | | | | | | Check for windows 10 sdk was missing, add it back. Fixes: QTBUG-97836 Pick-to: 6.2 Change-Id: I5551a217aff3e6f730aaec014d96c0d6ce7e396f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Clean up build optionsMichal Klocek2021-10-281-18/+31
| | | | | | | | | | | | | | We can configure webenigne repository with FEATURE_qtpdf_build and FEATURE_qtwebegine_build so make them public. The handling is still affected by QTBUG-96936,however private vs public features will most likely get better handling soon. Fix build summary to better reflect build options. Pick-to: 6.2 Change-Id: Ic6ef54a68b68d0f05c520a058665e6294efbe041 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Support more module flags for 'configure' scriptKirill Burtsev2021-09-091-1/+23
| | | | | | | | | | | | Support flags passed to main 'configure' and separate 'qt-configure-module' scripts with flags like '-no-build-qtpdf', '-webengine-full-debug-info', '-no-webengine-jumbo-build', etc. Fixes: QTBUG-95717 Pick-to: 6.2 6.2.0 Change-Id: Ia12602e9a9b31f4f2256f983f6c1e3fbe50cb9e3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Remove protobuf from configureMichal Klocek2021-09-061-6/+0
| | | | | | | | | It was removed in ed0f3c2e in qmake, but the change was omitted in cmake port. Pick-to: 6.2 Change-Id: I499c487d15ec1fcee2c407c7dcd44a097d042070 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Enable no widgets buildsMichal Klocek2021-09-041-1/+1
| | | | | | | | This enables compilation on one more coin node. Pick-to: 6.2 Change-Id: I4e8079c6efd7476ce62fc9512de211e91b101a82 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Enable no opengl buildsMichal Klocek2021-09-041-1/+1
| | | | | | | | | | | | | By mistake opengl was marked as required library, but should be just optional. Fix compilation issues. This should enable build on yet another coin node. Pick-to: 6.2 Change-Id: Id87404928e6b042d902fcfe0a7fed99a6806456f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add workaround for not working linking with bfd linkerMichal Klocek2021-08-291-0/+9
| | | | | | | | | | | | | | | | | Removal of external project removed also workaround for coin bug, which is still not fixed. Add linker launcher in case maximum number of open files is below 4096 on linux for WebEngineCore target. This launches bash script wrapper which sets ulimit. This is poor man workaround and requires cmake 3.21 to work. Task-number: COIN-699 Task-number: QTBUG-95590 Pick-to: 6.2 Change-Id: Ib9d0c4ced988d4692746e51f3abbe63ff5085836 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Rewrite gn-cmake integrationMichal Klocek2021-08-291-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous gn-cmake integration was driven towards having the complete cmake build tree which included gn build artifacts. These were marked as IMPORTED in cmake build files, this way cmake "knew" all object files and static libs coming from gn. To achieve that we needed to run the cmake configure twice. First to feed gn with the build information from cmake and then the second run to import all the build information to cmake based on gn run. As a side effect of this the first run cmake was creating incomplete targets, so we could use generator expressions to gather all the data needed for gn run. The second run of cmake was able to create fully initialized targets. We used 'external project' to run cmake the second time. This approach worked well when doing "module" builds and having two targets, one in the main project and one in external was not an issue. Moreover, this approach could be integrated nicely since CI does only "module" builds. Unfortunately "top level" builds are implemented to import all qt targets into one build tree. This created issue for qtwebengine since fully initialized targets were 'hidden' by 'external project' and including half baked (dummy) targets from the main project resulted in bunch of issues related to the dependency tracking and build race conditions. Also using 'external project' complicated installation rules and in the end installation worked differently than in other modules. With current approach we use response files, so we hide all build artifacts coming from gn and feed cmake with those response files. This way we run the cmake configure once and we create all the targets once. Using rsp files hacks linker options in cmake, so this approach is sub-optimal, however allows to have working "top level" builds. It is worth mentioning here that the final module linking has to take place with cmake's part of build since doing one static lib in gn is not possible due to the toolchain limitation (msvc is not able to process static libs over 4Gb and has no support for thin archives, so only a shared lib is doable at time of writing) Following changes are made: * remove 'external project' for qtwebengine target, we keep it however for ninja ,gn and a host project * call gn from cmake in a scripting mode during build and not configure run, this way BUILD.gn is assembled as a build step so after generator expressions are executed * BUILD.gn is assembled now from 4 files: - root template BUILD.root.gn.in - compiler data gn_config_c.cmake, gn_config_cxx.cmake - sources data gn_cofnig_target.cmake * since we use gn wrapper script use gn.args file to pass arguments instead of a command line, so this file can be now easily modified when running gn and ninja 'manually' * since a script mode does not support handling of properties with TARGET as such, use the DIRECTORY scope in some of our functions which handle GN_TARGET * use qt_build_repo() in main CMakeFile and remove all coin and top level build hacks * remove 'external project' for examples and tests, this is no longer required as all qt targets are not hidden by external project * remove leftovers from gn feedback call used for GN_TARGET * improve installation rules, WebEgineCore target is not by default installed during build, therefore we need to copy resources and translations to root so tests and examples still can be built without a module being installed first * adjust GN lookup paths, we look for gn in main configure and during scripting mode when gn is executed Fixes: QTBUG-94349 Fixes: QTBUG-94709 Fixes: QTBUG-94922 Fixes: QTBUG-94997 Fixes: QTBUG-95051 Fixes: QTBUG-95152 Fixes: QTBUG-95158 Fixes: QTBUG-95972 Task-number: QTBUG-95231 Task-number: QTBUG-95590 Pick-to: 6.2 Change-Id: I5e7a34287ee59d904103fe310fc7c6a36a8dfbc9 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Currently we require ICU >= 68Allan Sandfeld Jensen2021-08-181-1/+1
| | | | | | | Pick-to: 6.2 Fixes: QTBUG-95564 Change-Id: Ic3d018b9f3be245a382baf169ba4231663aa0b3d Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Add QtPdf to cmake buildMichal Klocek2021-08-171-44/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Port QtPdf to Qt6: * QtPdf,QtPdfWidgets,QtPdfQuick libs * QtPdfQuickPlugin, QtPdfPlugin (imageformat) plugins * widget and quick examples * qtpdf tests To fit gn cmake integration and new repo layout code is a bit reshuffled. Compared to qmke build following features are not ported yet: * ios fat libs * qtbase 3rdparty static dependencies WebEngine build can be skipped with setting QT_FEATURE_qtwebengine_build=OFF Note this patch needs follow up for 6.2 branch to disable qtpdf builds by default, since this should not part of qt 6.2 release. Pick-to: 6.2 Task-number: QTBUG-95353 Change-Id: I4dd9f3934bdd478fb6d2fa686074a24d91f09953 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* CMake: use correct condition for system gnSamuli Piippo2021-08-031-1/+1
| | | | | | Pick-to: 6.2 Change-Id: I853adbd3fcf2f5e34a1ddd10e4f9a971a65d03b9 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Apparently we build fine with node.js 10.19 on UbuntuAllan Sandfeld Jensen2021-07-251-2/+2
| | | | | | | | Fixes confusing configure output Pick-to: 6.2 Change-Id: I17812524e3452d3b271a677d3877d1365ccfc38f Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Add support for macOS universal buildsAllan Sandfeld Jensen2021-07-221-9/+1
| | | | | | Pick-to: 6.2 Change-Id: I416036a925167204cf5121108922911bce854352 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Add cross compilation support to cmake buildsMichal Klocek2021-07-161-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. Task-number: QTBUG-91760 Change-Id: Ic2bea12229acc71fbd36a848e9ed4fed7e14b485 (cherry picked from commit 3a962d8a2d3b70639a195fe5fd442f6c653bbe8f) Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Adaptations for 90-basedAllan Sandfeld Jensen2021-07-081-1/+4
| | | | | | Pick-to: 6.2 Change-Id: I8402b044d8e12d75e144a00984b856f3de10bffd Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Add checks for xrandr and xdamageAllan Sandfeld Jensen2021-06-281-2/+4
| | | | | | | Pick-to: 6.2 Fixes: QTBUG-94759 Change-Id: Ie9a8fffc93fdf5564959965baae1ef9391f3307c Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Fix cmake build error when missing Python2Dimitrios Apostolou2021-06-201-2/+2
| | | | | | | | | | | | | | Fix the following error: cd /path/to/qtwebengine/build && cmake -E cmake_echo_color --red QtWebEngine\ will\ not\ be\ built:\ Python\ version\ 2\ (2.7.5\ or\ later)\ is\ required. /bin/sh: 1: Syntax error: "(" unexpected ninja: build stopped: subcommand failed. Fix also an identical issue spotted a few lines underneath. Pick-to: 6.2 Change-Id: I7ce667c182b48c0557bf52b67defc375e67134d6 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Enable native arm64 builds on macOSMichael Brüning2021-06-141-8/+4
| | | | | | | | | Chromium builds on arm are still experimental, but we want to enable them in the CI in order to see when things break. Pick-to: 6.2 Change-Id: I9e37fd97eb5a3dc680dc16404c22b97f780b4b9f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Make qt-configure-module workJoerg Bornemann2021-06-071-11/+18
| | | | | | | | | Check for QT_CONFIGURE_RUNNING and - don't call find_package - define stubs for functions that are incompatible with qt-configure-module Change-Id: I2032302c25e1bcac6939a665cd6f136de8421acf Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Skip static buildsMichal Klocek2021-06-041-0/+5
| | | | | | Fixes: QTBUG-94189 Change-Id: Ieb3818410435af979309da7cda50f8ed3fca9023 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Disable cross compilation for linux for the momentMichal Klocek2021-06-011-1/+1
| | | | | | Task-number: QTQAINFRA-4459 Change-Id: I7d84f14340f7a755ce4c2816d3f62f340139b4de Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Do not build for windows arm64Michal Klocek2021-05-281-1/+7
| | | | | | Task-number: QTBUG-94065 Change-Id: I6993e33a2112c3c4bc4596b6d38df6f2fb136afa Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add support for gn versionMichal Klocek2021-05-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* Skip build on mac arm64 for nowMichal Klocek2021-05-221-1/+12
| | | | | Change-Id: Ic41babce600955029f1b3cd630707408136a0f65 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add examples to the cmake buildMichal Klocek2021-05-221-1/+0
| | | | | | | | | | | | | Add only quick and widget examples to the build for now. Update examples qmake files so the ci can also build qmake examples after the cmake bulid. Note this patch breakes qmake builds. Task-number: QTBUG-91760 Change-Id: Ia867a49bc3deab1967bdedcf525ad4afe3967c2a Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add configure.cmake filesMichal Klocek2021-05-121-0/+462
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>