When one specified a prefix "/usr/qt5" on Windows for a non-Windows
target (e.g. QNX) that prefix was translated to "C:/usr/qt5" and
passed on to the Makefiles, for example as
"-Wl,-rpath,C:/usr/qt5/lib".
The reason was that we called $$absolute_path on the user-specified
prefix. However, absolute_path operates according to the rules of the
host operating system.
When cross-building, the prefix is an on-device path. Therefore we
must not attempt to make it absolute to the build directory.
The check whether we're cross-compiling looks a bit arcane, but we
cannot use $$qtConfEvaluate(features.cross_compile) at this stage of
configure. Instead, we use XSPEC (set up by qtConfOutput_prepareSpec)
and $$[QMAKE_SPEC] which is the right host mkspec.
Fixes: QTBUG-79214
Change-Id: Id8664f8512cf1d9e178054a38e72323d7929547d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
[ChangeLog][QtCore] Qt installations on the host system can now be
relocated, i.e. moved to other directories.
Add a new feature 'relocatable' that's by default enabled for
non-static builds
- on platforms where libdl is available,
- on macOS when configured with -framework,
- on Windows.
If the feature is enabled, the directory where plugins, translations
and other assets are loaded from is determined by the location of
libQt5Core.so and the lib dir (bin dir on Windows) relative to the
prefix.
For static builds, the feature 'relocatable' is off by default. It can
be turned on manually by passing -feature-relocatable to configure. In
that case, QLibraryInfo::location(QLibraryInfo::TranslationsPaths) and
friends will return paths rooted in the user application's directory.
The installed and relocated qmake determines properties like
QT_INSTALL_PREFIX and QT_HOST_PREFIX from the location of the qmake
executable and the host bin dir relative to the host prefix. This is
now always done, independent of the 'relocatable' feature.
Note that qmake is currently only relocatable within an environment
that has the same layout as the original build machine due to absolute
paths to the original prefix in .prl, .pc and .la files.
This will be addressed in a separate patch.
Task-number: QTBUG-15234
Change-Id: I7319e2856d8fe17f277082d71216442f52580633
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-android-toolchain-version is not needed anymore as we are using exclusively the llvm toolchain.
Change-Id: Ia033297a6a2c968352c364758eb1436380a5f96e
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
Move hardcoded date to the only client code in the repo.
This field is currently modified by MaintenanceTool and possibly windeployqt,
which contributes to breaking the DLL signature on Windows. Removing the field
should avoid this problem.
Task-number: QTBUG-76985
Change-Id: I01386136ac493ea50c99c05879a3e215f3f6344c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This configure parameter is useful to compile Qt only for a selected ABIs.
The old parameter, -android-arch, does the same thing, it's kept for compatibility.
[ChangeLog][Android] -android-abis configure script parameter useful to compile Qt
only for a selected Android ABIs.
Change-Id: I1f418c7e0914dd83b98d763e8cd8c09841e20fdf
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
If the host architecture is different from -platform (canadian cross
build with -external-hostbindir) then we cannot use QMAKE_HOST.os to
deduce the executable extension for that platform, because this value
comes from the qmake binary that was pointed to by
-external-hostbindir.
Move the target name deduction mechanism to the actual configure test
.pro files to make sure the right scopes are available, and write the
deduced target name to a text file. That text file is read by
qtConfTest_architecture to get the right binary to analyze.
Fixes: QTBUG-77286
Change-Id: I68b844dd51dbfda6432a4b0dca6331899c82255f
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Conflicts:
configure.pri
Also required s/solid\.color/solidColor/ in a couple of places in:
src/gui/painting/qpaintengine_raster.cpp
Change-Id: I29937f63e9779deb6dac7ae77e2948d06ebc0319
The host architecture detection binary's file extension is determined by
the host platform, not the target platform. Respect the host variable
that's set in configure.json.
This amends commit d9fb502.
Change-Id: I134cd7cf12d6a6fe458ac5e37c48dd311d6c4418
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Android is also unix, so can pick up the host 'arch' binary when
rerunning configure. This patch splits the names so we don't end up
confusing target and host binaries.
Task-number: QTBUG-76445
Change-Id: Ib65251a514e45ad8873f523d71c17e13e56ea58a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Makes it possible to build user projects and Qt with C++2a. It is not
automatically upgraded to yet though.
Change-Id: I949ce94871ddc53f21b7265a52b9c0e1370456c8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It is 2019, so the name c++17 is more than fixed by now.
At the same time remove an old restriction on using -c++std= with MSVC,
since VS2017 (15.7), we have been able to request c++14 and c++17.
Change-Id: I7129799a2e46301b7ec1322251a3805f4d6b20a8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The --sysroot flag is added to QMAKE_CXXFLAGS by the gcc-sysroot
feature. However, when the makespec is reloaded, it can overwrite
QMAKE_CXXFLAGS.
Save QMAKE_CXXFLAGS before re-loading the mkspec and add it to the
value from the makespec, like we do for CONFIG.
Fixes: QTBUG-74326
Change-Id: Ie1fb713e2ffc9641d6db8c682bc5175581cd5b5f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
This mode significantly improves build (link) time.
Opt-in by passing “-device-option WASM_OBJECT_FILES=1”
to configure.
This requires a custom emsdk build which uses upstream
llvm.
Task-number: QTBUG-72537
Change-Id: I47bab2b58ae7e49ca104233ec14fff7b93516d36
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg01240.html
This is currently only used for webengine, where link time really matters.
New configure options:
* force 'lld' '-linker lld' or' --linker=lld'
* force 'gold' '-linker gold' or '--linker=gold'
* force 'bfd' '-linker bfd' or '--linker=bfd'
Note before by default gold was always forced (if supported) now default linker
is system default one.
[ChangeLog][Tools][configure & build system] Added --linker=[bfg,lld,gold] configure flag.
Change-Id: Idaa13510da70243c6176b96db846d629cd65c7af
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
With the current distribution, this is 90% of active devices, and
it was released in 2014. Qt 5.12 is LTS and will continue to support
older Android versions for a long time to come.
This is to reduce the testing needed on outdated platforms and
allow ourselves to use some newer APIs unconditionally in Qt.
Android 21 was chosen because it is the minimum version that supports
64 bit builds.
[ChangeLog][Android] Increased the minimum supported Android version
to Android 5.0 (API level 21).
Fixes: QTBUG-70508
Change-Id: Ia7b4345e42ca05a25a292f11ccbb8cbd692cf8f0
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
we don't check for licheck at this stage any more.
amends 60e56f167.
Change-Id: I4f8d57100796dce99bd605835b25a954a6359d30
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
It is not always easy to spot the compiler version in the build or
configure log, so report it explicitly to make our lives easier when
trying to figure out why a specific build might have failed.
Change-Id: I1c84199aad4a98a30b0b4c4fbf2554008dc3ba2d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
The earlier NDK platforms do not support 64 bit architectures, so
configure would fail with a confusing message about problems in
the environment.
[ChangeLog][Android] Default to android-21 for arm64 builds instead
of failing.
Task-number: QTBUG-70280
Change-Id: Ib9846d6deee3d453fd4a17a3ae92306482d380ba
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
This is the squashed diff from wip/webassembly to dev.
Done-with: Peng Wu <peng.wu@intopalo.com>
Done-with: Sami Enne <sami.enne@intopalo.com>
Done-with: Morten Johan Sørvig <morten.sorvig@qt.io>
Started-by: Andrew Knight <andrew.knight@intopalo.com>
Change-Id: I6562433c0a38d6ec49ab675e0f104f2665f3392d
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
configure already does it for qt itself, so it's pointless to ever invoke
in default_pre.prf.
to make the exclusion work during the makespec reload during early setup,
we pull ahead the restoration of CONFIG, hoping it won't cause too many
side effects.
another change in qt5 will ensure that top-level builds are also covered.
finally, configure tests also need an explicit exclusion.
that way, attempts to re-configure build trees of commercial builds
after the day of the first configuration do not fail anymore.
Task-number: QTBUG-63452
Change-Id: I42264f64d7621784d4d67bde885a8e501f5ca413
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
9fde78269 fixed overrides for library definitions, but failed to fix
direct overrides of variables from mkspecs, like QMAKE_LIBS_OPENGL_ES2.
Task-number: QTBUG-69176
Change-Id: I818acf25f581903c323847382ec6baab38b64330
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
the sysroot flags need to be established even before setting up the
spec, because as soon as that happens, toolchain.prf will try to
determine the default paths and cache them.
this also fixes sysroot use in toolchain flag support tests, which run
(somewhat) independently from the toolchain setup.
Task-number: QTBUG-63483
Change-Id: I7be1540e766dac58fb16f63176aa8d2879b51ae0
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
the callback is specific to qtbase/configure.json, so it belongs into
qtbase/configure.pri.
amends d90db0f136.
Change-Id: I905f985e2d3d2e42c4587cbacdea8dc3eb09a5be
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Do allow people to build from git using the Qt License Agreement 4.0.
The license agreement text is the same as in the installers, except
that some Unicode characters got normalized to their ASCII variants,
and things have been properly wrapped.
[ChangeLog][Licensing] The commercial preview license in the git
checkout has been replaced by the Qt License Agreement 4.0 text.
This makes it explicit that commercial customers of The Qt Company
can use the git version under commercial terms. However, support
is (still) only provided for builds from released branches of Qt.
Task-number: QTBUG-52222
Change-Id: I9e99b68e236a09610b798ba7a841e5a9d1ce6898
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
this de-noises the code somewhat, and makes it possible to eval() the
code generated by $$qtConfLibraryArgs(), which we want to do later.
Change-Id: Ib6101c6745101801e34f8fab1ad6651e624130c7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
The configure unification accidentally changed it to /usr/local as used on
unix. Use C:/Qt again.
Task-number: QTBUG-61373
Change-Id: I758c639bdb07c97b55f990821e73a5135038f4a0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
... and make use of it.
it's a logical continuation of the 'arch' term, and will be used also in
qt3d's configure.
Started-by: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: I940917d6763842499b18fffd1514c96889a0cc63
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is necessary for WebEngine at configure time, to be able to query
which of the sanitizers was enabled in order to report unsupported
combinations.
Task-number: QTBUG-64726
Change-Id: I72f8efe4bed3e14114f885bdae16650f1f23b24b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
The qtConfAddNotice was a typo, so this note was missing from
config.log and the build would fail with no explanation.
Change-Id: Iae22f92c1ba6bdf96d41a7cc608b9aedd6863b1f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Since the x86_simd/main.cpp file already has all the source for each and
every test anyway, just reuse it.
Change-Id: I938b024e38bf4aac9154fffd14f779f450827fb9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This has two main benefits:
1) introduces a qmake CONFIG we can use in .pro/.pri/.prf files
2) removes the need to keep an up-to-date list of which compilers
support the feature
The test is implemented as trying to compile every single SIMD test we
currently have, but without passing the -mXXX option. The reason for
trying all of them is that some people may have modified their mkspecs
to add -mXXX options or -march=XXX, which could enable the particular
feature we tried, resulting in a false positive outcome.
Change-Id: I938b024e38bf4aac9154fffd14f7784dc8d1f020
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
When QMAKE_* variable assignments were passed to the configure line
they would cause the current contents of the private pro output to be
overwritten. This would cause anything added to it before the QMAKE_*
variable assignments to be parsed to be lost.
Change-Id: Idcb8cad5f07cbb96b4da204384f5618b95b375b0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>