Commit Graph

7744 Commits

Author SHA1 Message Date
Oswald Buddenhagen
76f0ce06e2 make 'qmake_all' targets respect .depends and CONFIG+=ordered
Change-Id: I010a9886ee0d40e4319cb6bd873b038336a42111
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-06-19 16:46:05 +02:00
Oswald Buddenhagen
2bbd50c6e4 make 'qmake_all' target of SUBDIRS projects properly recursive
so far it would rebuild the makefiles one level down only, which is
somewhat arbitrary and not really helpful.

Change-Id: I5fe01f379ecc4b210610a674d7df7dfc18131eef
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-06-19 16:46:05 +02:00
Oswald Buddenhagen
76ed07168d make 'qmake' target of SUBDIRS projects non-recursive
that's consistent with other projects. 'qmake_all' can be used for
recursion.

Change-Id: Ie6d620f7a3e0e28d3f2f82f01ca94c2f46137c68
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-06-19 16:46:05 +02:00
Oswald Buddenhagen
0e6ddb71cc don't use $(MAKEFILE) to refer to SUBDIRS' makefiles
$(MAKEFILE) is our own file, and using it would wreak havoc if it was
named anything but Makefile.

Change-Id: I51cae2014a85399b409f18788f864ff2a82e493e
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:05 +02:00
Oswald Buddenhagen
91cf67c85d do not add "/." to _PRO_FILE_PWD_
if a "subdir" project added a project file from the same directory as
itself, "/." would be appended to the path, which is obviously not useful.

Change-Id: Ia733dedb57e568c5cf9a3d5eb29727176a5142c5
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:04 +02:00
Oswald Buddenhagen
3d31e39f13 don't refer to removed headers
Change-Id: Ib1d51f8fb6078c6ac365b455bde5bebf66b13b15
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:04 +02:00
Oswald Buddenhagen
426d1ef0c1 allow projects to suppress qmake recursion
webkit does some unholy tricks with the ordering of qmake and make
invocations, so it does not work with qmake -r. to make it still
possible to integrate it into the qt5 aggregator project, give it a
chance to "break out" from the recursion.

Change-Id: I926836e44c0e0790cdd90e6b0c8f766dccc33c4d
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-06-19 16:46:04 +02:00
Oswald Buddenhagen
98470fd9be scan module path backwards
the last read file wins, so reading in inverse order ensures that we
respect the list's sorting by decreasing priority.

Change-Id: I2e6539a52d4195ed6af4c0143b035c39577b8310
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:04 +02:00
Oswald Buddenhagen
a56ef02b2d let default_pre add modules to the qmake path
that way qmake is made aware of the forwarding pris which are generated
for this module even when a top-level .qmake.cache prevents the module's
root from being found automatically.
the path is also added to the cache, so that subsequent partial
qmake-ing of the tree will still find the module.

this also makes the -cache-module-fwd parameter of syncqt useless, so
remove it.

Change-Id: I2afbc52a465c0b3260e9bcaf032c43a82ae8061f
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:03 +02:00
Oswald Buddenhagen
a943f40483 recognize QMAKEMODULES env var, property and cache variable
the latter allows sub-projects to dynamically extend the qmake search path
specifically for modules. the others are just for congruency with
QMAKEPATH and QMAKEFEATURES.

Change-Id: I0c099035f8dc8ee8645566dbc635644a15ed9da5
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:03 +02:00
Oswald Buddenhagen
e78c3bb620 look for mkspecs/ even below .qmake.cache/.conf-determined root
otherwise a cache/config in an aggregator project may unduly hide the
mkspecs/ of the aggregated project from qmake's view.

Change-Id: Idb0b124de071822f8f55463d9f8a4d194ef3130e
2012-06-19 16:46:03 +02:00
Oswald Buddenhagen
1f83f0cf2a add support for a super cache
qmake will now look for .qmake.super, just like it looks for .qmake.cache,
and the cache() function has a mode to write this super cache.
this allows the creation of aggregator projects like, say, qt5.
a notable difference to the normal cache is that this file is *not* added
as a dependency of the Makefile. this means that modifications done by
later sub-projects will not cause a re-processing of earlier projects, and
consequently that one should be cautious regarding what information to
store there.
another notable difference is that this file is read *before* the spec,
so the spec can use the variables from the cache without resorting to
$$fromfile() & co.

Change-Id: I4807b6d34014261fa9eebd6f0ae128b802d86691
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:03 +02:00
Oswald Buddenhagen
16d5b6911f look for .qmake.conf files
this is the source dir equivalent of .qmake.cache and can be checked
into the repository. it can be used to make project-wide settings, or
just to signal the presence of an mkspecs/ directory.

Change-Id: I5f1cebad2aa2a89e78089341b2051613b6b7a613
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:02 +02:00
Oswald Buddenhagen
f86f3613a5 find .qmake.cache for subprojects independently
this allows the creation of aggregator projects, like, say, qt5.
this is not expected to have a negative impact, as no project could
reasonably expect a nested .qmake.cache to *not* take effect - in fact,
if the project was processed stand-alone, it would already use it.

Change-Id: I33f2935d309baba7e95465f2fefb8231c4f03eda
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:02 +02:00
Oswald Buddenhagen
c80697cfbe allow setting QMAKEPATH and QMAKEFEATURES in .qmake.cache
Change-Id: Ie383abb57c06cb49d38345d64750837b8fe14c70
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:02 +02:00
Oswald Buddenhagen
e894155a41 don't duplicate project_build_root's calculation needlessly
Change-Id: Id2f343c450149b13b52c2cae8eb6eb4bfd73fc03
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:02 +02:00
Oswald Buddenhagen
32042413f2 move generation of module master headers to qt_module_headers
this has the advantage that the %mastercontent assignments in sync.profile
are not necessary any more. as it happens, most modules got them wrong
anyway.

Change-Id: Ibdf689be408f18e1d90c44ef4ecacd7c24b1f1c9
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:01 +02:00
Oswald Buddenhagen
8dba9e50ac make master phonon compat header a forwarding header
instead of writing the same file twice, just forward to the compat
header, like it is done for every other header.

Change-Id: I8c908f80149aff4720cca6d51ab5b550c31f78b1
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:01 +02:00
Oswald Buddenhagen
eae5135808 remove detection-based usage of modules which are frameworks
each qt module comes properly declared and located, so there is simply
no point in performing a search.

Change-Id: I86fad21bb8e128b85f1000cc116cc44a23642eb4
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:01 +02:00
Oswald Buddenhagen
a0374fd490 fix direct includes from modules which are frameworks
Change-Id: I1f2c1e5ebdb2fa258500a08b32dcafb4150ee424
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:01 +02:00
Oswald Buddenhagen
5cea63d2f2 let modules which are frameworks remember that fact
this will allow us to not rely on the modules matching the global
qt_framework setting.

Change-Id: Ic1dce757ff63d06af54a2428e23a1bbcf1c81ba1
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:00 +02:00
Oswald Buddenhagen
88a07df5e5 remove workarounds for broken syncqt
SYNCQT.HEADER_FILES contains qconfig.h just fine nowadays.

Change-Id: I52b35d2ac41d772acaef06f3931df75742c867cb
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:00 +02:00
Oswald Buddenhagen
c595988a58 automatically add QT_BUILD_FOO_LIB to DEFINES
Change-Id: I35d9861e48469eb5cc8824e361450684047e6559
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:00 +02:00
Oswald Buddenhagen
0f548b1744 remove backwards compatibility hacks
there won't be terribly many projects relying on it. now's the time to
find out for sure ...

this reverts commit 3279b07302fde0eb14f9b197c9ad2e14d512817e

Change-Id: Id36687ab3bfc7dd5ce35b584621a8f5b3ee00fc9
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:00 +02:00
Oswald Buddenhagen
6fb0b7f5fc clean up projects from QPRO_PWD nonsense, etc.
Change-Id: I4c41aedf5bfb37e31ad202cacd2312b0bdb168e2
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:59 +02:00
Oswald Buddenhagen
131ba187f2 auto-generate QMAKE_PKGCONFIG_REQUIRES and QMAKE_PKGCONFIG_DESCRIPTION
less boilerplate, more accuracy

Change-Id: I6cc2abd50eafb4901d987c122f10a62ec9ea9da3
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:59 +02:00
Oswald Buddenhagen
f3cca88ac4 move QMAKE_PKGCONFIG_VARIABLES stuff out of qt_module_config.prf
this only needs to be set in one module each - the one which provides
the relevant tool.

this is moderately source-incompatible, in that a package which queries
a given variable from the wrong library won't get the path it looks for
any more. as it's likely that everyone was using QtCore as a reference
anyway, this will only affect uic - which is in the new QtWidgets
library, to which people need to adjust anyway.

Change-Id: If05d3c33fda6cd12466e261391b825c59651d3e4
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:59 +02:00
Oswald Buddenhagen
19009cde45 remove ACTIVEQT_IDC assignment from QMAKE_IDC
the specs have been cleaned of it

Change-Id: Ica0ab4d5f9d36f1f9566759326f3b3144e34cd67
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:59 +02:00
Oswald Buddenhagen
65c1ed6281 remove support for CONFIG+=qt_compat
this is truly prehistoric stuff

Change-Id: Ia781fc03c081bff895f4d2b5325d3624441bdf5f
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:58 +02:00
Oswald Buddenhagen
8b75fc7bac don't explicitly inject qt header/library paths
the modules already do that on demand.

Change-Id: I889a5cd7b62631e2551ada4b096f20b3b79b2c75
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:58 +02:00
Oswald Buddenhagen
4816ca6c56 always add library path from module
that way we can theoretically support modules outside $QTDIR.
also, it's just cleaner.

Change-Id: I6139ebc7328b64ace8552b3e54f9a8c69248ceec
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:58 +02:00
Oswald Buddenhagen
5d1b4c79d2 make module includepath addition less convoluted
don't prepend the paths, as this will only mess up building of
subsequent modules (e.g., building qtdeclarative against an installed
qtbase would pick up the headers from the qtdeclarative previously
installed into the same directory as qtbase).
for frameworks this was a rather pointless exercise in the first place,
as their headers are properly isolated anyway.

however, make sure that we don't add system locations to the search
paths, as this is a) unnecessary and b) messes up subsequent libraries
in non-standard locations which want to shadow versions in standard
locations (pkg-config .pc files which add standard paths are considered
broken as well).

Change-Id: Ie1dc65d4767e98e1df6e49012505141935a6c704
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:58 +02:00
Oswald Buddenhagen
46ae5598e5 add qtCompileTest()
this fully replaces qtmodule-configtests.
it is way shorter and it actually integrates reasonably with qmake.

Change-Id: I819cc6807ad3661c419b54fa253894936dd88a64
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:57 +02:00
Oswald Buddenhagen
2d8dd9a6c9 do not route qtmodule-configtests invocation through syncqt
there is completely no reason to do it.

Change-Id: Ie186ef4c1bbd12c256acb2fe374d12ebe777d6c9
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:57 +02:00
Oswald Buddenhagen
0b37ec3321 don't use qt_module_config for winmain
it is not really a Qt module, and pretending causes some messups.

Change-Id: Id0980f7c00d6d176dd4937f8b265b8b571aa1277
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:44:56 +02:00
Oswald Buddenhagen
0b76b7ab8a auto-generate module pris
Change-Id: I654428771034221ccf424be34d5d9c7764daf3b4
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:06 +02:00
Oswald Buddenhagen
fb36b22269 don't refer to module versions during bootstrap
once we auto-generate the pris while building their respective modules,
the versions won't be available during bootstrap yet.
however, as these are core modules, their version is locked to the global
$$QT_VERSION anyway, so just use that.

Change-Id: I092f5e7d4dfe99c03e0df71f9409cac9be9f2297
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2012-06-19 16:40:06 +02:00
Oswald Buddenhagen
95b2e051f9 move creation of module version header to qt_module_headers
Change-Id: I650b495ec1789eb03b31d796f9f475ba01aab2d3
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:05 +02:00
Oswald Buddenhagen
e0839abbb4 create module version headers in build dir, not source dir
Change-Id: I07bf4dbeba2d35284ecf55542f9cd457b2e49b80
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:05 +02:00
Oswald Buddenhagen
3c69bb8291 make %inject_headers a per-module config value
it's module-specific.
on the way, fix it to actually support multiple files.

Change-Id: I796b0e98e38a54754022e0e2fa48cecb54d06ff4
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:05 +02:00
Oswald Buddenhagen
61bcd838fa automatically add the module version headers to %classnames
Change-Id: I7706a0d54e704320e9e1e480b387e46417739ccf
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:05 +02:00
Oswald Buddenhagen
e203e42906 automatically add the version header to HEADERS
Change-Id: I7c2e1d852ebdbc5cca7a3a31ab2b4c9ab9faffd9
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:04 +02:00
Oswald Buddenhagen
92c76ffcf1 factor out qt_module_headers.prf
this doesn't make too much sense as such, but the file will grow.

Change-Id: Iceaecdc24f83b3dafb40c8d2f1b6cddafa2d70a1
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:04 +02:00
Oswald Buddenhagen
94bd205575 make sure that forwards for injected headers are not garbage-collected
qmake-generated version headers don't exist yet at the time syncqt runs,
so the forwarding headers would be deleted - just to be re-created a
moment later, thus changing the timestamp for no good reason.

Change-Id: I1b4c2f05f57c2315adf4b8dd726ea413ede1be5b
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:04 +02:00
Oswald Buddenhagen
912f7efbd4 fix status output for generated headers
Change-Id: I92c250037eb1b1838998cddbaea6ca065153e86e
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:04 +02:00
Oswald Buddenhagen
b2dc56d5cf make headers.pri locality determination less convoluted
the location is determined by syncqt rather precisely. no need to
reverse-engineer config files.
$$HEADERS_PRI doesn't seem used anywhere, so don't set it as a side
effect.

Change-Id: I54a63356c350c0ddae4c880bf374fcd127282429
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:03 +02:00
Oswald Buddenhagen
a8ad1e77ba generate fwd-pris in qt_module_config, not in syncqt
the forwarding pri is loaded even if it was still created by syncqt, so a
top-level qmake -r will still catch it even in the future.

Change-Id: I2e4b556cd06eb88be9ee378662a2e6e1bff67ad7
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:03 +02:00
Oswald Buddenhagen
d31f4a560d bring statements into a somewhat logical order
Change-Id: I7bfbcd414bd2c8ff82e210c075b88f1ca00d3b73
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:03 +02:00
Oswald Buddenhagen
a18bd8203d remove qt from CONFIG for non-artifact templates
there is no point in adding Qt modules to SUBDIRS projects.
as QT contains core and gui by default, the operations are relatively
expensive, so skip them when they are unneeded.

Change-Id: Ibe6447ff452e403cb040fabe245d248edbda0eaa
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:03 +02:00
Oswald Buddenhagen
ffa2e1d007 define have_target CONFIG flag
the check whether we are building a lib or an app (and thus have a target)
is done by quite some feature files (and generally wrongly, as they do not
account for the new aux target), so centralize it in default_post.prf.

Change-Id: I868edbc4185be8a6c23ecd4a2c126024d73cdeb4
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:02 +02:00