| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Change-Id: I70375cabda3282e9dc1aa1a8e0513522abbcd383
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit c23cc454e67ea0fa52e56c82d51f67a1dcf282de)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
| |
Call qt_apply_rpath like for Qt tools or apps.
Fixes: QTBUG-96093
Change-Id: I22c670ede70ba52d1255bb362519d152a227f5f3
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit 9b47a27441a3a80e2c45bd69334c4236f90865bc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
Fixes: QTBUG-95571
Change-Id: If1a14f5cd5b9428e4c6265c5464b071fd8320562
Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
(cherry picked from commit 16a4b10877ca7cdcd733bdf902e58f362ddb6e95)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In 09e5da6ac44c01ae0de34b789c42da515e82f07c, we pass "NO_INSTALL" to
qt_internal_add_executable(), so we have to handle some installation
issues manually.
Use qt_get_cmake_configurations() instead of get_install_config().
Because get_install_config() only returns the first config in a
multi-config build, this causes the debug executable not installed.
We can install the debug executable to ${INSTALL_LIBEXECDIR}/Debug, like
other executables, to avoid conflict with the release executable. But
this will make installation codes very complex. So I propose to restore
Qt5's behavior for it , add a "d" suffix to the debug executable and
install both executables to ${INSTALL_LIBEXECDIR}. This can also avoid
breaking windeployqt's logic of finding the debug executable of
QtWebEngineProcess.
Also adjust the output directory property to place executables under the
correct directory. The release executable should be placed under
${QT_BUILD_DIR}/bin rather than ${QT_BUILD_DIR}/bin/Release. Given that
the debug executable now has a "d" suffix, it can also be placed under
the same directory.
And install PDB files manually because QtWebEngineProcessd.pdb should be
installed to ${INSTALL_LIBEXECDIR}, but qt_internal_install_pdb_files()
will install it to ${INSTALL_LIBEXECDIR}/Debug.
Change-Id: I38b5e8d9ed939b88de86ab5722dd56777442ed03
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit 7846457b067491ffb289e625282b1e89074253ee)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Pass NO_INSTALL, so that QtWebEngineProcess is not
installed into INSTALL_BINDIR. We have explicit install
rules further down below.
Fixes: QTBUG-95153
Change-Id: I2dfae1e8a6bb9183d25590b7ba5cdb136252a1e4
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit 09e5da6ac44c01ae0de34b789c42da515e82f07c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
| |
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>
|