... 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>
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>
CFURLCreateDataAndPropertiesFromResource and
CFURLWriteDataAndPropertiestoResource have been
deprecated since 10.9. We replace them with simple
QFile access.
Code cleaning and included.
Change-Id: I19c7ceac41c8c511962f1128bd8e210e3adb434c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
implement it in configure.exe and fix it in configure.sh.
Change-Id: I30764f4cba4bad0f23bfb40ce7a2ca614e1afd71
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
write them to the top-level build dir, not the qtbase build dir.
the old files will be still used for a smooth migration.
Task-number: QTBUG-46974
Change-Id: I6eae678ffc7dfb921ecd9e9012e79e3b915ad3fa
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
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>
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>
that is, save it to config.opt and recall it when -redo is used (and do
not write it again in this case).
a trivial config.status is still created, as having it is very
convenient when shadow-building.
Task-number: QTBUG-38792
Change-Id: I5e9f7374d6bfc60c427cbfd5e9b3e68bfcaae9f2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
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>
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
Conflicts:
src/corelib/io/qtemporarydir.cpp
One side encapsulated a repeated piece of #if-ery in a local define;
the other added to the #if-ery. Made its addition to the other's.
src/corelib/kernel/qeventdispatcher_unix_p.h
One side moved some members into a struct; this collided with a #undef
check that neither side now has. Discarded the #undef part.
src/gui/opengl/qopengltexturehelper_p.h
5.7 deleted a bunch of methods; not clear why merge got confused.
src/tools/moc/moc.cpp
One added a name to the copyright header; another changed its URL.
Change-Id: I9e9032b819f030d67f1915445acf2793e98713fa
it's somewhat questionable to save the environment of pkg-config, but
not that of many other things we use.
additionally, we now have logic to automatically set it up from the
sysroot when it's missing.
This reverts commit 228392aff2.
Change-Id: I0612c196c9a5023bb3ef436aebfb87cb46d8cd14
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
it positively makes no sense to have a configure test which will be
never reached due to the configure/qmake bootstrap failing with a
slew of totally unhelpful error messages.
pre-standardization partial c++11 implementations are now rejected,
except for VS2013, which is still sufficient despite not announcing full
compatibility.
Change-Id: I58af10e03960af06b80cedac105cf8433f7a1745
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Since Xcode 8 (beta 2) that tool is no longer available
through xcrun. We resort to xcodebuild instead.
Change-Id: If9d7b535c1cbac2caae0112b2003283aeff34fb9
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Detect host and target architecture from within qmake, and set
QT_ARCH accordingly.
Change-Id: I30255f88c7645d197bd07355a1dff02b377cbbe8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This can be helpful for packaging and when one wants to limit the
features to ES 2.0 to ensure the same code is used on both build
machine and deployment machine. It also prevents inclusion of
GLES3/gl3.h. Windows configure.exe doesn't do auto detection of
GLES3 so it does not get the additional option.
Change-Id: I8750b41635e41bd0ac41d9d59d93570f7d2196e6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
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>
The flag is not used anywhere anymore, so let's simply get rid
of it.
Change-Id: I0c395d18e7f0ef5af03c352753ebb537f5ae27dc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
the assumption stated in b67a0836d is actually invalid - configure sets
build_all without debug_and_release there. debug_and_release does
actually imply build_all, though.
to make things less confusing, don't let configure inject
iphonesimulator_and_iphoneos into all projects, but handle it like
debug_and_release instead.
Change-Id: Ib7acdc63308a538862fc603428f81aba60bca08e
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
And ask the user to apply one of the patches we're carrying to their
Standard Libraries.
Change-Id: I7e6338336dd6468ead24ffff141139c79056922e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Makes things symmetrical with the windows configure and cleans
up the logic in ssl.pri
Change-Id: I4a373afe78e904de7d04baea38c250ff0c9d5062
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This is not being used anywhere anymore.
Change-Id: I4d8ded9e9f6c28b594930bd1ea9347ba2db8a2e8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
CFG_WEBKIT is never set to anything (removed in 1b716724f, 2012),
so simply remove the dead code path.
Change-Id: I63ef7cc6a2bf2fbf9ceb63f1a54e28882ec6e01e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
- This is more readable in my opinion.
- Fixes the bug where configure script would fail in certain
cases for CFG_XCB="auto" by complaining of missing xcb
dependencies. "auto" should not fail, in case of missing
dependencies it should set CFG_XCB to "no".
- Error messages are more accurate.
Task-number: QTBUG-47624
Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Change-Id: I0572be4ad441931b7c771246bbd70f819d810d22
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
I don't think anybody would do this today.
Change-Id: Id4eb69fb0a38bbd2a28099b66896e55d2b8c9022
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
These plugins can't be used on Android, but they are built, installed
and also bundled into every .apk file.
Change-Id: I3326c913282af5bd43e1c732de9ae2f255711414
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
QMAKE_SWITCHES (dead/broken since d1c10615e, 2012) and QMAKE_VARS
(dead since 389f8b039, 2006) were set, but never used in configure.
SUPPORTED was defined but never used since 018aff49cd (2003).
Removed dead command line arguments -depths (qws-related, dead since
f220f99a6d), -arch, -host-arch (both 921e5193), and -qconfig (710ec5ca).
Change-Id: I6bbed56c538cdd74b68432e7fd1e51177f79cc85
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This option hasn't done anything for quite some time, let's
get rid of it.
Change-Id: Ic6f2830aaf69ba2d054ce21f0d144a61ddf5d06b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Remove a code path for a hpux inside a MINGW section when doing the
opengl detection.
Change-Id: I20b8f7948cd663ec3d6c9dcb891f6fe9a2c9c358
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Setting doubleconversion if Qt is configured with -no-doubleconversion
doesn't make sense. This also brings the output of configure and
configure.exe in line with each other.
Change-Id: I8424cc45b1b69fdb0d074e76868e83544cf5eb38
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Since the system proxies are on by default now then we turn off
libproxy support by default so that there is no risk of a conflict
occurring.
For instance on Linux, it is possible that libproxy indirectly causes
KDE 4 libraries to be loaded which will cause a conflict with the Qt 5
libraries. Therefore we turn it off by default, since the system
proxy setting is the overall better one to have.
[ChangeLog][Important Behavior Changes][QtNetwork] libproxy is now
turned off by default. Configure with -libproxy in order to enable it
again.
Task-number: QTBUG-53649
Change-Id: I0c6c5b9091dc2b2b7662fd44f2a1b49c622e563f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Richard J. Moore <rich@kde.org>
FreeBSD uses gcc as the default compiler until FreeBSD 10 where it was
switched to clang for the whole system. Choose freebsd-clang
for any system release > 10, otherwise choose freebsd-g++ by default.
Change-Id: I2bf38aa027453c25ed2a29d587c2962ded5fcd4a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
By changing the system proxies option default to being on, we
set it to be the more natural default setting. This is down
to the fact that people tend to assume that this is already
the default option.
[ChangeLog][Important Behavior Changes][QtNetwork] Proxies from
system settings will now be used by default. Configure with
-no-system-proxies to disable.
Change-Id: Iec5bbde9dff1311ce44418f6aa024bda05388cf6
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Peter Hartmann <peter-qt@hartmann.tk>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
This fixes a long-standing issue for Qt packages, where the
paths detected at configure time do not necessarily match the
paths on the user's machine. Hence they have been stripped
manually from qconfig.pri so far, preventing moc from resolving
some includes.
The same logic in configure is left alone for the time being,
since the paths there are also used to filter paths returned
by pg_config and mysql_config. I expect that this will
eventually be removed too in a bigger refactoring going on
right now in dev.
Asking the compiler for implicit paths only works for non-msvc
builds - that is, gcc, clang and icc fortunately have a
compatible way to retrieve the paths. MSVC works
solely on environment variables, which will be taken into
account by a separate patch.
[ChangeLog][qmake] The implicit compiler directories that
moc needs for resolving include files are now determined
when qmake runs. So far QMAKE_DEFAULT_INCDIR was determined
at configure time, which might be wrong for relocated
installations.
Task-number: QTBUG-52687
Change-Id: If0706e8c56a5aca2b6e777e79e90342c498726f3
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Qt 3/4 had NIS configure options and tests for NIS defines,
those were used in QPrintDialog at the time to support
NIS-printers. As the implementation went away a long time ago
and no NIS featueres are implemented anywhere in Qt, the
configure options and config.tests for NIS can be removed.
Change-Id: Ie920e6a422540bf938623265b6ee68c793aeff84
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This info wasn't really very helpful, and would anyway always
contain either Preview, OpenSource or an empty string for
commercial users.
Change-Id: I311b991834fa83cf1a183083acd5112cda3d2e41
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>