it is sometimes desirable to override values from the mkspec without
modifying (or wrapping) the spec itself. linux distributors do this on a
regular basis.
so far, we'd pick up CFLAGS, etc. from the environment, in a somewhat
autoconf-like fashion. however, over time, this approach proved
problematic: the concept doesn't mix particularly well with mkspecs to
start with, is unexpected (and therefore causes frustration), and
doesn't mix well with cross-building (at least the way it was realized).
ironically, it was implemented this way (quite a while ago) upon my
explicit request ...
the new mechanism uses explicit variable manipulations on the configure
command line, just like qmake itself understands. as it happens, this is
again quite similar to autoconf-generated configure scripts. however,
this time around we don't pretend to be actually autoconf-like, so we
also don't try to map any variable names (some of which have different
semantics anyway).
this commit also eliminates the last use of the QMakeVar() function,
so delete it and the underlying infrastructure.
Task-number: QTBUG-32530
Task-number: QTBUG-42962
Change-Id: Id31a6b80e1add08ca21f5b178614bda530d12374
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Add the command line options supported by the windows version of
configure and respect them when running our configure tests.
Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Change-Id: I1206d60a177e251540d34d232c73c930847564b3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Add [-no]-style-foo command line options for all widget styles, bringing
this closer in line with configure.exe. Add proper platform dependencies
and a configure test for the required uxtheme.h header on Windows. Clean
up and simplify styles.pri. Don't let configure.exe define QT_NO_STYLE_*
any more, as styles.pri does that locally anyway.
Change-Id: I81341f887a65b4e45e77380974eb79743acfad77
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Some test types (like the compile tests) require that other
features have been checked before, so that the compile test
sets up the right environment. Implement this through a
'testTypeDependencies' section in the json file that explicitly
encodes those dependencies for certain test types.
This replaces the 'priority' field in the feature list.
Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Change-Id: I70e7c67a4f2c971149bcac090cecbbe9cfff3f57
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
so far, each library was distributed over a test and (optionally) a
'library' output of a feature. this was conceptually messy and limiting.
so instead, turn libraries into a category of their own.
libraries now support multiple properly separated sources, which makes
overriding them a lot saner. sources can be conditional to accommodate
platform differences.
as an immediate consequence, move (almost) all library references from
the config test projects to the json file.
a few tests were excluded, because they are doing somewhat magic things
that should not be handled in this bulk change:
- freetype: .pri file shared with actual source code
- clock-gettime: -lrt is conditional, and there is a .pri file which is
shared with actual source code
- ipc_posix: -lrt & -lpthread conditional
- iconv: -liconv conditional
the multi-source mechanism is used to make a variety of tests work on
windows, where the library name differs from unix (and sometimes between
build configurations). some tests still needed minor adjustments to
actually work.
on the way, fix up disagreements between manually specified libraries
and pkg-config lines (affecting several xcb-related tests).
Change-Id: Ic8c58556fa0cf8f981d386b13ea34b4431b127c5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
having compound tests is messy, and we already have a separate test for
that anyway.
the kms test itself gains a fallback library, as that's what both the
egldevice test did and the actual projects using kms do.
Change-Id: I4544b64de86d58d6c6449bc0ad9095acaf144056
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
it's bound to the bourne shell, which is not readily available on
windows hosts.
on the way, the pch, fvisibility, and bsymbolic_functions tests were
rewritten as regular compile tests. they now just verify that qmake's
built-in support for the tested features actually works.
Change-Id: Ibac246f21b5ececa40da3f576dc789982eaf9fdf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
it's really a bit weird that the windows configure has more options to
configure unix features than the unix one, even if some are just
workarounds for missing auto-detection.
unlike in configure.exe itself, -posix-iconv is now also understood for
symmetry with -gnu-iconv and -sun-iconv.
Change-Id: Ic15376e5822e43b998bd17f02c11e5dd0567dc2b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
overriding an output's 'feature' field would just lead to confusing
error messages. the right way is setting the 'name' field.
adjust the 'dbus' library output to this policy.
Change-Id: I912133f3a0a50fc55f2e16a1ed6bfa464aae8d88
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
the test names should be about the dependency, not the purpose.
Change-Id: I6e45f4caa36e6c6a9e62092416bcab89893db3d2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
we pass the pre-quoted value directly to the output function, which
adds another layer of quoting. to avoid over-quoting, introduce the
'eval' attribute which sends the value through eval() first, thus
removing the extra quoting.
Change-Id: Ic63a50cb7eccc61b0f730476e124339aeb95586c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Conflicts:
configure
5.7 now supports clang on android; but dev re-worked configure
src/gui/kernel/qevent.h
One side renamed a parameter of a constructor; the other added an
alternate constructor on the next line. Applied the rename to both
for consistency.
tests/auto/tools/moc/tst_moc.cpp
Each side added a new test at the end.
.qmake.conf
Ignored 5.7's change to MODULE_VERSION.
configure.json
No conflict noticed by git; but changes in 5.7 were needed for the
re-worked configure to accommodate 5.7's stricter handling of C++11.
Change-Id: I9cda53836a32d7bf83828212c7ea00b1de3e09d2
The config test for eglfs-brcm would fail otherwise on modern Yocto-based
sysroots, as these have no /opt/vc, but have a proper egl.pc that has the
include path and libs.
Task-number: QTBUG-50838
Change-Id: Ibe8dcfbfe9aabe00fd8c040e6e41a4479ccb39bb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Report error when using RPATH settings on platforms that don’t support
it or when doing static builds
Change-Id: I2ba0c2bff5347170c7fcb339da80ef1f1974d43a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
it's the only OS with braindead "old" dtags in the first place.
Change-Id: I0fba436ff3f9fc061c1741b1899ca133b8ad6b5e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
they are really meant for pretty-printing the summary in the first
place, and were previously unused when this type was invoked explicitly
(because of using a condition).
adjust the neon/mips_dsp/mips_dspr2 descriptions to match the context
and remove the now redundant "message" fields.
Change-Id: I08558f342a0d9189a37145085e5470f91a9d0881
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
they are really meant for pretty-printing the summary in the first
place, and were previously unused for this type.
adjust the c++* descriptions to match the context.
Change-Id: I2a76b5651892bf9bd6fec315e446bfdb7c3aee97
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
they are really meant for pretty-printing the summary in the first
place, and were previously unused for this type.
adjust the sse/avx/avx512 descriptions to match the context.
Change-Id: Icf514718355c6ccd608d825b70296cc0383dbfe8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
this ensures that we complain if desktop gl or gles2 is explicitly
requested but not available.
Change-Id: Iad068ef34cdf9353cb483d4dc667ddd85ded740d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
this ensures that an explicitly requested linked/runtime support is
complained about when the test fails. the old configure would do that as
well.
Change-Id: I7f235fa7df5e5d53938de0e32b07536447b8d1d4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
introduce -openssl-runtime and -openssl [no|yes|linked|runtime] for
consistency with the respective dbus options.
Change-Id: I061b46b52b3132ead4332b33f7a60d6fe0e73ab9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
... by chaining it to the dbus feature, as is done for openssl/-linked.
Change-Id: Id1f9f761914c356d2a0056aa80213954dce3403d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Change d1b09dba45 removed the
support to detect the C++ version the compiler used by
default. In essence, it forced the compiler in C++11 mode,
if the default was still C++98.
This change reimplements the functionality in the new
configuration system.
Change-Id: Ib4bf7ade85288776f9ae2a870f19764df727e0a5
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
These arguments were nonsensical, as they would lead to every single Qt
module linking to those libraries. This was probably some left-over from
old times, when Qt was just a single library.
Change-Id: I0343a6df270fd0d2efa5333ba4e457670f5d0910
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
we need to map it to the avx512f feature.
Change-Id: I565b5bd256003aa6f80180b0e06c04bad8ea68af
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Map it to the correct feature name.
Change-Id: I7e2128e66a575ae7e562018b766d25f85c64c961
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
It's only used in one place, where it's actually not required either.
Change-Id: I5766d2b5f0c1083bbd58a9b9fb07cc67bbd46a94
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This is not a feature that should get propagated to other
configure runs, so simply hardcode support for it.
Change-Id: Ieb1c33243154b3583e91061d3592d7e87c36f402
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Detect host and target architecture from within qmake, and set
QT_ARCH accordingly.
Change-Id: I30255f88c7645d197bd07355a1dff02b377cbbe8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
There is a config test for DirectWrite we should run, so
use that instead of autoDetect=false in the new system.
Also, don't add the feature to the CONFIG variable in
configure.exe, as it's not used that way anyway.
Change-Id: I9266ccda8405adce765eac8f0435d723c6bc6f1f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
A small logic error that sneaked in during the porting of configure.
We actually want simulator_and_device to be set if input.sdk is
empty, not the other way round.
Change-Id: I8f729fbc48617618f981c70887bd4400e0b2a0c3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Command line arguments, configure tests and features are now
defined in a json file and a configure.pri containing some
custom functions.
qmake uses the json file to determine command line arguments,
tests and features to be executed at configuration time.
A new qt_configure.prf contains all the infrastructure to parse
the command line, run the configure tests, determine the set of
available features and create a report about it.
Change-Id: If30ac089dd3e9f8c67ebd642bde10cfa960893bb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>