summaryrefslogtreecommitdiffstats
path: root/configure.pri
Commit message (Collapse)AuthorAgeFilesLines
* Convert the old feature systemLars Knoll2016-09-151-37/+0
| | | | | | | | | | | | | ... 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>
* rename description => label in configure.jsonOswald Buddenhagen2016-09-151-3/+3
| | | | | | | | | | "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>
* Modularize configure.json/.priLars Knoll2016-09-151-173/+0
| | | | | | | | | | | | Move the different parts of configure.json/.pri into the libraries where they belong. Gui is not yet fully modularized, and contains many things related to the different QPA plugins. Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Change-Id: I6659bb29354ed1f36b95b8c69e7fce58f642053f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Modularize the new configure system (infrastructure part)Lars Knoll2016-09-101-60/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Turn the available sql drivers into public featuresLars Knoll2016-09-101-4/+0
| | | | | | | | This is required to do the modularization of those features properly. Change-Id: I384aff20274e795aa70483980f0ef25309328800 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* configure.pri: Determine MSVC compiler versionFriedemann Kleint2016-09-021-0/+3
| | | | | | | | Run cl.exe /? and extract version from header line printed to standard error. Change-Id: Iecf18f1b0f94cc1d51add7021d80772784e0f953 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* unbreak pkg-config use with cacheOswald Buddenhagen2016-08-301-3/+2
| | | | | | | | | | test callbacks MUST NOT act as outputs, ever. this went unnoticed so far, as it would become visible only with configure -recheck. Change-Id: Idd923097b4b2790ef4fe8a6d430db4b62851801a Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* don't cache results of build_parts and skip_modulesOswald Buddenhagen2016-08-251-3/+4
| | | | | | | | | | | 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>
* clean up qconfig/qmodule.pri handling in configureOswald Buddenhagen2016-08-251-0/+4
| | | | | | | | | | | | | | | | | | instead of saving the files away and restoring them afterwards, use the new and shiny discard_from() function to throw away everything the files might contain. strictly speaking, this is not precise, as the pris may also use *=, -=, and possibly other operations which cannot be trivially undone, but the purpose is essentially to discard the special outputs of some features which may affect subsequent tests, for which this is sufficient. as a side effect, the failure to load qmodule.pri is not fatal any more (like for qconfig.pri), to save the pointless effort of ensuring that it exists. Change-Id: I07625b60c4f2e27b21206b2c16d24ab111737395 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add support for Apple watchOSJake Petroules2016-08-191-2/+2
| | | | | Change-Id: I3f9e00569458a463af2eaa5a3a16a6afd1e9c1ea Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* add configure test result cachingOswald Buddenhagen2016-08-191-0/+15
| | | | | | Started-by: Lars Knoll <lars.knoll@qt.io> Change-Id: I29bafc5913cf95d9908dbcdd9597df2258b69837 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Don't disable examples on iOS and tvOSJake Petroules2016-08-181-1/+0
| | | | | | | | This is just an excuse to let build failures slip past CI, as has happened and been fixed recently. Change-Id: If4356eaced0f90c7c455b21cc7676b0c9b7b1e27 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Use the qmake based configuration system also on WindowsLars Knoll2016-08-181-0/+31
| | | | | | | | | | | | | | | | | | | | 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>
* replace mechanism to override variables from the mkspecsOswald Buddenhagen2016-08-181-6/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Revamp configure system for widget stylesLars Knoll2016-08-181-1/+1
| | | | | | | | | | | | 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>
* rewrite library handling in configureOswald Buddenhagen2016-08-181-26/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* improve handling of test commands which produce outputOswald Buddenhagen2016-08-181-12/+13
| | | | | | | | | | | | | | | | | | 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>
* remove left over debug messageOswald Buddenhagen2016-08-121-1/+0
| | | | | Change-Id: I2750e9561c006e7e9dae569af0e1c9095cb1b8f7 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* don't use error() for user errors, take 2Oswald Buddenhagen2016-08-111-4/+4
| | | | | | | missed configure.pri previously. Change-Id: Ie642526a830ca6471d3f92507c7b22c812db0d86 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* platform-scope the test executables the arch test is looking forOswald Buddenhagen2016-08-101-3/+3
| | | | | | | | this is clearer, and avoids potential false hits if the target OS is changed without cleaning the build dir first. Change-Id: If88f3c555740dc9ff559c172b4b005ed8bfb60ae Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* fix handling of multi-token fields in config test definitionsOswald Buddenhagen2016-08-101-15/+23
| | | | | | | | | | | | | | 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>
* fix passing arguments with spaces to configure -D/-I/-L/-FOswald Buddenhagen2016-08-101-4/+4
| | | | | Change-Id: Ic03e487e5988fa38246975b52d1494af58ccb22f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Replace EXTRA_LIBS with EXTRA_LIBDIR and EXTRA_FRAMEWORKPATHLars Knoll2016-07-131-10/+9
| | | | | | | | 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>
* Remove -fw and -l command line argumentsLars Knoll2016-07-131-4/+1
| | | | | | | | | 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>
* Handle the -[no]make command line arguments in qmakeLars Knoll2016-07-021-1/+23
| | | | | Change-Id: I979f648b4301152e4a13ffe90aa05d9ded8556c8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Determine the set of modules to skip in qmakeLars Knoll2016-07-021-0/+21
| | | | | Change-Id: I421f50e5944962eae41700180ee49a916a2a023d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Fix handling of -v/-verbose command line flags to configureLars Knoll2016-07-021-10/+0
| | | | | | | | 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>
* Call arch test through the new qmake based configure systemLars Knoll2016-07-021-23/+75
| | | | | | | | Detect host and target architecture from within qmake, and set QT_ARCH accordingly. Change-Id: I30255f88c7645d197bd07355a1dff02b377cbbe8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Correctly detect the MSVC compilerLars Knoll2016-07-011-0/+3
| | | | | | | But without a version number for now. Change-Id: I0a976ba463cff6812faf85de03a6ad003ea582f5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Fix detection of LLVM version on macOSLars Knoll2016-06-241-1/+1
| | | | | Change-Id: I6b428ee0f89ed2b49f3698f2bf0cf53806ffdda9 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Let qmake do most of the work of configuring QtLars Knoll2016-06-221-0/+629
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>