From 3b6b615334713cbfeb43409ff104244b55f4ce1f Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 28 Oct 2013 21:59:17 +0100 Subject: export QT_NO_ equivalents to the build system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit this makes it possible to properly exclude entire subprojects based on the availability of features, rather than stuffing every single source file with #ifdefs. the defines are aggregated from the -qconfig , -no-feature- and some other configure flags. usage: load(qfeatures) !contains(QT_DISABLED_FEATURES, textarea): SUBDIRS += textstuff Task-number: QTBUG-28102 Change-Id: I83400632d64312fa4b907e1318dddfe27c432387 Reviewed-by: Tor Arne Vestbø Reviewed-by: Joerg Bornemann Reviewed-by: Peter Hartmann Reviewed-by: Tasuku Suzuki --- qtbase.pro | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'qtbase.pro') diff --git a/qtbase.pro b/qtbase.pro index d608695970..37a20738fd 100644 --- a/qtbase.pro +++ b/qtbase.pro @@ -131,12 +131,16 @@ FEATURES_H = \ " *" \ " * This list is generated by qmake from /src/corelib/global/qfeatures.txt" \ " */" +FEATURES_PRI = for (ft, features) { !isEmpty(features.$${ft}.depends) { FEATURES_H += \ "$${LITERAL_HASH}if !defined(QT_NO_$$ft) && ($$join($$list($$split(features.$${ft}.depends)), ") || defined(QT_NO_", "defined(QT_NO_", ")"))" \ "$${LITERAL_HASH} define QT_NO_$$ft" \ "$${LITERAL_HASH}endif" + FEATURES_PRI += \ + "contains(QT_DISABLED_FEATURES, "^($$lower($$join($$list($$replace(features.$${ft}.depends, _, -)), "|")))$"): \\" \ + " QT_DISABLED_FEATURES += $$lower($$replace(ft, _, -))" } } write_file($$OUT_PWD/src/corelib/global/qfeatures.h, FEATURES_H)|error("Aborting.") @@ -145,6 +149,7 @@ FWD_FEATURES_H = \ '$${LITERAL_HASH}include "../../src/corelib/global/qfeatures.h"' write_file($$OUT_PWD/include/QtCore/qfeatures.h, FWD_FEATURES_H)|error("Aborting.") +no_features = lines = $$cat($$absolute_path($$QT_QCONFIG_PATH, $$PWD/src/corelib/global), lines) for (line, lines) { # We ignore all defines that don't follow the #ifndef + indent pattern. @@ -153,8 +158,22 @@ for (line, lines) { !isEqual(t, $$line) { isEmpty(features.$${t}.name): \ error("$$QT_QCONFIG_PATH disables unknown feature $$t") + no_features += $$t } } +for (def, QT_NO_DEFINES) { + !isEmpty(features.$${def}.name): \ + no_features += $$def +} +no_features = $$unique(no_features) + +# Can't simply add these to QT_CONFIG, as e.g., contains(QT_CONFIG, accessibility) matches no-accessibililty. +FEATURES_PRI = \ + "$${LITERAL_HASH} Features disabled by configure:" \ + "QT_DISABLED_FEATURES =$$lower($$join($$list($$replace(no_features, _, -)), " ", " "))" \ + "$$escape_expand(\\n)$${LITERAL_HASH} Dependencies derived from /src/corelib/global/qfeatures.txt:" \ + $$FEATURES_PRI +write_file($$OUT_PWD/mkspecs/qfeatures.pri, FEATURES_PRI)|error("Aborting.") #mkspecs mkspecs.path = $$[QT_HOST_DATA]/mkspecs -- cgit v1.2.3