Commit Graph

165 Commits

Author SHA1 Message Date
Liang Qi
dfc177e3a9 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	qmake/library/qmakeevaluator.cpp
	(cherry picked from commit 1af6dc2c8fb4d91400fddc5050166f972ae57c9a in qttools)
	src/corelib/kernel/qcore_mac_objc.mm
	src/gui/painting/qcolor.h
	src/plugins/platforms/cocoa/qcocoawindow.mm

Change-Id: I5b3ec468a5a9a73911b528d3d24ff8e19f339f31
2016-10-13 09:49:38 +02:00
Oswald Buddenhagen
65d5bfc63d fix referencing libs fields dispatched to the selected source
the field was "over-expanded", which led to always querying the
non-existing source with an empty name. this broke the handcrafted
openssl library export which uses the feature.

amends c0cc50520.

Task-number: QTBUG-55530
Change-Id: Id019fcb3e7adcecaf47d7a65820179da1617c0f7
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2016-10-12 09:28:47 +00:00
Thiago Macieira
310bf3f57c Make sure flags from library detections go to the right places
Split them and add -I flags to INCLUDEPATH and -D flags to
DEFINES. Anything else gets reported as a problem and dropped.

This has the benefit that qmake will automatically use -isystem for
those paths if they lie in a system directory. As a consequence of that,
we won't get any warnings in headers located there. There are multiple
cases of glib, gtk, etc. headers producing warnings (such as enums
ending in comma). This does not fix warnings produced by use of macros
declared in system headers, though...

Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Change-Id: I4b844cb518dbae5ea499811221f9015af985110a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-10-10 16:59:10 +00:00
Oswald Buddenhagen
546191b03f fix parsing of -system-proxies
this is, in fact, not the same as --proxies=system, and the old
configure handles this by putting special cases before the catch-all
patterns. we achieve this by trying the verbatim names (of all options,
which is admittedly a tad inefficient) before applying the -qt/-system
transformation.

Change-Id: Ic85a9d76d6e8ca95b2e1b5566f047f4b7ac38b98
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-04 08:26:49 +00:00
Oswald Buddenhagen
0872b62b2e make command line parsing more compliant with configure script
- generic --* options are defined to be booleans, without the
  possibility of having an additional parameter
- -qt and -system options don't exist in the --* form
- --foo=bar options exist only in the --* form

Task-number: QTBUG-55610
Change-Id: Ib0480ac6f479df48045c9de8e854a525862ee363
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-04 08:26:39 +00:00
Jake Petroules
28f5d79316 Share the multi-arch infrastructure between UIKit and macOS
There's no reason for this to be separated, regardless of the
support status of i386 macOS builds. Additional architectures may
appear in the future (and currently there's actually 3 - i386,
x86_64, and x86_64h for Haswell CPUs). So this feature could be
used to get combined generic x86_64 and Haswell builds. Some
system libraries appear to have an x86_64h slice in Sierra.

[ChangeLog][Build System] Support for universal binaries on macOS
has been re-introduced.

Change-Id: I1c89904addf024431fdb3ad03ea8ab85da7240ad
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-09-29 21:51:18 +00:00
Lars Knoll
a668c6a6b6 Convert the old feature system
... to the new qmake based configuration system.

This removes the old qfeatures.txt (distributed over configure.json
files) and qfeatures.h (distributed over qconfig-<module>.h files).

qfeatures.prf is gone without replacement, as attempts to use it would
lead to followup errors anyway.

Change-Id: I1598de19db937082283a905b9592d3849d2199d0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-09-15 08:24:10 +00:00
Oswald Buddenhagen
b754b2815d rename description => label in configure.json
"description" suggests something slightly longer.

this may seem like a gratuitous change, but the upcoming replacement of
the old feature system clarifies makes it seem much less so.

Change-Id: Ibe702e01cb146b59127bf1f990b4acaef1c61d55
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-09-15 08:24:00 +00:00
Lars Knoll
60e5a1c8ef Modularize the new configure system (infrastructure part)
This change implements the required infrastructure to modularize the new
configuration system.

This requires a hierarchy of configuration files, both for handling
multiple repositories and for individual modules inside the same
repository.

When configuring, they all need to get loaded first, as command line
processing needs to know about all possible command line options.

When the command line has been processed, the individual configuration
files need to get processed one after the other and independently from
each other.

Configure is now automatically invoked when building the a project
tree's "root" project; this works with both modular and top-level builds
of Qt (the latter with an according change in the super repo). As an
immediate consequence, the -skip option moves to the super repo with a
different implementation, as configuration is now done after the repo
list is determined. The option belongs there anyway.

This commit also adds an optional testDir entry to the json file. Like
this, we can still have all configure tests in qtbase/config.tests and
the configuration file in, e.g., corelib can reference those.

The files section can now be left out as long as a 'module' entry is
present, specifying the module name. The names of the files to generate
can then be deduced from that name. We still need to be able to specify
names directly for the global configuration files.

qtConfig() now also queries features which are module-specific. As it is
sometimes necessary to query the configuration of modules which should
not be actually linked (and cannot in the case of subdirs projects), the
new variable QT_FOR_CONFIG which allows specifying configuration-only
dependencies is introduced.

Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Change-Id: Id1b518a3aa34044748b87fb8fac14d79653f6b18
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-09-10 14:04:01 +00:00
Lars Knoll
b95b00c61a Be more robust when reading the library version number from pkg-config
Ignore everything that after the initial period separated numbers.

Change-Id: I376b154ff0ab6e3877223ec1383ed4708ecd2164
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-09-10 14:03:43 +00:00
Thiago Macieira
8cfac7fba6 configure: ask pkg-config only for the info we're interested
No need to get libs flags other than -L and -l, since we're adding
everything to the LIBS variable in qmake anyway. We wouldn't want rpath
or other linker flags to leak through.

Change-Id: I7d42fe4b581e49df891cfffd146fab61fecbc5c9
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-31 19:22:34 +00:00
Oswald Buddenhagen
57d4b8f328 de-duplicate code relating to evaluation of 'negative' flags
Change-Id: I3fe4816719d9b2885319a1bb516cfb137f13e3f8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-30 13:24:20 +00:00
Oswald Buddenhagen
793f4ae5c9 remove pointless export from qtConfHandleLibrary()
that variable is not modified in this scope, so there is no point in
exporting it here. it was probably a leftover from an earlier version.

amends c0cc50520.

Change-Id: Ic6f93d8c38d547308aa88ef337fe49bda004b337
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-30 13:24:17 +00:00
Oswald Buddenhagen
03247666ee make qtConfOutputVar() a tad less cryptic
don't use variables where the value is known.

Change-Id: I3ec21441c5b7ee0b028f8f72e05d9e40e6192ecf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-30 13:24:11 +00:00
Oswald Buddenhagen
7e97d360a3 don't export cached libraries which were in fact not found
amends ce7df6ac7d.

Change-Id: I9898e756283a2e2556458bf71b59b0c1c76064ec
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-30 13:24:07 +00:00
Oswald Buddenhagen
15c39dfe3d don't cache test result after pre-dep failure
there is no point in doing that, as we don't load it in that case
anyway. in fact, it would lead to caching a new result in every run.

Change-Id: Ia5cb27fa8a5d705d7f32a785b1e3b944f92d8929
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-25 11:59:54 +00:00
Oswald Buddenhagen
0f68ac2512 don't cache results of build_parts and skip_modules
as these tests do nothing but validating the command line, caching the
result is more confusing than anything else.

also make the tests silent, so they don't clutter an otherwise fully
cached configure run.

Change-Id: Ifc3d65278769b36a056650f077fd6274a7e192e7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-25 11:59:15 +00:00
Oswald Buddenhagen
d7a2852dd4 remove extra empty line before configure report
Change-Id: Id985e4738dda89e4d1af1ceccda33d830316e66a
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-25 11:54:41 +00:00
Oswald Buddenhagen
ce7df6ac7d add configure test result caching
Started-by: Lars Knoll <lars.knoll@qt.io>
Change-Id: I29bafc5913cf95d9908dbcdd9597df2258b69837
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-19 04:28:55 +00:00
Lars Knoll
b62a42dde1 Remove useless guards around #define's in qconfig.h
These are not meant to be overwritten by command line defines
anyway. Bad things could happen if they are not in sync with
the values in the pro files.

If you want to change them, reconfigure Qt.

Change-Id: Ic456e54b97e6909f01a4f4be33e3d7e2b2571e80
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-19 04:28:48 +00:00
Lars Knoll
56ee007b3f Rework privateFeature
privateFeature would add QT_NO_FEATURE to the DEFINES in the private
.pri file, which was somewhat inelegant.
Additionally, it would add the feature to the _public_ QT_CONFIG
variable, which was plain wrong.

Replace the implementation with the one just introduced for
publicFeature, with the difference that the features are written to the
private files instead.

As this entirely disposes of the old system, all usages in the project
files need to be replaced atomically as well.

Change-Id: I506b5d41054410659ea503bc6901736cd5edec6e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-19 04:27:29 +00:00
Lars Knoll
606924132f Add support for safe feature checking at compile time
Added a qtConfig(feature) function to qmake, and a QT_CONFIG(feature)
macro. These can safely check whether a certain compile time feature of
Qt is enabled or not.

For this to work the feature has to have a publicFeature or
privateFeature output in the configure.json file.

In pro files, please use the qtConfig(feature) test function
instead of checking contains(QT_CONFIG, feature), as the latter
will be unreliable with the upcoming modularization (it requires a
load(qt_module_config) before doing any such checks). Note that
feature names are now lowercase, and identical (except for hyphens
versus underscores currently) in the pro and c++ files.

This makes the logic easier to follow, as we avoid all double negations,
and most importantly, QT_CONFIG and qtConfig are implemented in a
way that you'll get a build error for a mistyped or non-existent
feature. This will also prevent accidental use of a widget feature
in gui in the future.

This gives us complete symmetry between the handling in pro and
c++ files.

Change-Id: I60404f97953724e639ffb6386cce2e8b1e4b735a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-19 04:27:17 +00:00
Lars Knoll
48b4e0bf6f Improve library version handling
Output the version as a define into the private config header as
a define using a hex number. Like that we can easily do version checks
on libraries using the QT_LIBRARY_VERSION(lib) and QT_VERSION_CHECK()
macros.

Change-Id: I6dc4ac6550886ca95c5542b6e75cd933ed079d76
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-19 04:27:06 +00:00
Oswald Buddenhagen
d90db0f136 rewrite makespec verification with qmake based system
cleaner, and covers windows as well.

Change-Id: I0e884909a3f49610fab750ba1ef6112f43e5d5d1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-08-18 17:10:52 +00:00
Lars Knoll
97b856b788 Use the qmake based configuration system also on Windows
Adapt configure.exe to use qmake to do most of the work of configuring
Qt. This unifies a large part of our configuration system between Unix
and Windows. configure.exe is now still doing the license check,
creating qconfig.cpp, building qmake, and not much more.

On the way, re-implement the still missing Windows-specific tests with
the new system.

The opengles2 vs. opengl-desktop conditions got a bit convoluted, as
Unix prefers desktop GL, while Windows GLES2 (via ANGLE). Superficially,
there is a circular dependency, but the platform scopes are supposed to
break it.

Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Change-Id: Ia1941f2c34b7f5bd4990a7673cd737361381c2e7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-18 17:10:47 +00:00
Lars Knoll
6a90c9a8e5 Handle windows line endings and tabs in json config files
Change-Id: I154629d862977dde5232db3bb2597474b6053ffd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-18 17:10:35 +00:00
Oswald Buddenhagen
fd3e12e7a6 replace mechanism to override variables from the mkspecs
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>
2016-08-18 17:10:25 +00:00
Lars Knoll
9172143f52 Add configure.exe-like FOO_LIBS=bar style command line options
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>
2016-08-18 17:10:18 +00:00
Lars Knoll
27b03be893 Add support for locating headers and libs in qt_configure
So far we only had support for locating executables. Also
support locating header files and libraries.

Change-Id: Ib2a83e8338d2da975204089d84c608061a081f29
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-08-18 17:10:03 +00:00
Lars Knoll
c8b46d3989 Implement proper dependencies for configuration tests
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>
2016-08-18 17:09:57 +00:00
Oswald Buddenhagen
c0cc505209 rewrite library handling in configure
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>
2016-08-18 17:09:52 +00:00
Oswald Buddenhagen
492d7d14fc improve handling of test commands which produce output
never use $$system() directly, but instead use qtRunLoggedCommand() with
a newly introduced out parameter. that way we can print the command's
raw output, which should help debugging configure problems.
additionally, we now consistently check the exit code of all executed
commands, which should avoid confusing followup errors.

note that as a side effect some calls now use $$system()'s 'lines' mode
instead of the bizarre default splitting mode. this has no impact on any
of the cases, which is why it is basically a negligible style change at
this point.
however, qtLog() gained support for arguments with more than one element
to accommodate this.

Change-Id: I40d907e27de32dfec8d6086ce7d93fc4be18241f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-18 17:09:38 +00:00
Oswald Buddenhagen
4a1bafcc4e get rid of test type 'shell'
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>
2016-08-12 22:04:50 +00:00
Oswald Buddenhagen
e23471abc0 fix quoting in the basic qmake command construction
... and refactor it to make it less scary.

note that "qmake_args" now basically means "qmake + args".

Change-Id: Ifa5b756642de95e2aadf01606d936ea1d7a18210
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-11 08:05:27 +00:00
Oswald Buddenhagen
46cb5a4dce make it impossible to lie about the feature an output belongs to
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>
2016-08-10 15:43:29 +00:00
Oswald Buddenhagen
08f6545dcb fix over-quoting of OPENSSL_LIBS and QT_HOST_CFLAGS_DBUS
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>
2016-08-10 15:43:02 +00:00
Oswald Buddenhagen
bcd0653e10 fix exit paths when pkg-config is not found
while the previous code actually worked, it's probably more or less
coincidence that running "false" produces the correct result.

Change-Id: Ib332bd6789ac7188570ba1af4676494b4e2c9d8c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-10 15:42:57 +00:00
Oswald Buddenhagen
472332559a fix use_gold_linker not being used by compile tests
Change-Id: Ib43ddb5174fd2d9b45f3c1a3e6d90f2b8f0dddd1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-10 15:42:50 +00:00
Oswald Buddenhagen
52b3a81865 don't distclean before every compile test run in non-clean build dir
due to gmake's Makefile auto-rebuild feature, the distclean would
typically invoke qmake. overall, the step would almost double the run
time of each compile test.

instead, just clean between the regular qmake and make steps. this
deletes the object file the test executable depends on, so this is
sufficient to trigger a full rebuild.

Change-Id: If8e254e172dd169e31fd606d9ef31d9a14f670d8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-10 15:42:40 +00:00
Oswald Buddenhagen
a4e1bc5b13 fix 'test' field checking in qtConfOutput_library()
Change-Id: I7cfcc33e188713f32d31e023999f5059c0bd05b1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-10 15:42:33 +00:00
Oswald Buddenhagen
62838f07d4 fix handling of multi-token fields in config test definitions
standardize on the fields in the json structure being single strings in
which separate elements are quoted and space-joined (because quoting
is unlikely to be necessary in the json file itself, and this format
avoids the visual noise of array handling).

the quoting itself is expected to be qmake-compatible, which is assumed
to be the case for the output of pkg-config (it's actually shell-quoted,
but that's the same except in some not-so-relevant corner cases).

Change-Id: Icc1d7abc02c449fa759d9714bc5e56e2b8809585
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-10 15:42:23 +00:00
Oswald Buddenhagen
53e06e68b6 fix passing arguments with spaces to configure -D/-I/-L/-F
Change-Id: Ic03e487e5988fa38246975b52d1494af58ccb22f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-10 15:42:17 +00:00
Oswald Buddenhagen
865d80fdb5 remove workarounds for spurious function argument inheritance
the qmake bug has been fixed recently.

Change-Id: I4a4226b3cd77d449980f73e41cd256ed43940a09
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-10 15:42:12 +00:00
Oswald Buddenhagen
815a41f714 make use of silent error() emission
get rid of the entirely superfluous stock "Aborting." messages -
the event triggering the exit has already reported the problem.

Change-Id: Ib9dfb9e4212f60eceb2ea432cdf56c5a8afe9d65
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-08 09:48:41 +00:00
Maurice Kalinowski
bbca3cb78d Change test's entry point only when actually building it for winrt
Change-Id: I14de901e8cf16d0172a4bd35611c17de753348be
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-22 17:07:50 +00:00
Oswald Buddenhagen
34173e9350 print an empty line after every report
otherwise we get an unintelligible mess if multiple messages are emitted
in the same category. also, there were already empty lines between
categories, so it was also inconsistent.

Change-Id: I5e6622bc8a5d2773bbd99124cedf4e3eb73b8a60
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-22 10:28:14 +00:00
Oswald Buddenhagen
f914870e31 permit wrapping expressions in the json file
the json parser passes line breaks verbatim, so we need to get rid of
them ourselves.

Change-Id: I3b71fe54dcaa8c3a2ff94e8ac4845f49dabe1663
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-22 10:28:07 +00:00
Oswald Buddenhagen
b451a6e514 make 'feature' report type always use the feature descriptions
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>
2016-07-22 10:28:03 +00:00
Oswald Buddenhagen
2b78a49f22 make firstAvailableFeature report type use the feature descriptions
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>
2016-07-22 10:28:00 +00:00
Oswald Buddenhagen
caf51ee0dd make featureList report type use the feature descriptions
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>
2016-07-22 10:27:56 +00:00
Oswald Buddenhagen
62b0113c7b fix recognition of -no-verbose
while probably not too useful, the old configure does allow explicitly
disabling verbose mode.

Change-Id: If0585443c649a67f616b3668cc90b18fecde11ba
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-22 10:27:35 +00:00
Oswald Buddenhagen
70970ad981 don't mention config.log in error messages when not applicable
Change-Id: I127bc23c667d337bbe2518e7364ca99db9a3163a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-22 10:27:24 +00:00
Oswald Buddenhagen
09110cdbea don't error() out on user errors
use the proper error reporting mechanism instead.

Change-Id: I3afb0086e5cd672d3c0f441c429682850202024f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-22 10:27:21 +00:00
Oswald Buddenhagen
0c3f431769 make command line parsing error messages consistent
... by adding some quoting and punctuation.

Change-Id: I553171a0c001edc195fcf2e85f0f70bf2cfdd728
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-22 10:27:17 +00:00
Lars Knoll
c81f957457 Fix the linkerSupportsFlag configure test type
Change-Id: Iefc874958d1f6d2447f9774a9c3cdf6d7a3b885b
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-07-15 06:52:25 +00:00
Lars Knoll
4cb3c3e15a Replace EXTRA_LIBS with EXTRA_LIBDIR and EXTRA_FRAMEWORKPATH
Now that -l and -fw options are gone, using a combined EXTRA_LIBS
makes no sense anymore and only complicates things.

Change-Id: Ic12bf482f3bed041aff7f0891f008b1f34ae2b4d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-13 19:51:34 +00:00
Lars Knoll
a64d1d5499 Fix log message
Change-Id: I0192d3a3073038d98e72ce7abd3bf1ecae002989
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-08 13:03:20 +00:00
Lars Knoll
27be7c764e Make more configure tests work on Windows
Change-Id: I87d775de7b6d790a44bbc3c9598d617ad57d9d4c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-05 15:48:53 +00:00
Lars Knoll
c167308c5d Fix handling of -v/-verbose command line flags to configure
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>
2016-07-02 06:18:40 +00:00
Lars Knoll
3114237877 Call arch test through the new qmake based configure system
Detect host and target architecture from within qmake, and set
QT_ARCH accordingly.

Change-Id: I30255f88c7645d197bd07355a1dff02b377cbbe8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-02 06:18:32 +00:00
Frederik Gladhorn
5b66f4ba40 Allow passing configure opts with two dashes again
The regexp were capturing too greedy:
$$replace(c, "^--?(.*)", "\\1") changes --developer-build to
-developer-build. Do not accidentally capture the second dash.

Change-Id: I19586a1678fc3bf3f450ec31f5bd7e71e9514b34
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-01 21:17:53 +00:00
Oswald Buddenhagen
d0e4f28dea pass pkg-config environment to qmake invocations
qmake tries to use pkg-config when the config.test contains PKG_CONFIG,
which will of course fail without the sysrooted env vars. and unlike in
the old configure, these don't become automatically available by virtue
of the script simply exporting them.

longer-term, the test programs shouldn't mention pkg-config deps
explicitly, as these are redundant with what is specified in the JSON
file. relevant changes are already pending.

Task-number: QTBUG-54403
Change-Id: Ie9d3bbb2e4febffde5fd122d7d0a8b70b8679fcc
Reviewed-by: Liang Qi <liang.qi@qt.io>
2016-06-28 18:23:42 +00:00
Oswald Buddenhagen
16203353d0 beautify generated spacing
don't have extra spaces in the pkg-config calls when no environment
variables are injected.

Change-Id: Ieb14f775b2a04726e8f62114b69d9be7fa662eb0
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-28 18:23:39 +00:00
Oswald Buddenhagen
0c382efc79 use globally available constants
configure_base.prf gained them in a bugfix in 5.6.

Change-Id: I7763b3dcdfbcc6cfb0392ddc4b6556f926395111
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-28 18:23:34 +00:00
Lars Knoll
90eee08b3e Let qmake do most of the work of configuring Qt
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>
2016-06-22 14:19:35 +00:00