| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Resolves an error on gn_config_cxx.cmake include:
CMake Error at src/pdf/RelWithDebInfo/x86_64/gn_config_cxx.cmake:4:
Parse error. Function missing ending ")". End of file reached.
Lists for config vars may contain values, like -Wno-error=#warning
for GN_CXX_COMPILE_OPTIONS, which cause parsing errors and should be quoted.
Change-Id: I983f5b23c9013d55f728ffe4354f6abbb0db1911
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit 48da2963211070f8568407c4f79fece7bdfd88ea)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since 9f4914248 we have poor man workaround for
broken rsp files on windows with cmake. It requires
copy of rsp files to directory where the linker call
takes place. Adjust the output directory for
super build.
Fixes: QTBUG-96266
Change-Id: Ib09add2d6069782ba25a820e950759932eefc457
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 16b2059e0c1990e1533e4222da5f899650e4078e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
| |
Updates Chromium with:
* f8a944bbe5f Add support for mcpu
Change-Id: I3f9d31f3ec99badd62d82fca911bee22dde5985f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 19264c2d2c8b3b04cf08e55358251185c3b339b9)
(cherry picked from commit 2ae514322a48002415b68e16f38851502bc8717f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We used IMPORTED_LOCATION for getting moc path,
however this will not work in case of top level builds,
since moc is not "imported", we can not use LOCATION
due to https://cmake.org/cmake/help/latest/policy/CMP0026.html
Use generator expression to set the moc path for gn.
Clean up RSP_PREFIX leftover from previous gn version.
Note QtPdf does not even need moc setup since we just need
pdfium library.
Task-number: QTBUG-95590
Change-Id: Ief3dca96f65e198e9693293316b1a90007c56355
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 53e99bd479f74c5399664d26e35e392875da8fb5)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
Change-Id: Ib9d0c4ced988d4692746e51f3abbe63ff5085836
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit c18a4d6f354838ea3edfb18d31007237dad08aa6)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
Change-Id: I5e7a34287ee59d904103fe310fc7c6a36a8dfbc9
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit bd75c51f2a7f7384d3303e86764211cb3e32f03d)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This should be part of previous patch, however it deserved
separate commit message with explanation.
On windows cmake generates ninja rules with
cmake wrapper for linker in form of:
cmake.exe -E vs_link_dll
vs_link_dll internal command unfortunately expands all
rsp files passed to liker before calling it (it looks for '@')
and also swaps the order. This ends in bogus linker call.
Make a workaround based on:
https://github.com/Kitware/CMake/blob/master/Source/cmcmd.cxx#L2102
Use response files prefixed with 'CMakeFiles' so internal
command of cmake will skip the processing. Since
rsp files must now start with filename and not with filepath
we also need to copy them to directory where we call the
linker.
Task-number: QTBUG-95590
Change-Id: I8e96ebf3a9ac7c7d751db6682ce37f38880be793
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 9f4914248a2bf447d4728bc6bc8361dbbfc8709f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Do not use gn created cmake files since this requires
cmake configuration step, which currently ends up
in duplicated targets in main and qtwebengine external
project. Use response files instead, so we can remove
duplicated targets in follow up patches. This approach
unfortunately has downside of cmake not being aware of
gn build artifacts and hacks directly linker command.
For universal builds remove not needed rsp template,
since we can now use rsp files directly generated by gn.
Task-number: QTBUG-95590
Change-Id: I83282ba68fa171cada7236d0587be27122315dec
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 96e47e1c9b6ce5c71e2560bb95f6e59ce062c8ba)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
Task-number: QTBUG-95353
Change-Id: I4dd9f3934bdd478fb6d2fa686074a24d91f09953
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 79d04aa9e3e9aa84d7378260519f9e9a6759dc41)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently we get hangs on ci, to investigate
the issue go through current cmake code and:
* remove all dummy ninja targets
* remove implicit dependencies
* build dir in form of buildDir/config/arch
* separate ninja call for sandbox
* separate ninja call for covert_dict
* clean up universal build
* change handling of rsp files, so they are generated
during build and not configure time
* refactor functions so universal build can be
easily used by follow up qtpdf patch
Change-Id: Id4a6c61b87fe76832232035fddf212b57051d0ec
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 58b787cbad581914367aea4604993cce30a65d06)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
| |
Change-Id: I416036a925167204cf5121108922911bce854352
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit 35144cbc3a285029574ea3ef45e4a6790f9607e4)
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I124b4d6c30debe46f9929576620afb1b3a73837e
(cherry picked from commit 19e27a6acfd967b0b4213da963bdc556108036bb)
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Pick-to: dev
Change-Id: Ibab4630fd226f46f58d08c603436dc2c378212ec
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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 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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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 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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Task-number: QTBUG-91760
Change-Id: I56aaf6af42eb1877acbc0faf4e125bc8de4c72fb
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
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>
|