automatically launch new configure system in top-level builds
this includes moving the -skip option here, where it belongs. the implementation is a bit hacky, but the proper one would be vastly more complex: we'd have to load all modules, then parse the command line properly (the -skip parsing would be a custom callback, to avoid needing to process features), then discard all now excluded modules again, then re-process the command line (so we can complain about options which are now invalid), and only now proceed with the actual feature processing. that seems a bit over the top, so we accept that -skip cannot be the argument of another option, which seems quite reasonable. Change-Id: I0053658e6d7e11b82cdfe55893cb553b664a9298 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
This commit is contained in:
parent
3e5229c689
commit
64cc947ded
7
configure.json
Normal file
7
configure.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"commandline": {
|
||||||
|
"options": {
|
||||||
|
"skip": "addString"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
qt.pro
31
qt.pro
@ -1,12 +1,10 @@
|
|||||||
# Create the super cache so modules will add themselves to it.
|
# Create the super cache so modules will add themselves to it.
|
||||||
cache(, super)
|
cache(, super)
|
||||||
|
|
||||||
CONFIG += build_pass # hack to disable the .qmake.super auto-add
|
|
||||||
load(qt_build_config)
|
|
||||||
CONFIG -= build_pass # unhack, as it confuses Qt Creator
|
|
||||||
|
|
||||||
TEMPLATE = subdirs
|
TEMPLATE = subdirs
|
||||||
|
|
||||||
|
CONFIG += prepare_docs qt_docs_targets
|
||||||
|
|
||||||
# Extract submodules from .gitmodules.
|
# Extract submodules from .gitmodules.
|
||||||
lines = $$cat(.gitmodules, lines)
|
lines = $$cat(.gitmodules, lines)
|
||||||
for (line, lines) {
|
for (line, lines) {
|
||||||
@ -26,6 +24,29 @@ for (line, lines) {
|
|||||||
}
|
}
|
||||||
QMAKE_INTERNAL_INCLUDED_FILES += $$PWD/.gitmodules
|
QMAKE_INTERNAL_INCLUDED_FILES += $$PWD/.gitmodules
|
||||||
|
|
||||||
|
QT_SKIP_MODULES =
|
||||||
|
uikit {
|
||||||
|
QT_SKIP_MODULES += qtdoc qtmacextras qtserialport qtwebkit qtwebkit-examples
|
||||||
|
!ios: QT_SKIP_MODULES += qtscript
|
||||||
|
}
|
||||||
|
|
||||||
|
# This is a bit hacky, but a proper implementation is not worth it.
|
||||||
|
args = $$QMAKE_EXTRA_ARGS
|
||||||
|
for (ever) {
|
||||||
|
isEmpty(args): break()
|
||||||
|
a = $$take_first(args)
|
||||||
|
|
||||||
|
equals(a, -skip) {
|
||||||
|
isEmpty(args): break()
|
||||||
|
m = $$take_first(args)
|
||||||
|
contains(m, -.*): next()
|
||||||
|
m ~= s/^(qt)?/qt/
|
||||||
|
!contains(modules, $$m): \
|
||||||
|
error("-skip command line argument used with non-existent module '$$m'.")
|
||||||
|
QT_SKIP_MODULES += $$m
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
modules = $$sort_depends(modules, module., .depends .recommends)
|
modules = $$sort_depends(modules, module., .depends .recommends)
|
||||||
modules = $$reverse(modules)
|
modules = $$reverse(modules)
|
||||||
for (mod, modules) {
|
for (mod, modules) {
|
||||||
@ -72,3 +93,5 @@ for (mod, modules) {
|
|||||||
|
|
||||||
SUBDIRS += $$mod
|
SUBDIRS += $$mod
|
||||||
}
|
}
|
||||||
|
|
||||||
|
load(qt_configure)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user