Header files of modules that specify generated_privates are usually
not yet available at qmake-time. Thus, the installation rule must not
check for the file's existence.
Change-Id: Ifc7ff95422912d255744c9006382ff181176ae77
Fixes: QTBUG-71340
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This makes it much easier to have the version information set for an
Android APK without having to manually modify the AndroidManifest.xml
each time.
[ChangeLog][Android][qmake] Can now set the version name and code for
Android using ANDROID_VERSION_NAME and ANDROID_VERSION_CODE respectively
in the pro file.
Change-Id: Ie6813bc3a7444f7baa5e772b93bc2695d9b81e57
Done-with: Markus Maier <markus.maier@rosenberger.de>
Reviewed-by: Markus Maier <markus.maier@rosenberger.de>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Also catches some more variants of SDK mismatch, such as Xcode not
being installed at all, or the SDK missing.
Change-Id: I184aaa571ef0ea722ca64c54f665462dabc17533
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
If configure is called with -continue, it should not stop processing
command line arguments after encountering an invalid one.
Example:
configure ... -continue -quack -no-feature-gui
would ignore everything after -quack.
Change-Id: Ia5f0cb13414c9c0c7246ff0c72f8e935fe6dca3c
Fixes: QTBUG-72912
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
...and yield a warning that -skip has no effect in a qtbase build.
This is consistent with configure's help output and enables us to
always pass "-skip qtwhatnot", whether we're calling top-level or
qtbase configure.
Change-Id: Ie5b0791a6000d1d78b1367658ad86a92b2ec6a6a
Fixes: QTBUG-71253
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Integrity assembler doesn't understand NEON assembly statements.
Compiler enables _ARM_NEON_ and _ARM_NEON to indicate that NEON
intrinsics are available. _ARM_NEON_ and _ARM_NEON needs to be
disabled to skip handwritten assembly code paths in Qt.Auto-
vectorization is enabled without the flags enabled.
Task-number: QTBUG-72716
Change-Id: I84cfbf98bd2af47740a79f4b300c1801017ee22c
Reviewed-by: Tuukka Turunen <tuukka.turunen@qt.io>
Reviewed-by: Kimmo Ollila <kimmo.ollila@qt.io>
Reviewed-by: Timo Aarnipuro <timo.aarnipuro@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
After 521a85395d configure doesn't find
OpenGL libraries from QMAKE_LIBDIR, hence we use QMAKE_LIBDIR_OPENGL_ES2
and QMAKE_LIBDIR_EGL instead.
Task-number: QTBUG-73136
Change-Id: Iaeac46000c5d684f601741cbef91ce745ceb4ea2
Reviewed-by: Janne Koskinen <janne.p.koskinen@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>
This has been removed in emscripten compler version 1.38.23 and will
cause building apps to fail.
Change-Id: I7e58053ce06053f6f1d577377b503cabb035bb58
Fixes: QTBUG-73143
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
That target is added unconditionally at the end of windeployqt.prf.
Fixes: QTBUG-73018
Change-Id: I8d29691c30df64bf5383daa10e169985d47592f2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
The @executable_path relative framework directory is one step below
the executable, as in:
Foo.app/Contents/Frameworks
not:
Foo.app/Contents/MacOS/Frameworks
The former is what Xcode defaults to for new projects.
Change-Id: Id08f3f1d80f1c84d76fb71676c5df4a3a6b3da36
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Qt couldn't be configured with -system-zlib on macOS, because qmake
failed to find "/usr/lib/libz.dylib".
The library path is something along the lines of
"/Applications/Xcode.app/.../MacOSX10.14.sdk/usr/lib" which doesn't
contain "libz.dylib". But it contains "libz.tbd", which is a YAML-file
pointing to "/usr/lib/libz.dylib". One can pass the absolute path to
this tbd file to the linker, which will then pick up
"/usr/lib/libz.dylib".
Introduce a new variable QMAKE_EXTENSIONS_AUX_SHLIB, which is a list
of auxiliary extensions for shared libs, and add the "tbd" extension
to it on macOS.
Change-Id: I083b79a69d00232e35f9d6164ffa86cb473f1742
Fixes: QTBUG-72745
Fixes: QTBUG-72964
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Linking with a framework suffix to pick up the debug version of
libraries doesn't work as long as the dependencies picked up from prl
files are not rewritten to also include the suffix. The result is that
we end up loading both release and debug versions of the Qt libraries.
Use the target environment (target_wrapper.sh) to set the image suffix
instead, which means 'make check' will automatically work.
Change-Id: I60b0840760f68e579c270245d394e1dd609a0ebb
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Mimicking the approach from testlib_defines.prf, DEFINES containing a path
surrounded by quotation marks have to be handled differently for Visual
Studio projects.
Change-Id: I26f6a45d4df154f599e8be15b3aa3905cf703a1f
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
while it's legacy and should not be used (use QMAKE_USE+=egl instead),
it shouldn't be broken nonetheless.
amends 310bf3f57c.
Fixes: QTBUG-72564
Change-Id: Id6a070a4653dc1182a6b4d75af027a6ee6cbacae
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Rolf Eike Beer <eb@emlix.com>
rather than reproducing vcvarsall.bat's functionality as hard-wired code
in the nmake generator, just invoke the actual script from
toolchain.prf. this is much easier, more future proof, and - critically
- makes the detected variables available to configure's new library &
header search facilities.
[ChangeLog][Important Behavior Changes][qmake][WinRT] Cross-builds will
now ignore pre-set values of %INCLUDE% and %LIB% when building target
executables. If necessary, use configure's -I and -L switches when
building Qt, and pass QMAKE_INCDIR and QMAKE_LIBDIR on qmake's command
line when building own projects.
Change-Id: I36f53e8880d6523f3f6f7a44d40d87d04bd06854
Reviewed-by: Thomas Miller <thomaslmiller91@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
swap the order of compiler version detection and default path detection.
this keeps a subsequent commit smaller, which introduces a dependency
between the two.
Change-Id: I2d4cbee1fd3555411c18833bbee0201c994a9942
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Also blacklist tst_QRawFont::unsupportedWritingSystem() and
tst_QGlyphRun::mixedScripts() on windows for now.
Conflicts:
qmake/generators/makefile.cpp
src/corelib/itemmodels/qstringlistmodel.cpp
src/platformsupport/fontdatabases/windows/qwindowsfontengine_p.h
tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp
tests/auto/gui/text/qglyphrun/BLACKLIST
tests/auto/gui/text/qrawfont/BLACKLIST
Task-number: QTBUG-72836
Change-Id: I10fea1493f0ae1a5708e1e48d0a4d7d6b76258b9
There's no need to check the SDK at the root exclusive-build Makefile,
we can leave it to the individual build passes where the SDK variable
is available.
Fixes: QTBUG-72449
Change-Id: Ic829babf4c76e6d20812de0b94120199ebfb300c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
... and use that to inline the xlocalescanprint test.
Change-Id: I0973133d7f9ecc9a38b70dc4b83df174a35b2b1f
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
this is implemented by means of (multiple) inheritance, which applies
specifically only to the inlined source and header list, but not to
library sources or dependencies.
Change-Id: I8f1d5b34d1d2d12e39225dc50357ad6ec648c6b6
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
it works without it, but technically speaking it's undefined behavior.
Change-Id: Icdcdd5b923ce4cecd9dc9e75f9d5d66d0fa8a032
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
while the command line doesn't actually permit it (that can be
re-evaluated separately), derivatives of the inline source type may want
to inject additional paths, as is the case with opcua.
the incdir field supports multiple entries without additional action.
Change-Id: I3860ca1fc8fab25c04eb63bdb2f855b77ff3b9a4
Reviewed-by: Rainer Keller <Rainer.Keller@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
this allows compile-testing the specified headers with no further tests.
Change-Id: I268ff328deee221d9b92386fe2bd133b19a6f8e2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
like all qt_*.prf files (exceptions prove the rule), the configure
system counts as private api.
Change-Id: Iea3057445e430029ecd8449e604e2d5c499ae10a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
To enable LTCG, clang-cl.exe need "-flto" instead of "-GL". But if you
enabled LTO, the lib tool will have to change to "llvm-lib.exe" and the
link tool also need to change to "lld-link.exe", because msvc linker
will see these lib files as corrupted files. Leave QMAKE_LFLAGS_LTCG
empty because lld-link doesn't need any additional parameters.
Fixes: QTBUG-72402
Change-Id: Ia34d98bd1ad919d542ea3eac83944bf8c40ce0cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
in addition to the actual library resolution, also resolve the headers
belonging to the library, to validate the include path, and possibly
ensure that the right version of the library is present.
the "include" entries were moved out of the "test" objects, and renamed
to "headers". this cleanly permits libraries without compile tests.
the headers were not put into the sources, because the variance among
the includes is generally orthogonal to the variance among the
libraries.
note that this - like the library resolution - provides no support for
darwin frameworks. consequently, the opengl libraries are excluded from
the conversion on darwin.
similarly, wasm is excluded (centrally), because emcc is magic and would
need advanced wizardry to be dealt with.
Change-Id: Ib390c75371efa2badcfec9b74274047ce67c3e5a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
fbbe8aba9d introduced a check for
MSVC_VER to qmake, which is not set in win32-clang-msvc,
causing the build to fail:
Mkspec does not specify MSVC_VER. Cannot continue.
Unable to generate output for: .../config.tests/verifyspec/Makefile
Extract a minimal msvc-based-version.conf which determines
MSVC_VER from QMAKE_MSC_VER for win32-clang-msvc and win32-icc.
Task-number: QTBUG-63512
Change-Id: Ia6de8c4b1aae2ae1962cf4e60e3e6d51fdbbbabe
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
... when QMAKE_DEFAULT_{INC,LIB}DIRS cannot be determined.
it would have been nicer to actually persist empty results, but cache()
won't do that, and fixing it doesn't seem worth the effort now.
Change-Id: I95d5645e40a0da572f0def16462703373eaeb804
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
these cannot be possibly correct, and might mislead.
Change-Id: Ie10531807978def04768e2429304949415cafb2a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
uses of this function (or the "files" stanza in configure.json) which
don't explicitly target windows don't specify the .exe extension, so we
need to add it automatically if it's missing.
Task-number: QTBUG-57436
Change-Id: I1994378399bc3466c32ee065e752516f42652975
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This patch reverts 388c4ef9f7. The reason is that it generates a symbol
(resource_init_function) based on the name of the pro-file. But if different
plugins are built from a pro-file with the same name, you end up linking in
many symbols with the same name as well. Which one that ends up being used at
runtime will typically depend on the linking order of the plugins.
This problem will happen if you build an app for iOS that uses both controls 1
and controls 2. In that case, both QML plugins are built from a "controls.pro"
file. At runtime, only one of the plugins will be imported correctly.
This patch therefore reverts 388c4ef9f7, but at the same time, to not
re-introduce the problem it fixed, we instead genereate both a debug and release
version of the plugin_resources.cpp file. That way we can still depend on the
TARGET variable for generating both the resource_init_function symbol and the
cpp file.
Fixes: QTBUG-62647
Fixes: QTBUG-71386
Fixes: QTBUG-72108
Change-Id: I3d8c53132458b30ed9f47a259f1f8e4fa4d44130
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
we already knew the dependencies (as they are declared in the json
files), but failed to export them in any way, which made linking against
statically built external deps which have deps in turn fail (unless the
project happened to pull in the dep anyway, as is the case with qtcore +
zlib).
the previous assumption was that the USE-able library objects would be
self-contained, but that is conceptually unclean. instead, properly
export the raw dependencies and resolve them only in qmake_use.prf.
note that pkg-config produces self-contained output, so we need to
actively subtract the dependencies we know.
Change-Id: I4b41a7efc05bbd309a6d66275d7557a80efd5af4
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
clearly, nobody told clang that on windows you're supposed to use
semicolons instead of colons to separate elements of a path list ...
Fixes: QTBUG-72268
Change-Id: Ia7adc8de3bca586d4c15b069cb04e4cb647ae823
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This change reinstates functionality that was removed in
commit 102e1822ff. However, it
differs from the original implementation in several ways:
* It uses the QMAKE_PRL_LIBS variable, replacing whitespace with
semicolons, rather than using a dedicated QMAKE_PRL_LIBS_FOR_CMAKE
variable.
* More importantly, it parses the -L and -l flags and uses CMake's
find_library() command to look for the libraries in the specified
search paths, and then converts them to absolute paths. This is the
same approach that CMake's own FindPkgConfig module uses to find
libraries specified in this form. Any other flags not of the form
-L or -l (for instance, -s flags passed to Emscripten) are added to
the new INTERFACE_LINK_OPTIONS target property if the CMake version
is 3.13 or newer.
The original implementation of this functionality was removed because
of the lack of absolute library paths. At the time, it was believed
that qmake would have to be modified to do its own equivalent of
find_library() to get the absolute paths to the libraries. However,
the approach taken by FindPkgConfig has proven robust enough to be
used here, allowing CMake to find the absolute paths to the libraries
without having to modify qmake.
[ChangeLog][CMake] Added support for automatic linking of transitive
dependencies in static builds
Fixes: QTBUG-38913
Change-Id: I7d9cdb0d339c6ef697b04099d129481c770fc0fc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
note that pkg-config is a tad stupid: it won't tell us if the package is
built statically, but one needs to explicitly ask it to output
transitive deps for static packages. we can do that, as we resolve the
pkg-config output to actual libraries, so we know if they are static.
always asking it would print the transitive deps also if we found a
dynamically linked library, which would inappropriately extend the link
interface. the latter actually happens on windows (because we can't
easily tell apart real static libs from import libs), but that doesn't
matter, as under windows, the linker transitively resolves dlls anyway.
Change-Id: If1be3b3df476374d5c8e62f4b185477c988223b3
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Xcode 10 ships version 921.0.1 of cctools, which otool is part of. The
defaults have changed in that version to no longer print verbosely
(symbolically), which we relied on. We now request it explicitly.
Change-Id: Ifbe0c97462b9f78cf128c820847eff9c72f17065
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tim Blechmann <tim@klingt.org>
this considerably speeds up failures, as no doomed build is attempted,
and produces more reliable results, as no second lookup (which would be
subject to environment changes) is done any more during the build.
in principle, this also opens up possibilities like selecting specific
variants of dependencies, automatically extracting rpaths, etc.
qt_helper_lib.prf also needs to create fully resolved library names now.
Change-Id: I65f13564b635433030e40fa017427bbc72d1c130
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
amazingly enough, android has different sysroots for the compiler
(shared includes full of #ifdefs) and the linker (per-platform
libraries).
this patch supports only clang for non-darwin, which notably covers all
supported android ndks.
with this fixed, we also remove the hard-coded setting of
QMAKE_DEFAULT_*DIRS from the specs.
amends 353fb118c.
Change-Id: Ie0513de0f7123d7f5b8ca1ffcc72c017cddd126c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
When running configure on a Windows host, it would fail with the
error that the copy statement was invalid, due to the forward
slashes. This makes configure finish without errors.
Task-number: QTBUG-72000
Change-Id: Id315d7436bbbfd2cd5c5f2dfcfe0c3dc3b9e34c2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
We have to check if the directory exists before calling mkdir or the test
will fail on every run but the first one.
Change-Id: I36f10cfc18b3cb99990dc96190349ee00a0c1c4e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Remove the option from msvc-desktop.conf, which duplicates
the /nologo option in idcidl.prf.
Fixes: QTBUG-72046
Change-Id: I906097e0611f4578c307616b3f9ebecdfc4d8812
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
The failure mode of this behavior is worse than the surprises that the
non-explicit library dependency chain has, so it should be opt-in.
This reverts back to the behavior in Qt 5.11, but lets our tests
opt in to the feature.
Fixes: QTBUG-71724
Change-Id: Iede11f02d978b637324ddf71d29e7c99fe3ee99f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Descriptions for WINRT_MANIFEST's subkeys are in the documentation.
Having a copy in the prf file is superfluous and is likely to run out
of sync at some point.
Change-Id: Icea49854981990139305f6dc4e73d1b9dcb01dd5
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
this is an exclusively user-controllable variable. the mkspec may provide
a default via QT_QPA_DEFAULT_PLATFORM when it deviates from the platform
default known to configure, and these specs actually already make use of
that.
Change-Id: I7531063d4c404ebed7b2cc1647c61626db30daef
Reviewed-by: Kyle Edwards <kyle.edwards@kitware.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
fix the plugin name (it was missing the leading 'q') and the name used
in configure (the latter making it unnecessary to mess with it in the
mkspec). the qt.prf override which forced linkage of the plugin is also
removed due to being completely redundant.
Change-Id: I94687a34a295c36754e36a298af902b656ba2ecc
Reviewed-by: Kyle Edwards <kyle.edwards@kitware.com>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
these libraries are handled by the configure system. i presume this to
be an artifact of an early version.
Change-Id: Ieee0554163a9fe296097d09e60a70719beee97b4
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
when building additional modules against an already installed qtbase,
$$[QT_INSTALL_PREFIX/get] is obviously the same as
$$[QT_INSTALL_PREFIX], so we would misdiagnose a non-prefix build.
instead, use the same condition as qt_build_config.prf (we cannot just
rely on what it sets, because in qtbase configure context it's evaluated
before we set up the paths).
Fixes: QTBUG-60541
Change-Id: I37be30e0e682ece76ed460a66f1984ee0fe2ed71
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
... for debugging purposes.
this needs to work in every configure run even though the options
(currently) come from qtbase's global scope. this is accomplished by
automatically injecting the test type dependencies declared in the
'builtins' scope (where they generally make no sense whatsoever, because
there are no tests there) into other scopes (the first one that has a
test of the particular type, specifically). we do that *after* the
scope's own test type deps, so it can do its custom stuff first (it can
explicitly activate the required features if it depends on some global
stuff).
Change-Id: I67317da1b55804d39458bdbcf13d39a3e57a13bf
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
there is no reason whatsoever to ignore the variable if it's set to an
invalid value. also, it being empty would lead to a warning from qmake
since a while.
so instead check it for emptiness like every other variable, not for
file existence.
Change-Id: I1119f67520d2986811501cd3f223f8f4a87d067d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Removes need to manually build up qmake command line when there's
already a Makefile generated (from a recursive qmake_all run e.g.)
Instead, just run 'make xcodeproj'.
Change-Id: Ibe91b183230721a4bcaddfde53b623df00f7adb5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
In NDKr18 Google removed GCC, most probably the massacre will not end
there and they will remove all GNU tools, so we need to start using LLVM
ones.
This patch still keeps the compatibility with GNU tools if the Qt was
built with android-g++ mkspec.
Change-Id: Ibe1979577e08ce63604d55fc5bbd5f64b3737675
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
[ChangeLog][qmake] Introduced the variables
WINDOWS_TARGET_PLATFORM_VERSION and
WINDOWS_TARGET_PLATFORM_MIN_VERSION for overriding the default values
of WindowsTargetPlatformVersion and WindowsTargetPlatformMinVersion in
Visual Studio project files.
The code to determine the default values is moved to qmake feature
files. A common/windows-desktop.conf file is introduced for variables
common to all non-UWP Windows mkspecs.
The package_manifest feature uses WINDOWS_TARGET_PLATFORM_VERSION as
default value for WINRT_MANIFEST.minVersion, and
WINDOWS_TARGET_PLATFORM_MIN_VERSION for
WINRT_MANIFEST.maxVersionTested respectively.
Task-number: QTBUG-53654
Change-Id: I251ec7f9b804c9bc9f7d571f5b43d52b2a2d99d3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Allows a qt build to be configured to target arm64 desktop apps cross
platform and build them with nmake.
Change-Id: I99fed12047b45a504a1644201bcc19b18c69f3e6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
AR and NM have different tools when LTCG is used,
override those also when cross compiling.
Fixes: QTBUG-71595
Change-Id: I5347bd1874688dd89395c50ff6dd08fb1c0ebab1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
We need to support apps building against the 10.13 SDK, so that they
can opt out of dark mode and layer-backing. This does not mean we can't
require 10.14 to build Qt itself, but doing so should not require the
app to also build against the 10.14 SDK.
Change-Id: I53bd0fc8bf56c0be6614acec14d5173589e2620f
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
We want to inform the user when they have upgraded their Xcode version
and hence have a new SDK version, which requires a complete rebuild.
Explicit changes to the Xcode selection (be it via xcode-select or
$DEVELOPER_DIR) do not affect the existing build directory, so we must
record the Xcode selection inside the build to avoid false triggering.
Change-Id: I7d13da1232226712a4951e8a360cf4b634c6fa2f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Removing the extra space before -MT ensures that the vcxproj
generator gets valid input.
Change-Id: Iccf88c5fc4473db406d714b646185a4fb60a3418
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
The dependencies.json file allows to tweak the list of imports the
module is depending on, so that types implicitly imported are not
listed twice.
Task-number: QTBUG-70264
Change-Id: I7a3800e5ea713a8aaae0cddbf4e1607f92c41497
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
The correct name is c++1z. Anyhow, this is easy enough to get wrong,
so make sure CONFIG += c++17 works as well.
Task-number: QTBUG-67527
Change-Id: Iea26b18824b38b1b5170f85987cf5c750b8e10ab
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: André Hartmann <aha_1980@gmx.de>
In NDK r18, libc++.so was renamed to libc++.so.XX where XX is the Android
API level.
[ChangeLog][Android] Fixed build issue with NDK r18+.
Task-number: QTBUG-70631
Change-Id: Id0d2955648197e3054e3c69263b5a90d57964f6c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
This reverts commit 4bdd8d4eca.
It contains an error.
Change-Id: I51052029f001b9e82c2a53de15b4ba354aafdbae
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
In order to ship our own version of wayland.xml protocol code we need
to get rid of all includes of system versions of
wayland-client-protocol.h and wayland-server-portocol.h.
These were unfortunately included by wayland-client.h and
wayland-server.h and now can't be removed because of compatibility
issues. To solve this, wayland-client-core.h and wayland-server-core.h
can be included instead, which don't include any generated protocol
code. Again, due to compatibility concerns, wayland-scanner does not use
these versions unless invoked with --include-core-only, which is what
this patch fixes.
Task-number: QTBUG-70553
Change-Id: Icf7c870bd4d5bf891628cbddce2a9de3dda50164
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
This change applies to darwin. It adds each include path in the
QMAKE_DEFAULT_INCDIRS variable to the qdoc command line with the -I
flag for both the prepare and the generate phase. These include paths
provide access to the standard c++ and c headers, which clang needs
to see. This change should work on all platforms, but it increased
the qdoc warning count on the linuxsystem where it was tested, so
now it only applies to darwin.
Change-Id: I16e2e0d744e2cf68743dc12d39155dda2ece1536
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This broke the build for qtlocation.
This reverts commit 176a216f4f.
Task-number: QTBUG-70779
Change-Id: Ifd8419ffb88c1a9009319f39b11b4529b143477e
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
Add properties enabled_features and disabled_features the respective
library targets.
This makes it possible to query the enabled classes in dependent libraries
(for example, Qt for Python).
Add a test verifying whether the Open GL configuration is reflected
correctly in the feature properties to the existing test_opengl_lib
autotest.
Change-Id: I645c947073dbb36da3be81de6bc62ee0ba1e73d6
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
In NDK version r18, the libc++.so file we used for clang has been
removed. However, in r17 this was actually just redirecting to
libc++_shared.so, which is still available in r18, so we can
link directly to that instead.
[ChangeLog][Android] Fix build issue with Android NDK r18 and clang.
Task-number: QTBUG-70631
Change-Id: I658c0cabf49f27a47f38305de3c86067c8b18b25
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
in non-prefix builds, the forwarding headers always end up in qtbase's
build dir, while the injected headers always live in the build dir of
the module they belong to. to deal with that, we now record the target
path relative to the module root dir instead of relative to the base
directory of the forwarding header itself.
Fixes: QTBUG-70056
Change-Id: Ic4346148a125b13e2610f6965cdf4f5266ac763e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
39cb9ac873 moved the _ENABLE_EXTENDED_ALIGNED_STORAGE define from
msvc-version.conf to msvc-desktop.conf which basically removed the
define from winrt builds. By adding it to winrt's common qmake.conf
these builds are fixed.
Change-Id: I3d87c55fb52685859713f7466012b45c46145678
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Add QMAKE_QMLPLUGINDUMP_FLAGS variable that allows plugins to set
qmlplugindump options like -app, -noforceqtquick.
The naming follows the example of e.g. QMAKE_LRELEASE_FLAGS.
Task-number: QTBUG-70264
Change-Id: I1d11b7f3b03fab79ab9e06188cecf31650789302
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
We no longer support macOS 10.11, iOS/tvOS 10, or watchOS 3.
Change-Id: Ide03d8fac06185ef4162ba75ee54a0adf6916905
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Otherwise the SDK upgrade (or downgrade) may subtly and silently affect
the resulting binary, or if it results in build breaks, the user won't
know why.
We limit it to applications for now, as that's the point where it's
most important to catch the SDK upgrade, but technically we should
also do this for intermediate libraries. Doing it for everything
will likely incur a performance cost, so we skip that for now.
Change-Id: I8a0604aad8b1e9fba99848ab8ab031c07fd50dc4
Reviewed-by: Morten Johan Sørvig <morten.sorvig@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>
Move the definition of _ENABLE_EXTENDED_ALIGNED_STORAGE
to msvc-desktop.conf so that it becomes effective
for all compilers using MSVC (icc, clang-cl).
Task-number: QTBUG-50804
Change-Id: I5ff612cc0f5a712b855925f9bcf645e578e80504
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
As planned, we only support the latest and previous release for these
platforms, and by the time 5.12 is out these platforms will all have
had new releases, so we should bump the deployment target now.
Change-Id: Ibbb7d07bb5d9a1007ab37b88d75781be2c1f7075
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
As discussed earlier, we don't want to keep backwards compatibility
for more than two versions in addition to the current macOS version.
Change-Id: I24df6fb4a08e14a9f842d209b8e0a6079c533b65
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
After 0ef66e98cc was merged, the same should be done to
Windows ICC toolchain.
Task-number: QTBUG-69997
Change-Id: I1d76d8b59f87151a9064d9f7dcc3136dc1215633
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
the global flags are deprecated in favor of per-library paths, but they
obviously should still work. but apparently no-one cares, because there
isn't even a bug report about it ...
amends 90eee08b3.
Change-Id: I85aee41ca11de1715d1c750ae8e663093e012fb7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
using qt$$MODULE isn't enough if the module is composed of submodules
which need the final module's headers, because that would require two
modules having the same module .pri file.
the first thought to fix this was to just use $$lower($$TARGET), but
that breaks for testlib (QtTest). while the config file name isn't
public api, it's included by a public header, so changing it is risky.
so instead stay with the original pattern, but make it explicitly
overrideable.
the cherry-pick is needed to support QtWebEngine 5.12 with Qt 5.11,
a requirement that was raised too late.
Change-Id: I758c46ed403620620d577ae16866ce751271b63e
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 95b0e4c956)
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Some distributions do not define MINGW_HAS_SECURE_API globally,
resulting in methods like wgetenv_s not being declared in the
headers.
This is probably to keep compatibility with Windows XP. Anyhow,
we don't support Windows XP anymore, so we can safely add the
define.
Note that this is not necessary for the mingw-builds distro,
which is the only one we test and support. Anyhow, I don't
see any risk in adding these for other distributions.
Diff was provided by Philippe Dunski in the bug report.
Task-number: QTBUG-67443
Change-Id: I3a64b11541fe95e527ed44bbf8ad94469d457d3d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
CONFIG+=lrelease enables that all .ts files in
TRANSLATIONS or EXTRA_TRANSLATIONS are compiled by
lrelease.
EXTRA_TRANSLATIONS is a new variable that is only
processed by lrelease, but not lupdate - this
is useful for translation files that are supposed to
be empty, because they match the language of the
original translation sources.
If embed_translations is also set, the generated .qm
files will be made available through the Qt resource
system under :/i18n/. Alternatively, the user can
specify an installation target by setting
QM_FILES_INSTALL_PATH.
Note that relative paths in TRANSLATIONS are not taken
into account. That is,
TRANSLATIONS = component1/de.ts component2/de.ts
will cause a conflict.
[ChangeLog][qmake] New CONFIG options lrelease and
embed_translations were added. CONFIG+=lrelease does
run lrelease on translation files listed in TRANSLATIONS
and EXTRA_TRANSLATIONS. CONFIG+=embed_translations does
include the generated .qm files as resources under
:/i18n/.
Change-Id: I94db5b8431d07b24f59b2c332ede91450f9c0c58
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
To avoid (even more) duplicated code, "qt_test_helper" ensures the
policy of putting a test's helper application next to the test's
own executable.
The helper executable is suffixed with "_helper" to avoid name
clashes with its folder.
Change-Id: Ic50cb1daa257e7ffc75440c10a3b90fd39424683
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Instead of having tests installed into a folder named like their
target, we now use their source folder name for the installation.
An upcoming patch will rely on this behavior and simplify creation
of tests that need helper applications.
Change-Id: I17d9ff15edf502d82ab698627189532b83e72546
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@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>
The Xcode project name may be affected by e.g. the -o argument to qmake,
so we can't assume it's based on the target.
Change-Id: Ibb9f4265017ffcfe26bd8734758dcb30237c704f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Change-Id: Ib22d2fdca6a4819c1b4056e3207940ceebfbe365
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This reverts the following commits:
d12d2949d126c3bec09b49b08f96e8
We can't easily predict all code paths for QDesigner
with such a microoptimization. We also don't want
to generate three different string constructions
depending on some sophisticated heuristics.
[ChangeLog][uic] The -no-stringliteral option is now deprecated and
UIC will not generate QStringLiteral anymore.
Task-number: QTBUG-65251
Task-number: QTBUG-51602
Change-Id: I34a5a1934a8df19c5c84ac2ba8e5168ce5665037
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
If QMAKE_BUNDLE is set then this should be used for the bundle
identifier value instead of the product name. This ensures that when an
application provisioning profile is used that it will correctly match
against it. This also brings it in line with the documented behavior.
Change-Id: I627d212f59d862e7a881941748db5ef98ab4f463
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@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>
As the comment says, Haswell is a nice divider and is a good
optimization target.
I'm using -march=core-avx2 instead of -march=haswell because the latter
form was only added to GCC 4.9 but we still support 4.7 and that has
support for AVX2.
This commit changes the AVX2-optimized code in QtGui to Haswell-
optimized instead. That means, for example, that qdrawhelper_avx2.cpp
can now use the FMA instructions.
Change-Id: If025d476890745368955fffd153129c1716ba006
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Tell qtwaylandscanner to export the symbols when we're building a
module. This is done by specifying the include directory on the
qtwaylandscanner command line.
Task-number: QTBUG-68773
Change-Id: Ib575222261831ab01eb43e6c7caefb07e314492b
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Generated headers can now be installed using inject_headers and private_headers
instead.
Change-Id: I51d98e2e05d12aa9f6ab09f8ccb12b81a0c0cd6f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
"AVX512MIC" (Many Integrated Cores) is the set of AVX-512 features found
on the Intel Xeon Phi coprocessors (codename "Knights Landing"), which
is an unlikely architecture for Qt to run on.
The two profiles with VL came from study of early GCC code and are no
longer applicable. GCC source code now shows both VBMI and IFMA as part
of the -march=cannonlake feature set.
Change-Id: Iff4151c519c144d580c4fffd153a0f268919fe2c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This is a partial revert of commit:6c5d227da1709eb81968823f38a133747c0e95b0
All credits to Martin Afanasjew <martin@afanasjew.de> for the original patch.
Change-Id: Ib66303505888c821fc43eca213b956ce76acbbfa
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
The macOS framework build of Qt copies headers to each
framework instead of a centralized include location.
Update the .pc file generator to match this behavior.
Add two include paths to the .pc files:
-Ipath/to/lib/foo.framework/Headers
This makes #include <FooHeader> work.
-Fpath/to/lib
This makes #include <Foo/FooHeader> work.
Task-number: QTBUG-35256
Change-Id: I013ce161c904fe6b7bbb03e33c163d32fdda0647
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
If CONFIG option no_include_pwd is set, moc does not add the build
directory to its include path. The path to the generated
moc_predefs.h file is by default relative though, resulting in
moc warnings:
Warning: Failed to resolve include "debug/moc_predefs.h" for moc file xxx myheader.h
Fix this by always making the path to moc_predefs.h absolute.
Task-number: QTBUG-69087
Change-Id: I8ef79c8340f9ebd6b0bba15e026d65ef3c088535
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
By using -march= instead of -x, we turn on some other processor features
too. This was already the case for AVX2, which enabled all Haswell
features (notably FMA, BMI and BMI2).
Change-Id: If025d476890745368955fffd153126fc9eafc5d6
Reviewed-by: Alexander Shevchenko <sav_ix@ukr.net>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
linux-icc and macx-icc toolchains contain a significant amount of code
which can be merged to a common configuration file.
as a side effect, such merge resulted in reduction a parts of
linux-icc and macx-icc toolchains to the common view.
Change-Id: I37d110734eeeb9bd61ca0aa942de380ac8e75f1c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This allows distinguishing between these tools and tools for the host,
when cross compiling.
While mac tools normally only are available on macOS, there are third
party efforts to port them to other platforms. In these cases, it
might be useful to use a prefix (either some sort of triplet prefix,
or an absolute path) to distinguish between the host build platform
compilers/tools and the ones for the cross target.
The use of this variable matches the one used in a lot of other
mkspecs, and shouldn't cause any issues for those who aren't setting
it.
Change-Id: Iaeba571d955ea79ed1249989fcc525eb1eaf1f5c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@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>
Perfectly valid C++11 code trying to default-initialize an object with
{} is being warned. GCC 5 and up only warn if you initialize some fields
and not others.
qcborvalue.h:68:25: error: missing initializer for member 'QCborError::c' [-Werror=missing-field-initializers]
QCborError error = {};
^
Task-number: QTBUG-68889
Change-Id: I6efb28c3145047559ec0fffd1538577de250e283
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
as evidenced by things actually still working despite qmake_use.prf
not processing *_CFLAGS, this is not relevant for any makeSpec sources
any more, and was never relevant for other non-pkgConfig sources to
start with. localizing the code cleans things up.
as a side effect, configure won't emit a notice for dropped flags any
more, but will only log them to config.log. i think that makes sense,
as for the average user that would be only noise anyway.
Change-Id: Iaffde6474b786f5cbcbeac881850792563b74495
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
the json format uses single strings for library sources, as that leads
to less noisy source text. however, this implies the need for de-quoting
and subsequent re-quoting whenever the values are processed. so change
the internal representation to regular qmake string lists as the first
thing when processing the lib source, and re-quote only when outputting
the values.
CFLAGS are excluded, because we'll deal with them differently.
Change-Id: I4ab43d98085ea9f6601fd21ac2afb5bce4f7e2a9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
wayland-scanner.prf uses it as a trigger, so this is needed to make dynamic
non-prefix builds work.
amends 427e5d61b7.
Task-number: QTBUG-68773
Change-Id: Ia7d3bc39cb2b0f225e827f64eb17d061d594b265
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
We need -Zc:__cplusplus in order to enable the __cplusplus macro having
the correct value. This causes configure to now print:
Checking for C++14 support... yes
Checking for C++1z support... yes
and
Using C++ standard ..................... C++1z
Change-Id: I5d0ee9389a794d80983efffd152c95a4d9d8adbc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The new build system in Xcode 10 requires outputs from shell script
to be explicitly declared if they are used by subsequent build phases,
otherwise the build system may attempt to search for the file before
it has been generated, causing the build to fail.
The build phase we use for Qt preprocessing (moc, rcc, etc), does not
list these output files, so we need to disable the new build system
for now.
Change-Id: I7404c19021f57489e985bd1203ad09ce9b83b090
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
otherwise, names like "core" are too likely to clash.
note that the directories (which contain configure files) still need to
have unique names within one repository. that's unlikely to be a
problem.
Task-number: QTBUG-68385
Change-Id: I01c60479a6a45494ba60e798ceada231d8870556
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
making the dependencies on tools/ optional was meant to maximize build
parallelization, but it's just too fragile, as nobody ever remembers (or
even knows) about having to add the flags when necessary.
Task-number: QTBUG-68478
Change-Id: I85c0b65d5a63109aedc24bc17eaaaf46b777b634
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
When QMAKE_TARGET_BUNDLE_PREFIX is set in the .pro file then
this value should be used instead of the default value for
PRODUCT_BUNDLE_IDENTIFIER. Therefore, PRODUCT_BUNDLE_IDENTIFIER
should be set inside default_post.prf so that it can take the
value of QMAKE_TARGET_BUNDLE_PREFIX after it may have been set.
Task-number: QTBUG-66462
Change-Id: Iec1e2a43632efe6021b9d6bfdb78bd941326c456
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
instead of pre-resolving them and passing the final LIBS to qmake, pass
raw QMAKE_*_LIBS* assignments and a QMAKE_USE stanza. the immediate
benefit of that is that it centralizes the debug/release lib handling,
which makes build variant overrides available to all libraries, not just
a few selected ones.
note that this removes the CONFIG+=build_all from the test projects.
turns out that this was ineffective to start with, as config tests are
built with an explicit CONFIG-=debug_and_release. we might re-instate it
in a non-broken way later on.
Change-Id: I2117c5b36937e8230bd571dcee83231515cbe30b
Reviewed-by: Joerg Bornemann <joerg.bornemann@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>
Add support for QSurface::VulkanSurface and QVulkanWindow.
Usage:
1) Build MoltenVK according to instructions
2) Configure Qt: ./configure -I /path/to/MoltenVK/Package/Release/MoltenVK/include
3) export QT_VULKAN_LIB=/path/to/MoltenVK/Package/Release/MoltenVK/macOS/libMoltenVK.
Implement support for QSurface::VulkanSurface by enabling
layer mode for QNSView and then creating a CAMetalLayer,
which the MoltenVK translation layer can run on.
MoltenVK provides an implementation of the Vulcan API,
which means that the platform integration is similar
to other platforms: implement a QCocoaVulkanInstance
where we pass the QNSView instance to the vkCreateMacOSSurfaceMVK
Vulkan surface constructor function.
Using Vulkan directly without QVulkanWindow is possible, but not
tested.
We currently load libMoltenVK at run-time and use the
existing QT_VULKAN_LIB environment variable to set its
path. For deployment purposes it would be better to
link against MoltenVK.frameworkm, but this
Task-number: QTBUG-66966
Change-Id: I04ec6289c40b199dca9fed32902b5d2ad4e9c030
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
relative paths must be resolved against $$OUT_PWD, not $$_PRO_FILE_PWD_.
Task-number: QTBUG-58991
Change-Id: I9ce8e9c78e0fad026a7cc355852d23f9d6e96ee6
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
using qt$$MODULE isn't enough if the module is composed of submodules
which need the final module's headers, because that would require two
modules having the same module .pri file.
the first thought to fix this was to just use $$lower($$TARGET), but
that breaks for testlib (QtTest). while the config file name isn't
public api, it's included by a public header, so changing it is risky.
so instead stay with the original pattern, but make it explicitly
overrideable.
Change-Id: I758c46ed403620620d577ae16866ce751271b63e
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Add qmake feature and configure option, which optimze the size of static
exectuable. Use for static build.
Enabled via configure --gc-binaries, or CONFIG += gc-binaries in 3rd party
projects.
Change-Id: I3c25b02caaef6a4afc6019afc9c67122dd11696d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
We need to make sure we don't emit CMake declarations for private
headers if those headers are absent. However, most of the time we have
private headers and should add them.
Task-number: QTBUG-37417
Change-Id: I639eb93d008de27928dedac540894af70c1883b9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Writing out the $TARGET_plugin_resources.cpp file in !build_pass breaks
when TARGET is adjusted by $qtPlatformTargetSuffix values. We end up
writing out $TARGET_plugin_resources.cpp but the debug Makefile looks
for $TARGET_debug_plugin_resources.cpp.
Try using the pro file name as name source instead, as suggested by
Ossi.
Task-number: QTBUG-67931
Change-Id: I221cf9b2ec1db699568d0c73513aa66ecf0ada97
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
don't put them into GENERATED_HEADER_FILES, as they obviously cannot be
found in a pre-synced source dir. instead, let the injection code itself
add them to INJECTED_HEADER_FILES.
Task-number: QTBUG-67813
Change-Id: Id2a7c565b14fcba8aba9d1dd8b1dd39c586d0d91
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
these are actually redundant with INJECTIONS.
Change-Id: I0a71930401e00d30c9898b4d958de5e89c496d18
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
RCC generates code that registers resources automatically on program
startup via global constructors. When linking statically and nothing
references the symbols in the .o file compiled from the RCC generated
code, then the linker will discard the embedded resources and they will
not get initialized. That is why for static linking it is necessary to
explicitly initialize resources using the Q_INIT_RESOURCE macro.
We can avoid the need for the explicit initialization in the context of
plugins that are statically linked into the application. resources.prf
can generate a .cpp file with a helper function that contains all the
Q_INIT_RESOURCE calls for all resources in the plugin. That helper
function in turn is injected into the plugin entry point, which in turn
is guaranteed to be included in the final binary.
Change-Id: If1abf9c85ef92935020af073b989c58c1ae6ca63
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Fixes the default C version used with gcc < 5
Change-Id: I948dece961caed8e6b181e1c6e6b9dc43c46583e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
the 'info' variable was re-used too early. make a new one 'infoargs'
instead.
Task-number: QTBUG-67286
Change-Id: I77881ecbfce338d653358c5e5edac84e1c0c7de3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
In order to be able to build and test a testcase on an iOS device it
needs to be a bundle. So the app_bundle config should only be removed if
the testcase_no_bundle is set. This is already done by testcase.prf.
Task-number: QTBUG-45211
Change-Id: I4f16ea832ccff2a5db5fed0050fa0344b4ac9ad6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
The android mkspecs had their own way of doing the same as optimize_size
Change-Id: Id05822df6bdeb8b3aafada2901bd61530c490fe9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
instead of relying on more or less accidental qmake behaviors regarding
the base dir for relative paths (esp. if a file does not exist yet),
make everything explicit. to that effect, clearly define the base tree
(source or build) for every syncqt-generated variable, and write only
in-tree relative paths to the variables. on the receiving end, resolve
the paths as soon as headers.pri was read.
Task-number: QTBUG-67111
Change-Id: I32ae5760fb62ebc650fdb69e46aac786a8141564
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
that way we can create a config.log which is consistent with the end
state even if (some) tests are not executed this time around.
Change-Id: Ia953ede62d6640aab912559f435ceb1f9ec6d9dc
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Remove references to XKB and explain what to do if
pkg-config is missing or unwanted.
Change-Id: I099bf01ff49e1b8f6e822a50f0fe4904965a7a9f
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Some mkspecs do not support c++ strict mode.
We should allow them to build Qt with GNU extenstions.
Change-Id: I0d76cf95355b38953e3475773ec5474c856e1370
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Allow QML modules to request installing QML files on the file system
regardless of whether the QML files are embedded to resources.
Qt Quick Controls need both; external QML files, that are prioritized
over compiled resources, can be left out from the final deployment
package.
The desired setup can be configured as follows:
CONFIG += install_qml_files builtin_resources qtquickcompiler
With this, there is no need to write custom install/copy/qrc rules
for QML files.
Change-Id: I2ff2974b64efaea341b6ebb4c9fc2612497d7a33
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
For "import MyModule", the QML engine looks for a qmldir file in
$eachImportPath/MyModule.
One of the built-in import paths is ":/qt-project.org/imports". This is
meant for static "plugins", where the resources and the plugin are already
inside the binary image.
For dynamic plugins, the qmldir file is what enables the QML engine to
find the plugin in the first place, so it makes no sense to embed it
inside the plugin's resources.
Change-Id: I29f006efb58d91f7e5212c347087535b06e8c637
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
For correct debug/ and release/ suffix substitution and thus avoid
concurrent access to generated files, we have to declare the output
directory variable used by qtquickcompiler.prf in qtdeclarative here and
enable it for substitution.
Change-Id: Id8483daffdf1b9990396c55f7bc0d08a2f65cafd
Task-number: QTBUG-66675
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
The change causes a crash when compiling the xkbcommon 3rdparty
library and compile failures (qtimageformats on Android).
This reverts commit a47cb14680.
Task-number: QTBUG-67326
Task-number: QTBUG-67327
Change-Id: I5ddc4eccad699e3eaec535fd6a63d11b0026b42e
Reviewed-by: Sami Nurmenniemi <sami.nurmenniemi@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
This removes the following functions from Qt5CoreMacros:
- qt5_use_modules(...)
Task-number: QTBUG-63519
Change-Id: I59769060a3a93686bf319b558c0ede55755fdb70
Reviewed-by: David Faure <david.faure@kdab.com>
Fixes the default C version used with gcc < 5
Change-Id: I948dece961caed8e6b181e1c6e6b9dc43c46583f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Generated files should be added to RESOURCES with an absolute path.
Task-number: QTBUG-67011
Change-Id: Ief82b576824df9abd0901970f076e30dfe57b7d0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
When Qt is configured for both debug and release, and frameworks are
enabled, we produce two dynamic libraries inside each framework, eg:
QtCore.framework/QtCore
QtCore.framework/QtCore_debug
When building an executable against these frameworks, we pass -framework
QtCore, and the resulting executable will have its LC_LOAD_DYLIB load
commands pointing to e.g.:
@rpath/QtCore.framework/Versions/5/QtCore
When running the executable, the dynamic loader will load the dynamic
library dependencies based on these load commands.
By setting the DYLD_IMAGE_SUFFIX environment variable at runtime to
'_debug', the dynamic loader will prefer the debug versions of each
library inside the frameworks.
Unfortunately the use of an environment variable to choose debug or
release versions leaves room for mismatches between the executable
and the libraries that are loaded. An executable built in debug
mode will at runtime pick up the release versions of the Qt libraries
unless the DYLD_IMAGE_SUFFIX has also been set to match the build
configuration of the executable.
This results in confusing situations such as building your application
in debug mode, and then stepping into Qt code but not getting any
symbols. Qt Creator has an option to run the application with
DYLD_IMAGE_SUFFIX set, but this is not enabled by default due
to the startup cost of loading the Qt debug libraries.
More critically, it results in tests failing when the tests are using
QTest::ignoreMessage to ignore warnings produced by Qt, and these
calls are ifdefed (correctly) inside QT_NO_DEBUG, as the test
(built in debug mode) will then expect warnings from Qt, but those
warnings are not emittet, as the test is run against the release
version of the Qt libraries.
To mitigate this mismatch, we now link the Qt frameworks using
an explicit suffix, just like we would for no-framework builds
on macOS, for debug and release builds on Windows, and for
normal builds on other Unixes, leaving the dependency chain
for the application predictable:
@rpath/QtCore.framework/Versions/5/QtCore_debug
This also conceptually matches how Xcode builds applications and
frameworks, where it never relies on DYLD_IMAGE_SUFFIX, and instead
uses two separate build directories, one for each configuration.
The change means that Qt Creator will always load the Qt debug
libraries if the application is built in debug mode. For Qt
development this is a good thing, as you expect to be able to
step into Qt code. For our users, the added startup cost can
be mitigated by shipping our binary packages as release-only,
but with separate debug info enabled.
Change-Id: Ib9f1f2dab90ed00b9fb011200e3a69c71955e399
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Some tests are not written to handle running on a retina screen,
resulting in additional test failures when trying to fix a CI test
failure on a local retina-enabled machine.
Change-Id: I0fed33c38792b686ac83abba2bfbc45623382200
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
On Apple OSes, both compilers and linkers are given an absolute path.
For consistency, the same should be done with the C linkers.
The change is also a convenience to the MacPorts project,
which actively discourages ambiguous compiler names.
(https://trac.macports.org/wiki/UsingTheRightCompiler).
Change-Id: Ic1885aed825340696e9fde766788eebf51de3ff6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Change-Id: I7d5f211e2441415134c5905b159b41dc3b2b231b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is needed to be compatible with latest Qualcomm BSP releases.
This patch also makes it possible to select HW layer via
QT_OPENWFD_CLIENT_ID and QT_OPENWFD_PIPELINE_ID environment variables.
Change-Id: Ie795b21afc61a1de7c1d0b52cdb30a754e3f8266
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Timo Aarnipuro <timo.aarnipuro@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
(cherry picked from commit 00f693d3e5046999270c92731e34a3e7fcd01c6b)
Reviewed-by: Simon Hausmann <simon.hausmann@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>
with 40e87491 merged, 'QMAKE_CXXFLAGS' variable in
'win32-g++' toolchain became defined via 'QMAKE_CFLAGS'.
the similar can be found in 'win32-clang-msvc' and
'win32-icc' toolchains too.
this works for now, because such definitions just duplicates code
from includes, like 'gcc-base.conf', 'msvc-desktop.conf', etc.
but it would became broken, if changes would be applied to
'QMAKE_CXXFLAGS' definitions in that includes, prior
to the redefinitions in 'win32-*/qmake.conf' toolchains.
thus 'QMAKE_CXXFLAGS' definitions in 'win32-*/qmake.conf' toolchains
should not depend on 'QMAKE_CFLAGS' and be done explicitly.
in order to apply this change correctly to 'win32-icc' toolchain,
its 'QMAKE_CFLAGS' variable should become dependent on definitions
in the includes, similar to 'win32-clang-msvc' and
'win32-msvc' toolchains.
Change-Id: I5e820e44a769a590ba63f70dcb3a115311093311
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
contains() interprets the regexp as being implicitly
anchored, so the leading part of the path needs to be
explicitly matched.
Change-Id: I1efa07dc99bb2db1717d2a66621899e23c144164
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
$$RCC_DIR can be absolute, so simple concatenation with $$OUT_PWD is
bound to fail.
Change-Id: Ibd80c49656c0e03b8a86ebca851af106cced08fb
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
in non-prefix configs, one has to differentiate between the module's own
build dir and qtbase's build dir, because the forwarding headers are
placed in -outdir under include/, while the actual headers end up in the
real build dir under src/.
Change-Id: I1d8ac904556b354bd113995316ba11dd6560a70d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Right now we are using the C++ compiler here, which relies on
the compilers automatically switching mode. This behavior is also
deprecated in newer clang versions and block clang developer
builds.
Task-number: QTBUG-64822
Done-with: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: I4d3c00ac528a45934c85777f42d243d0fe367c92
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This commit introduces minimal support for instrumentation within Qt.
Currently, only LTTNG/Linux and ETW/Windows are supported.
Change-Id: I59b48cf83acf5532a998bb493e6379e9177e14c8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
'win32-icc' toolchain:
- remove duplicated angle/vulkan includes.
'win32-g++' toolchain:
- place angle/vulkan includes before the unrelated compiler-related
variable re-definitions, similarly to the 'win32-clang-msvc',
'win32-icc', and 'win32-msvc' mkspecs.
Change-Id: Ie04bc9fb1d51ec0366b42713439f680e51214bbc
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
The PRODUCT_BUNDLE_IDENTIFIER property was not defined in the Xcode
project file and therefore the build would fail.
This fixes a regression introduced by 0749ba2c5e.
Task-number: QTBUG-65673
Change-Id: I8089b36d86588223ec34859af7388c99a3574d8b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Build systems such as Meson heavily rely on pkg-config to get build
flags.
-DQT_{module}_LIB isn't exported in .pc files which makes Meson unable
to build some codes out of the box.
Change-Id: I806998f19f815e05a47b60129977e52587b38d47
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
mingw-w64 toolchain:
- remove 'QMAKE_CFLAGS_AESNI' and 'QMAKE_CFLAGS_SHANI' definitions,
which are already set in 'gcc-base.conf' toolchain; this is
a continuation of 77347a36 relating variables, introduced in 5.10,
- remove 'gcc-base.conf' duplicate inclusion, left after eef2d1af
was merged into 5.10.
Change-Id: I328def916ccfb93c3f6b8336eb8801defbac37ae
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
The Embedded Android build (Boot to Qt Android injection) is defined by
having both Q_OS_ANDROID and Q_OS_ANDROID_EMBEDDED flags defined,
as well as having Qt config android-embedded.
This commit enables the possibility to build embedded Android builds.
(i.e. Qt build for Android baselayer only, without JNI)
Change-Id: I8406e959fdf1c8d9efebbbe53f1a391fa25f336a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
such a project structure violates the assumption that the referenced
resources are specified relative to the sub-project root, so we must
resolve them to absolute paths manually.
Task-number: QTBUG-65753
Change-Id: I8bcd5c6e7d7c6a713e5fcd3668be7d2f23169501
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
When QFile::open is called with the NewOnly flag, the call will
fail if the file already exists. As usual, if the file does not exist,
it will be created. Like QTemporaryFile, there is a guarantee from
the operating system that you are not accidentally creating a new file
on top of an older file. When QFile::open is called with the
ExistingOnly flag, the call will fail if the file does not exist. The
ExistingOnly flag only provides new functionality when used with the
WriteOnly flag. For ReadOnly it provides no change in functionality,
as ReadOnly by itself already never creates.
Task-number: QTBUG-52244
Change-Id: I8e3206728f245f95172c225bf297023fb078fc6d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
mingw-w64 toolchain:
- add missing compiler definitions, similar to
'msvc-desktop.conf' toolchain,
- describe the reasons of missing compiler definitions, available in
'msvc-desktop.conf' toolchain,
- add missing 'QMAKE_CXXFLAGS' and 'QMAKE_CXXFLAGS_WARN_ON' variables,
similar to 'msvc-desktop.conf' toolchain.
ICC on Windows toolchain:
- add 'QMAKE_CFLAGS_OPTIMIZE_FULL' variable, similar to 'gcc-base.conf'
toolchain, though left it unused for now,
- add missing flags to 'QMAKE_CFLAGS' variable, similar to
'msvc-desktop.conf' toolchain,
- update deprecated 'Qwd' flag with 'Qdiag-disable',
- use 'QMAKE_CFLAGS_OPTIMIZE_DEBUG' variable instead of '-Od' flag,
similar to 'gcc-base.conf' toolchain (ICC implies '-O2' optimization
level by default, while MSVC implies '-Od'),
- add 'QMAKE_CFLAGS_UTF8_SOURCE' variable, similar to
'msvc-version.conf' toolchain; use a workaround to initialize it,
until '-utf-8' flag would be supported by ICC on Windows,
- update deprecated '-Qstd=c++1z' flag with '-Qstd=c++17',
MSVC toolchain:
- remove 'incremental' from MSVC 'CONFIG' variable, since it has
relevance only for the Unix generator,
- add 'QMAKE_CFLAGS_OPTIMIZE_DEBUG' variable, used in ICC for Windows
toolchain,
- add empty 'QMAKE_LIBS' variable, similar to 'win32-g++' toolchain,
- add 'uuid.lib' library to 'QMAKE_LIBS_GUI' variable, similar to
'win32-g++' toolchain,
- add C++14 and C++17 language support flags, though left them disabled
for now, similar to 'win32-icc' toolchain.
Change-Id: Ideef62d0422674184836faa655bfc5d09a5f612f
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
otherwise the project would need to clear QT despite using
qtHaveModule() in requires() (or REQUIRES=).
Task-number: QTBUG-65106
Change-Id: I568202214c8eafcdbe2d0e253b18f0e171293aff
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Old header.LGPL21 header was used at some files. Replase those with
new header.LGPL one
Remove old header.LGPL21
Task-number: QTBUG-57147
Change-Id: I650e39024ed4876bba27e954c7d61fdb025b46ef
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This ensures that the same set of variables can be successfully replaced
in both the Makefile and Xcode generators. It also switches the default
templates to use the Xcode-style ${var} syntax instead of the @var@
syntax for better Info.plist compatibility across generators.
Change-Id: Iff330bafd152773aafac9143c4a34e34f92f0ce6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Since Xcode 6.3, this must be set to NO because stripping on copy is no
longer fully supported due to the potential of input binaries being code
signed. In this case Xcode will simply ignore the strip step and issue
a warning since stripping would invalidate the code signature. This
change silences that annoying warning for release builds. Also, the
setting assignment is moved from being hardcoded in the generator, to
a QMAKE_MAC_XCODE_SETTINGS value.
Change-Id: If25511edddc12b7b0407e2992d80884b7d6437dc
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Common changes to mingw-w64, ICC on Windows, and MSVC toolchains:
- set similar order of variables and its splitting into sections,
- set similar order of flags in variables and the way they are set.
mingw-w64 toolchain:
- move 'gcc-base.conf' include before setting Windows specific
flags, similar to include 'msvc-desktop.conf' in ICC on Windows
toolchain; this leads to consistency with other toolchains
and allows to safely override common GCC variables with Windows
specific ones, when needed,
- move 'QMAKE_EXT_OBJ' and 'QMAKE_EXT_RES' variables to the linker
flags section, according to its purpose.
MSVC toolchain:
- set flags order in 'CONFIG' variable, similar to mingw-w64 toolchain.
Change-Id: I417cc8f7959c669dd504f2c5c11eb879a7989bd4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
mingw-w64 toolchain:
- remove 'QMAKE_CXXFLAGS_THREAD' variable definition, since
'QMAKE_CFLAGS_THREAD' variable not set for mingw-w64 toolchain.
ICC on Windows toolchain:
- remove 'QMAKE_LFLAGS', 'QMAKE_LFLAGS_RELEASE',
'QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO' and 'QMAKE_LFLAGS_DEBUG'
definitions, since they're properly set in 'msvc-desktop.conf',
- remove 'DSP_EXTENSION' variable, which doesn't occur anywhere else
within QtBase; its most recent search results relate to
Visual Studio 6.0 and Intel Fortran.
Change-Id: I2ce5c2c9e9ca2c09c1acfcf8c60381d318e8e380
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
If the linker supports it, add the gdb index to the debug symbols, which
makes loading gdb on Qt libraries much faster.
Change-Id: I2ed201c22913b97ac2efaefb5e31636e795ae102
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This works around the inability to build iOS apps for a "generic"
simulator by explicitly setting the Xcode build setting
ENABLE_ONLY_ACTIVE_RESOURCES to NO in order to ensure that all variants
of assets in an asset catalog are built when targeting iOS simulator
devices. Otherwise, we will simply build for whatever the first
simulator in the list happens to be. If the application is then deployed
to a different simulator, some of the assets needed for that device
variant may be missing.
This "helps" QTCREATORBUG-19447 but is not a workaround since this fix
is necessary for command line builds anyways, even though it's unlikely
to crop up in practice there, since one would have to manually deploy
the built application bundle to the simulator using simctl rather than
going through Xcode (which would rebuild for the appropriate device).
Change-Id: Ia41c48dcc715fe79a2c50db66a0ca7a1fea159c2
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
... instead of only toolchain.prf.
the license check could go haywire, and everything else that file does
is meaningless in configure context anyway.
Task-number: QTBUG-63452
Change-Id: I5e31c87fe717fda40978c0317556070637e537e2
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
otherwise test de-duplication between modules doesn't work.
Change-Id: I2c6222d853108df223758aa8907dc8d004efd87f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
especially during debugging, it is often necessary to re-run only one
(or a few) tests, where -recheck-all would be wasteful.
Task-number: QTBUG-64059
Change-Id: I9410894dec4289ff832d7f75e04f9b60fe76c57c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Enable xcb QPA plugin when XQuartz is available. This is done
in a single build, alongside the Cocoa version.
We delegate part of the configuration stage to pkg-config, so
this becomes a requirement. Ensure that
PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig:/opt/X11/share/pkgconfig
is in your environment, or pkg-config is properly set up.
Tested with the following configure options:
configure \
-pkg-config \
-fontconfig -system-freetype \
-system-xcb -xkb -no-opengl \
-qt-xkbcommon -qt-xkbcommon-x11
Change-Id: I2eb5a0491172368afc4c629c540cbef08580348d
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
it could be somewhat surprising that specifying variant-specific libs
would not clear the common libs, so do that. of course, the default
for the common libs could theoretically contain common deps of the
variant-specific libs, in which case clearing them would be surprising
in turn - luckily, we have no such case.
Change-Id: Ifca08b9e1949c6a0cefed6931ade4021927d7c90
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
... and not only when the source explicitly specifies build variants.
Change-Id: Iac6c8fda8f431d5fb50fada8338d1b660ab040d7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
unlike for the other fields, we forgot to eval() the values of the
build-specific library values, leading to over-quoting of values which
require any quoting at all.
amends c0cc50520.
Task-number: QTBUG-62521
Change-Id: I4dfce31040dd09248d3f9dd4294f7fb147c13bdd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
qtConfLibrary_inline() used to set $${1}.builds.$${b}.libs, while
everything else assumed no such .libs suffix. fix the former.
amends 9172143f52.
Task-number: QTBUG-61431
Started-by: Konstantin Ritt <ritt.ks@gmail.com>
Change-Id: I0bd81591c46266d81baa9c12315411183bbc7a63
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
It seems the compiler supports /arch:AVX512 and /arch:AVX512F but none
of the other switches (and neither are documented). And when you pass
those, you also get Conflict Detection (CD), Double & Quad (DQ), Byte &
Word (BW) and Vector Length (VL), which matches the ICC switch
"-xCORE-AVX512". Unlike ICC, there doesn't seem to be an option to
enable only the common part of AVX-512.
Support for Intel Xeon Phi's current features (Exponential &
Reciprocation and Prefetch) and future ones (IFMA, VBMI, 4FMAPS, 4VNNI
and VPOPCNTDQ) seems to be missing altogether.
See https://blogs.msdn.microsoft.com/vcblog/2017/07/11/microsoft-visual-studio-2017-supports-intel-avx-512/
Change-Id: I98105cd9616b8097957db680d73eb1f86e487e6d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Common changes to mingw-w64, ICC on Windows and MSVC toolchains:
- update toolchains description similar to 'gcc-base.conf'.
Change-Id: Ie456c6cec86c0d1c0107ca84a0fa7855666df91e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
For source packages that don't have a .git subdirectory, syncqt is
executed before configure, with outdir set to srcdir, and this
caused path misalignments for injected headers in qt_module.prf
when generating makefile rules.
The fix is to change syncqt to always output injected header
paths relative to the source dir.
Task-number: QTBUG-64539
Change-Id: Ia2296e44494093dbf124729062f430ad6fca7262
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This fixes an issue where a build error may be introduced by a simulator
being selected whose OS version is lower than the application's
minimum deployment target.
Task-number: QTBUG-64456
Change-Id: Ic7c834a1473c183ebb910bc01a416fe1e23a5a14
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
We want to know when a plugin uses deprecated Qt APIs, especially
deprecations in the QPA APIs, which today is not the case, so
platform plugins have no idea that they should transition.
Change-Id: If9d3d95dc6f1f4178b103f177c9eb8326767ffab
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Xcode 9 introduced the main thread checker, which detects invalid
use of AppKit, UIKit, and other APIs from background threads.
https://developer.apple.com/documentation/code_diagnostics/main_thread_checker
In our case these are accesses to e.g. [UIView layer] and
[UIScreen scaleFactor] from the render thread of QtQuick,
things we should look at, but that might not be easily solvable.
In any case, these are not warnings the user can do anything about,
so in lack of a per-library disable of the checker, we have to
globally disable it for the whole Xcode project.
Task-number: QTBUG-63822
Change-Id: Ibfcdf23891cf6bfbbc9b9b3349e4c256c273c7de
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Bundle data source files which don't exist at qmake time need to be
handled specially. This also required splitting the generated list of
public headers, as was already done for private ones.
Task-number: QTBUG-60413
Change-Id: I97acfa88622da6b73839b8f976f73ace3cb10223
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This warning used to be part of -Wconversion, but that generates too
more noise than we're willing to fix now (like conversion from qint64 to
int). The float conversion does trigger for conversion from double to
float, as shown in all the QVectorND uses of float, but more
importantly, it triggers on passing floats to ints.
Change-Id: I69f37f9304f24709a823fffd14e69cfd33f75988
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
SYSTEM is used for system() calls, while SHELL is used in the target
Makefiles.
Task-number: QTBUG-62985
Change-Id: Ia75d3939c59c98699359421166433e8b4a6ee35e
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
I need to include linxx/if.h from elsewhere and these two files conflict
by defining the same types (struct ifreq, struct ifmap, struct ifconf,
etc.)
Change-Id: I0a103569c81b4711a649fffd14eb2f6dbbef83b6
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
[ChangeLog][iOS] The minimum deployment target for applications is now
iOS 10.0.
Change-Id: Icb37e4eaecbf6f62fd3c9293b2abf19a0954a02d
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
This guarantees that we have proper version checks in place for APIs on
Apple platforms that are not necessarily available on the deployment
target.
Change-Id: I10060f8b910f2bb790aa4a9c6f8c5cdc14d7cf06
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This definition causes a build error if concrt.h is included.
According to Microsoft [1], this macro is unsupported. It was added in
f5908363 to silence compiler warnings that are generated when exceptions
are turned off and certain STL headers are included.
We specifically disable the warnings in question now.
[1] https://blogs.msdn.microsoft.com/vcblog/2015/07/14/stl-fixes-in-vs-2015-part-2/
Task-number: QTBUG-63409
Change-Id: I567d5d46292fbd7898394e217bb0987fbcdca9de
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
We obviously should check the variable we're about to get the data from.
Amends 1216f596bd.
Change-Id: Ibe87138b9c9aa99837b4fbf3769cd26ca1aaacb9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
If MOC_INCLUDEPATH exceeds a certain limit, its content is written into
a file named mocinclude.opt, which is then passed to moc as a response
file. That moc parameter was not properly quoted, and the moc call
failed for paths containing spaces.
Task-number: QTBUG-63197
Change-Id: Ib0542d80ce1bab239e0e6b6e24fadd11007b1846
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Amends cab060631
Task-number: QTBUG-62995
Change-Id: I374153ec34abad0585d2bcab0f699b42600be6ef
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
This change adds the correct suffix to debug mode .pc filenames for
MinGW and also to the Qt libraries listed in the `Requires` field.
The filename adjustment fixes the accidental overwriting of release
mode .pc files with the debug mode variant which required the wrong
variant of the libraries when `debug_and_release` is active.
Note that macOS also supports the `debug_and_release' configuration
but may use the regular library names together with DYLD_IMAGE_SUFFIX.
Creation of *_debug.pc files is turned off as they're identical to their
non-debug counterparts.
[ChangeLog][Platform Specific Changes][MinGW] Added a suffix to debug
mode pkgconfig files.
Task-number: QTBUG-4155
Change-Id: I221c2dae51d7bd011836cb03945631a43180d7b5
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
[ChangeLog][configure] Added the configure option -qtlibinfix-plugins
to rename plugins according to QT_LIBINFIX. This option is off by
default.
Fixes: QTBUG-15192
Change-Id: Id5b267e169ee143fc8f7abc6b27bc0ed5306406f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
QtANGLE is set on MODULE_AUX_INCLUDES so the headers can be found when
building with ANGLE (gui.pro) but the pkg-config file is missing this
header and the Qt headers cannot be compiled with the path from this
config.
Fixes: QTBUG-75495
Change-Id: I4d795b3495b8d08c65f9ddffad4fc838b4f04c31
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
QT_DEPRECATED_VERSION(major, minor) and
QT_DEPRECATED_VERSION_X(major, minor, text) outputs a deprecation
warning if QT_DEPRECATED_WARNINGS_SINCE is equal or greater than the
version specified as major, minor.
This allows the user to hide deprecation warnings which can't yet be
fixed for their codebase because the minimum required Qt version does
not provide the replacement function.
If QT_DEPRECATED_WARNINGS_SINCE is not set by the user, it's set to
QT_DISABLE_DEPRECATED_BEFORE if available, otherwise to QT_VERSION.
[ChangeLog][QtCore][QtGlobal] Add new macros QT_DEPRECATED_VERSION
and QT_DEPRECATED_VERSION_X to conditionally display deprecation
warnings
Change-Id: I61b1a7624c9b870695c9e3274313de636f804b5d
Reviewed-by: Konstantin Shegunov <kshegunov@gmail.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Before testserver becomes a stable feature, let's keep testserver.prf in
"mkspecs/features/unsupported". The test server's shared files will be
stored in "mkspecs/features/data/testserver".
Because the path of testserver has been changed, all the tests relying
on the docker servers should be updated as well.
Change-Id: Id2494d2b58ee2a9522d99ae61c6236021506b876
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Pass it through as a traditional clang argument instead of relying on
what MSVC cl.exe can take.
Change-Id: I94405ce6ab80d16b687e62c9aa4b2866ba84f0e2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Configure will print notes in the following situations:
- redundant options, e.g. -gui -gui
- contradictory options, e.g. -gui -no-gui
Fixes: QTBUG-53499
Change-Id: I6cf023e7730907069cf971f5982a41453f611c3c
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
In release mode, MSVC linker will enable it by default
while clang-cl won't. So enable it explicitly.
Change-Id: Iabfd8698d426290fee59662acf6c124b9f226c11
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This removes the pre-dexed JAR files activated by the absence of the
bundled_jar_file CONFIG option, as versions of Android >= 5 no longer
support this deployment mechanism.
Now, the "bundled" JARs simply become normal JARs containing class
files, and are neither activated by a bundled_jar_file CONFIG entry nor
do they have a -bundled suffix in the file's base name.
Task-number: QTBUG-62995
Change-Id: I3fa6819259be365b7a697f7db1d1d01a94032395
Reviewed-by: BogDan Vatra <bogdan@kdab.com>