summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure16
-rw-r--r--configure.json7
-rw-r--r--configure.pri37
-rw-r--r--examples/network/network.pro3
-rw-r--r--examples/widgets/tools/tools.pro3
-rw-r--r--mkspecs/common/linux-android.conf1
-rw-r--r--mkspecs/common/uikit.conf2
-rw-r--r--mkspecs/common/winrt_winphone/qmake.conf3
-rw-r--r--mkspecs/features/qfeatures.prf4
-rw-r--r--mkspecs/features/qt_configure.prf16
-rw-r--r--mkspecs/integrity-armv7-imx6/qmake.conf1
-rw-r--r--mkspecs/integrity-armv7/qmake.conf1
-rw-r--r--mkspecs/integrity-x86/qmake.conf1
-rw-r--r--mkspecs/qnx-aarch64le-qcc/qmake.conf2
-rw-r--r--mkspecs/qnx-armle-v7-qcc/qmake.conf2
-rw-r--r--mkspecs/qnx-x86-64-qcc/qmake.conf2
-rw-r--r--mkspecs/qnx-x86-qcc/qmake.conf2
-rw-r--r--qtbase.pro82
-rw-r--r--src/corelib/configure.json177
-rw-r--r--src/corelib/corelib.pro3
-rw-r--r--src/corelib/tools/tools.pri2
-rw-r--r--src/gui/configure.json192
-rw-r--r--src/network/configure.json58
-rw-r--r--src/plugins/generic/generic.pro6
-rw-r--r--src/plugins/plugins.pro11
-rw-r--r--src/printsupport/configure.json30
-rw-r--r--src/src.pro2
-rw-r--r--src/widgets/configure.json470
-rw-r--r--src/xml/configure.json16
-rw-r--r--src/xml/qtxmlglobal.h3
-rw-r--r--sync.profile2
-rw-r--r--tests/auto/corelib/plugin/plugin.pro3
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/test/test.pro3
33 files changed, 981 insertions, 182 deletions
diff --git a/configure b/configure
index 81bf483634..789ba4cc74 100755
--- a/configure
+++ b/configure
@@ -753,21 +753,6 @@ while [ "$#" -gt 0 ]; do
opensource)
COMMERCIAL_USER="no"
;;
- feature-*)
- FEATURE=`echo $VAR | sed 's,^[^-]*-\([^-]*\),\1,' | tr 'abcdefghijklmnopqrstuvwxyz-' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
- if grep "^Feature: *${FEATURE} *\$" "$relpath"/src/corelib/global/qfeatures.txt >/dev/null 2>&1; then
- F=`echo $VAR | sed 's,^[^-]*-\([^-]*\),\1,'`
- if [ "$VAL" = "no" ]; then
- F="no-$F"
- elif [ "$VAL" != "yes" ] && [ "$VAL" != "unknown" ]; then
- UNKNOWN_OPT=yes
- fi
- CFG_FEATURES="$CFG_FEATURES $F"
- else
- echo "ERROR: Unknown feature $FEATURE"
- UNKNOWN_OPT=yes
- fi
- ;;
confirm-license)
if [ "$VAL" = "yes" ]; then
OPT_CONFIRM_LICENSE="$VAL"
@@ -1894,7 +1879,6 @@ fi
cat > "$outpath/config.tests/configure.cfg" <<EOF
# Feature defaults set by configure command line
-config.input.extra_features = $CFG_FEATURES
config.input.qt_edition = $Edition
config.input.qt_licheck = $Licheck
config.input.qt_release_date = $ReleaseDate
diff --git a/configure.json b/configure.json
index f26187f633..85ef23a186 100644
--- a/configure.json
+++ b/configure.json
@@ -11,6 +11,7 @@
"src/network",
"src/sql",
"src/gui",
+ "src/xml",
"src/widgets",
"src/printsupport"
],
@@ -933,6 +934,8 @@
},
"concurrent": {
"label": "Qt Concurrent",
+ "purpose": "Provides a high-level multi-threading API.",
+ "section": "Kernel",
"output": [ "publicFeature", "feature" ]
},
"dbus": {
@@ -1032,10 +1035,6 @@
"autoDetect": false,
"condition": "tests.wmf",
"output": [ "publicQtConfig" ]
- },
- "extra_features": {
- "comment": "### remove, once qfeatures.txt is ported to the new system",
- "output": [ "extraFeatures" ]
}
},
diff --git a/configure.pri b/configure.pri
index e20ccd8bf4..7ec845375e 100644
--- a/configure.pri
+++ b/configure.pri
@@ -379,43 +379,6 @@ defineTest(qtConfOutput_compilerVersion) {
export($${currentConfig}.output.publicPro)
}
-# should go away when qfeatures.txt is ported
-defineTest(qtConfOutput_extraFeatures) {
- isEmpty(config.input.extra_features): return()
-
- # write to qconfig.pri
- $${currentConfig}.output.publicPro += "$${LITERAL_HASH}ifndef QT_BOOTSTRAPPED"
- for (f, config.input.extra_features) {
- feature = $$replace(f, "^no-", "")
- FEATURE = $$upper($$replace(feature, -, _))
- contains(f, "^no-.*") {
- $${currentConfig}.output.publicPro += \
- "$${LITERAL_HASH}ifndef QT_NO_$$FEATURE" \
- "$${LITERAL_HASH}define QT_NO_$$FEATURE" \
- "$${LITERAL_HASH}endif"
- } else {
- $${currentConfig}.output.publicPro += \
- "$${LITERAL_HASH}if defined(QT_$$FEATURE) && defined(QT_NO_$$FEATURE)" \
- "$${LITERAL_HASH}undef QT_$$FEATURE" \
- "$${LITERAL_HASH}elif !defined(QT_$$FEATURE) && !defined(QT_NO_$$FEATURE)" \
- "$${LITERAL_HASH}define QT_$$FEATURE" \
- "$${LITERAL_HASH}endif"
- }
- }
- $${currentConfig}.output.publicPro += "$${LITERAL_HASH}endif"
- export($${currentConfig}.output.publicPro)
-
- # write to qmodule.pri
- disabled_features =
- for (f, config.input.extra_features) {
- feature = $$replace(f, "^no-", "")
- FEATURE = $$upper($$replace(feature, -, _))
- contains(f, "^no-.*"): disabled_features += $$FEATURE
- }
- !isEmpty(disabled_features): qtConfOutputVar(assign, "privatePro", QT_NO_DEFINES, $$disabled_features)
-}
-
-
defineTest(qtConfOutput_compilerFlags) {
# this output also exports the variables locally, so that subsequent compiler tests can use them
diff --git a/examples/network/network.pro b/examples/network/network.pro
index 759f730af3..5ad5f1939f 100644
--- a/examples/network/network.pro
+++ b/examples/network/network.pro
@@ -19,8 +19,7 @@ qtHaveModule(widgets) {
multicastreceiver \
multicastsender
- load(qfeatures)
- !contains(QT_DISABLED_FEATURES, bearermanagement) {
+ qtConfig(bearermanagement) {
# no QProcess
!vxworks:!qnx:!winrt:!integrity:!uikit: SUBDIRS += network-chat
diff --git a/examples/widgets/tools/tools.pro b/examples/widgets/tools/tools.pro
index f3cbd73d98..dd8401567b 100644
--- a/examples/widgets/tools/tools.pro
+++ b/examples/widgets/tools/tools.pro
@@ -16,8 +16,7 @@ SUBDIRS = \
contains(DEFINES, QT_NO_TRANSLATION): SUBDIRS -= i18n
-load(qfeatures)
-contains(QT_DISABLED_FEATURES, library) {
+!qtConfig(library) {
SUBDIRS -= \
echoplugin \
plugandpaint
diff --git a/mkspecs/common/linux-android.conf b/mkspecs/common/linux-android.conf
index fec008cb45..b8e052d1ec 100644
--- a/mkspecs/common/linux-android.conf
+++ b/mkspecs/common/linux-android.conf
@@ -6,7 +6,6 @@ QMAKE_PLATFORM += android
include(linux.conf)
include(gcc-base-unix.conf)
-DEFINES += QT_NO_PRINTER QT_NO_PRINTDIALOG
QT_QPA_DEFAULT_PLATFORM = minimal
NDK_ROOT = $$(ANDROID_NDK_ROOT)
diff --git a/mkspecs/common/uikit.conf b/mkspecs/common/uikit.conf
index edc0eddf00..bfbab36db6 100644
--- a/mkspecs/common/uikit.conf
+++ b/mkspecs/common/uikit.conf
@@ -6,6 +6,6 @@ QMAKE_PLATFORM += uikit
CONFIG += bitcode reduce_exports
INCLUDEPATH += $$PWD/uikit
-DEFINES += DARWIN_NO_CARBON QT_NO_PRINTER QT_NO_PRINTDIALOG
+DEFINES += DARWIN_NO_CARBON
include(mac.conf)
diff --git a/mkspecs/common/winrt_winphone/qmake.conf b/mkspecs/common/winrt_winphone/qmake.conf
index b5e0c7cc71..05c9bd39a5 100644
--- a/mkspecs/common/winrt_winphone/qmake.conf
+++ b/mkspecs/common/winrt_winphone/qmake.conf
@@ -10,8 +10,7 @@ MAKEFILE_GENERATOR = MSBUILD
QMAKE_COMPILER = msvc
QMAKE_PLATFORM = winrt win32
CONFIG = package_manifest $$CONFIG incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target rtti
-DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT Q_BYTE_ORDER=Q_LITTLE_ENDIAN \
- QT_NO_PRINTER QT_NO_PRINTDIALOG # TODO: Remove when printing is re-enabled
+DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT Q_BYTE_ORDER=Q_LITTLE_ENDIAN
DEPLOYMENT_PLUGIN += qwinrt
diff --git a/mkspecs/features/qfeatures.prf b/mkspecs/features/qfeatures.prf
deleted file mode 100644
index 15ef5c5be0..0000000000
--- a/mkspecs/features/qfeatures.prf
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file needs to be loaded explicitly, as the evaluation is relatively
-# expensive, and not many projects will actually need it.
-QMAKE_QT_FEATURES = $$[QT_HOST_DATA/get]/mkspecs/qfeatures.pri
-include($$QMAKE_QT_FEATURES) | error("Failed to load $$QMAKE_QT_FEATURES")
diff --git a/mkspecs/features/qt_configure.prf b/mkspecs/features/qt_configure.prf
index af8a0e259d..e34d7ad194 100644
--- a/mkspecs/features/qt_configure.prf
+++ b/mkspecs/features/qt_configure.prf
@@ -285,8 +285,20 @@ defineTest(qtConfParseCommandLine) {
}
# handle builtin [-no]-feature-xxx
isEmpty(type):contains(opt, "feature-(.*)") {
- # simply skip for now
- next()
+ opt ~= s,^feature-,,
+ found = false
+ for (cc, allConfigs) {
+ contains($${cc}.features._KEYS_, $$opt) {
+ found = true
+ break()
+ }
+ }
+ !$$found {
+ qtConfAddError("Enabling/Disabling unknown feature '$$opt'.")
+ return()
+ }
+ # this is a boolean enabling/disabling the corresponding feature
+ type = boolean
}
isEmpty(type) {
diff --git a/mkspecs/integrity-armv7-imx6/qmake.conf b/mkspecs/integrity-armv7-imx6/qmake.conf
index 7a1ee461f2..3bf2abd844 100644
--- a/mkspecs/integrity-armv7-imx6/qmake.conf
+++ b/mkspecs/integrity-armv7-imx6/qmake.conf
@@ -4,7 +4,6 @@
include(../common/ghs-integrity-armv7.conf)
-DEFINES += QT_NO_CLIPBOARD
DEFINES += QT_STATICPLUGIN
QTPLUGIN.platforms += qeglfs qeglfs-viv-integration
diff --git a/mkspecs/integrity-armv7/qmake.conf b/mkspecs/integrity-armv7/qmake.conf
index 0cac2ebdc0..7a2ffaba14 100644
--- a/mkspecs/integrity-armv7/qmake.conf
+++ b/mkspecs/integrity-armv7/qmake.conf
@@ -4,7 +4,6 @@
include(../common/ghs-integrity-armv7.conf)
-DEFINES += QT_NO_CLIPBOARD
DEFINES += QT_STATICPLUGIN
QTPLUGIN.platforms += integrityfb
diff --git a/mkspecs/integrity-x86/qmake.conf b/mkspecs/integrity-x86/qmake.conf
index 4a5cfcc49d..13d4a6c082 100644
--- a/mkspecs/integrity-x86/qmake.conf
+++ b/mkspecs/integrity-x86/qmake.conf
@@ -5,7 +5,6 @@
include(../common/ghs-integrity-x86.conf)
QMAKE_CFLAGS += -cpu=Corei
-DEFINES += QT_NO_CLIPBOARD
DEFINES += QT_STATICPLUGIN
QTPLUGIN.platforms += integrityfb
diff --git a/mkspecs/qnx-aarch64le-qcc/qmake.conf b/mkspecs/qnx-aarch64le-qcc/qmake.conf
index 6d72bd459e..5e3123bece 100644
--- a/mkspecs/qnx-aarch64le-qcc/qmake.conf
+++ b/mkspecs/qnx-aarch64le-qcc/qmake.conf
@@ -2,7 +2,7 @@
# qmake configuration for qnx aarch64le systems
#
-DEFINES += QT_NO_CLIPBOARD _FORTIFY_SOURCE=2
+DEFINES += _FORTIFY_SOURCE=2
QMAKE_LFLAGS_SHLIB += -Wl,-z,relro -Wl,-z,now
diff --git a/mkspecs/qnx-armle-v7-qcc/qmake.conf b/mkspecs/qnx-armle-v7-qcc/qmake.conf
index b77455044c..a21e5bcad3 100644
--- a/mkspecs/qnx-armle-v7-qcc/qmake.conf
+++ b/mkspecs/qnx-armle-v7-qcc/qmake.conf
@@ -3,5 +3,3 @@
#
include(../common/qcc-base-qnx-armle-v7.conf)
-
-DEFINES += QT_NO_CLIPBOARD
diff --git a/mkspecs/qnx-x86-64-qcc/qmake.conf b/mkspecs/qnx-x86-64-qcc/qmake.conf
index ebedeceb46..2a01ed1405 100644
--- a/mkspecs/qnx-x86-64-qcc/qmake.conf
+++ b/mkspecs/qnx-x86-64-qcc/qmake.conf
@@ -2,8 +2,6 @@
# qmake configuration for qnx x86-64 systems
#
-DEFINES += QT_NO_CLIPBOARD
-
QMAKE_LFLAGS_SHLIB += -Wl,-z,relro -Wl,-z,now
include(../common/qcc-base-qnx-x86-64.conf)
diff --git a/mkspecs/qnx-x86-qcc/qmake.conf b/mkspecs/qnx-x86-qcc/qmake.conf
index 36a3ba2ff3..3daadf4f02 100644
--- a/mkspecs/qnx-x86-qcc/qmake.conf
+++ b/mkspecs/qnx-x86-qcc/qmake.conf
@@ -3,5 +3,3 @@
#
include(../common/qcc-base-qnx-x86.conf)
-
-DEFINES += QT_NO_CLIPBOARD
diff --git a/qtbase.pro b/qtbase.pro
index fce2c9fa6c..d2d308870d 100644
--- a/qtbase.pro
+++ b/qtbase.pro
@@ -75,90 +75,10 @@ prefix_build|!equals(PWD, $$OUT_PWD) {
}
-# Generate qfeatures.h
-features =
-lines = $$cat("src/corelib/global/qfeatures.txt", lines)
-for (line, lines) {
- t = $$replace(line, "^Feature: (\\S+)\\s*$", "\\1")
- !isEqual(t, $$line) {
- feature = $$t
- features += $$t
- } else {
- t = $$replace(line, "^Requires: (.*)$", "\\1")
- !isEqual(t, $$line) {
- features.$${feature}.depends = $$replace(t, \\s+$, )
- } else {
- t = $$replace(line, "^Name: (.*)$", "\\1")
- !isEqual(t, $$line) {
- features.$${feature}.name = $$replace(t, \\s+$, )
- }
- }
- }
-}
-features = $$sort_depends(features, features.)
-features = $$reverse(features)
-FEATURES_H = \
- "/*" \
- " * All feature dependencies." \
- " *" \
- " * This list is generated by qmake from <qtbase>/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()
-# Create forwarding header
-FWD_FEATURES_H = \
- '$${LITERAL_HASH}include "../../src/corelib/global/qfeatures.h"'
-write_file($$OUT_PWD/include/QtCore/qfeatures.h, FWD_FEATURES_H)|error()
-
-no_features =
-lines = $$cat($$OUT_PWD/src/corelib/global/qconfig.h, lines)
-for (line, lines) {
- # We ignore all defines that don't follow the #ifndef + indent pattern.
- # This makes it possible to have unchecked defines which are no features.
- t = $$replace(line, "^$${LITERAL_HASH} define QT_NO_(\\S+)\\s*$", "\\1")
- !isEqual(t, $$line) {
- isEmpty(features.$${t}.name): \
- error("qconfig.h disables unknown feature $$t")
- no_features += $$t
- }
-}
-for (def, QT_NO_DEFINES) {
- !isEmpty(features.$${def}.name): \
- no_features += $$def
-}
-no_features = $$unique(no_features)
-
-# Don't simply add these to QT_CONFIG, as then one might expect them to be there without load(qfeatures).
-# And we don't want to do that automatically, as the dynamic dependency resolution is somewhat expensive.
-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 <qtbase>/src/corelib/global/qfeatures.txt:" \
- $$FEATURES_PRI \
- "QT_DISABLED_FEATURES = \$\$unique(QT_DISABLED_FEATURES)"
-write_file($$OUT_PWD/mkspecs/qfeatures.pri, FEATURES_PRI)|error()
-
-# Files created by us
-QMAKE_DISTCLEAN += \
- src/corelib/global/qfeatures.h \
- include/QtCore/qfeatures.h \
- mkspecs/qfeatures.pri
-
#mkspecs
mkspecs.path = $$[QT_HOST_DATA]/mkspecs
mkspecs.files = \
- $$OUT_PWD/mkspecs/qconfig.pri $$OUT_PWD/mkspecs/qmodule.pri $$OUT_PWD/mkspecs/qfeatures.pri \
+ $$OUT_PWD/mkspecs/qconfig.pri $$OUT_PWD/mkspecs/qmodule.pri \
$$OUT_PWD/mkspecs/qdevice.pri $$OUT_PWD/mkspecs/qhost.pri \
$$files($$PWD/mkspecs/*)
mkspecs.files -= $$PWD/mkspecs/modules $$PWD/mkspecs/modules-inst
diff --git a/src/corelib/configure.json b/src/corelib/configure.json
index 887e1ea5bf..b0c78f5122 100644
--- a/src/corelib/configure.json
+++ b/src/corelib/configure.json
@@ -244,6 +244,8 @@
},
"iconv": {
"label": "iconv",
+ "purpose": "Provides internationalization on Unix.",
+ "section": "Internationalization",
"condition": "features.posix-libiconv || features.sun-libiconv || features.gnu-libiconv",
"output": [ "privateFeature", "feature" ]
},
@@ -302,6 +304,8 @@
},
"mimetype": {
"label": "Mimetype handling",
+ "purpose": "Provides MIME type handling.",
+ "section": "Utilities",
"output": [ "publicFeature", "feature" ]
},
"system-pcre": {
@@ -380,6 +384,179 @@
"publicQtConfig",
{ "type": "define", "name": "QT_THREADSAFE_CLOEXEC", "value": 1 }
]
+ },
+ "properties": {
+ "label": "Properties",
+ "purpose": "Supports scripting Qt-based applications.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "regularexpression": {
+ "label": "QRegularExpression",
+ "purpose": "Provides an API to Perl-compatible regular expressions.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "sharedmemory": {
+ "label": "QSharedMemory",
+ "purpose": "Provides access to a shared memory segment.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "systemsemaphore": {
+ "label": "QSystemSemaphore",
+ "purpose": "Provides a general counting system semaphore.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "xmlstream": {
+ "label": "XML Streaming APIs",
+ "purpose": "Provides a simple streaming API for XML.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "xmlstreamreader": {
+ "label": "QXmlStreamReader",
+ "purpose": "Provides a well-formed XML parser with a simple streaming API.",
+ "section": "Kernel",
+ "condition": "features.xmlstream",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "xmlstreamwriter": {
+ "label": "QXmlStreamWriter",
+ "purpose": "Provides a XML writer with a simple streaming API.",
+ "section": "Kernel",
+ "condition": "features.xmlstream",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "textdate": {
+ "label": "Text Date",
+ "purpose": "Supports month and day names in dates.",
+ "section": "Data structures",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "datestring": {
+ "label": "QDate/QTime/QDateTime",
+ "purpose": "Provides convertion between dates and strings.",
+ "section": "Data structures",
+ "condition": "features.textdate",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "process": {
+ "label": "QProcess",
+ "purpose": "Supports external process invocation.",
+ "section": "File I/O",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "temporaryfile": {
+ "label": "QTemporaryFile",
+ "purpose": "Provides an I/O device that operates on temporary files.",
+ "section": "File I/O",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "library": {
+ "label": "QLibrary",
+ "purpose": "Provides a wrapper for dynamically loaded libraries.",
+ "section": "File I/O",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "settings": {
+ "label": "QSettings",
+ "purpose": "Provides persistent application settings.",
+ "section": "File I/O",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "filesystemwatcher": {
+ "label": "QFileSystemWatcher",
+ "purpose": "Provides an interface for monitoring files and directories for modifications.",
+ "section": "File I/O",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "filesystemiterator": {
+ "label": "QFileSystemIterator",
+ "purpose": "Provides fast file system iteration.",
+ "section": "File I/O",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "itemmodel": {
+ "label": "Qt Item Model",
+ "purpose": "Provides the item model for item views",
+ "section": "ItemViews",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "proxymodel": {
+ "label": "QAbstractProxyModel",
+ "purpose": "Supports processing of data passed between another model and a view.",
+ "section": "ItemViews",
+ "condition": "features.itemmodel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "sortfilterproxymodel": {
+ "label": "QSortFilterProxyModel",
+ "purpose": "Supports sorting and filtering of data passed between another model and a view.",
+ "section": "ItemViews",
+ "condition": "features.proxymodel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "identityproxymodel": {
+ "label": "QIdentityProxyModel",
+ "purpose": "Supports proxying a source model unmodified.",
+ "section": "ItemViews",
+ "condition": "features.proxymodel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "stringlistmodel": {
+ "label": "QStringListModel",
+ "purpose": "Provides a model that supplies strings to views.",
+ "section": "ItemViews",
+ "condition": "features.itemmodel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "translation": {
+ "label": "Translation",
+ "purpose": "Supports translations using QObject::tr().",
+ "section": "Internationalization",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "textcodec": {
+ "label": "QTextCodec",
+ "purpose": "Supports conversions between text encodings.",
+ "section": "Internationalization",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "codecs": {
+ "label": "Codecs",
+ "purpose": "Supports non-unicode text conversions.",
+ "section": "Internationalization",
+ "condition": "features.textcodec",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "big_codecs": {
+ "label": "Big Codecs",
+ "purpose": "Supports big codecs, e.g. CJK.",
+ "section": "Internationalization",
+ "condition": "features.textcodec",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "animation": {
+ "label": "Animation",
+ "purpose": "Provides a framework for animations.",
+ "section": "Utilities",
+ "condition": "features.properties",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "statemachine": {
+ "label": "State machine",
+ "purpose": "Provides hierarchical finite state machines.",
+ "section": "Utilities",
+ "condition": "features.properties",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "gestures": {
+ "label": "Gesture",
+ "purpose": "Provides a framework for gestures.",
+ "section": "Utilities",
+ "output": [ "publicFeature", "feature" ]
}
},
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index 1db814180b..616a9641a1 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -31,8 +31,6 @@ ANDROID_PERMISSIONS = \
# OpenBSD 6.0 will include environ in libc.
freebsd|openbsd: QMAKE_LFLAGS_NOUNDEF =
-load(qfeatures)
-
include(animation/animation.pri)
include(arch/arch.pri)
include(global/global.pri)
@@ -100,6 +98,7 @@ cmake_umbrella_config_version_file.output = $$DESTDIR/cmake/Qt5/Qt5ConfigVersion
load(cmake_functions)
+##### This requires fixing, so that the feature system works with cmake as well
CMAKE_DISABLED_FEATURES = $$join(QT_DISABLED_FEATURES, "$$escape_expand(\\n) ")
CMAKE_HOST_DATA_DIR = $$cmakeRelativePath($$[QT_HOST_DATA/src], $$[QT_INSTALL_PREFIX])
diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index 7ebd9cf710..e3d89651e4 100644
--- a/src/corelib/tools/tools.pri
+++ b/src/corelib/tools/tools.pri
@@ -168,7 +168,7 @@ qtConfig(icu) {
SOURCES += tools/qcollator_posix.cpp
}
-!contains(QT_DISABLED_FEATURES, regularexpression) {
+qtConfig(regularexpression) {
include($$PWD/../../3rdparty/pcre_dependency.pri)
HEADERS += tools/qregularexpression.h
diff --git a/src/gui/configure.json b/src/gui/configure.json
index 8513bff5d0..46014188e5 100644
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
@@ -668,7 +668,9 @@
},
"sessionmanager": {
"label": "Session Management",
- "output": [ "feature" ]
+ "purpose": "Provides an interface to the windowing system's session management.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
},
"tslib": {
"label": "tslib",
@@ -756,6 +758,194 @@
"label": "Xrender",
"condition": "libs.xrender",
"output": [ "privateFeature", "feature" ]
+ },
+ "texthtmlparser": {
+ "label": "HtmlParser",
+ "purpose": "Provides a parser for HTML.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "textodfwriter": {
+ "label": "OdfWriter",
+ "purpose": "Provides an ODF writer.",
+ "section": "Kernel",
+ "condition": "features.xmlstreamwriter",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "cssparser": {
+ "label": "CssParser",
+ "purpose": "Provides a parser for Cascading Style Sheets.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "draganddrop": {
+ "label": "Drag and Drop",
+ "purpose": "Supports the drag and drop mechansim.",
+ "section": "Kernel",
+ "condition": "features.imageformat_xpm",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "shortcut": {
+ "label": "QShortcut",
+ "purpose": "Provides keyboard accelerators and shortcuts.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "action": {
+ "label": "QAction",
+ "purpose": "Provides widget actions.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "cursor": {
+ "label": "QCursor",
+ "purpose": "Provides mouse cursors.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "clipboard": {
+ "label": "QClipboard",
+ "purpose": "Provides cut and paste operations.",
+ "section": "Kernel",
+ "condition": "!config.integrity && !config.qnx",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "wheelevent": {
+ "label": "QWheelEvent",
+ "purpose": "Supports wheel events.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "tabletevent": {
+ "label": "QTabletEvent",
+ "purpose": "Supports tablet events.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "im": {
+ "label": "QInputContext",
+ "purpose": "Provides complex input methods.",
+ "section": "Kernel",
+ "condition": "features.library",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "validator": {
+ "label": "QValidator",
+ "purpose": "Supports validation of input text.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "standarditemmodel": {
+ "label": "QStandardItemModel",
+ "purpose": "Provides a generic model for storing custom data.",
+ "section": "ItemViews",
+ "condition": "features.itemmodel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "imageformatplugin": {
+ "label": "QImageIOPlugin",
+ "purpose": "Provides a base for writing a image format plugins.",
+ "section": "Images",
+ "condition": "features.library",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "movie": {
+ "label": "QMovie",
+ "purpose": "Supports animated images.",
+ "section": "Images",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "imageformat_bmp": {
+ "label": "BMP Image Format",
+ "purpose": "Supports Microsoft's Bitmap image file format.",
+ "section": "Images",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "imageformat_ppm": {
+ "label": "PPM Image Format",
+ "purpose": "Supports the Portable Pixmap image file format.",
+ "section": "Images",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "imageformat_xbm": {
+ "label": "XBM Image Format",
+ "purpose": "Supports the X11 Bitmap image file format.",
+ "section": "Images",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "imageformat_xpm": {
+ "label": "XPM Image Format",
+ "purpose": "Supports the X11 Pixmap image file format.",
+ "section": "Images",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "imageformat_png": {
+ "label": "PNG Image Format",
+ "purpose": "Supports the Portable Network Graphics image file format.",
+ "section": "Images",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "imageformat_jpeg": {
+ "label": "JPEG Image Format",
+ "purpose": "Supports the Joint Photographic Experts Group image file format.",
+ "section": "Images",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "image_heuristic_mask": {
+ "label": "QImage::createHeuristicMask()",
+ "purpose": "Supports creating a 1-bpp heuristic mask for images.",
+ "section": "Images",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "image_text": {
+ "label": "Image Text",
+ "purpose": "Supports image file text strings.",
+ "section": "Images",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "picture": {
+ "label": "QPicture",
+ "purpose": "Supports recording and replaying QPainter commands.",
+ "section": "Painting",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "colornames": {
+ "label": "Color Names",
+ "purpose": "Supports color names such as \"red\", used by QColor and by some HTML documents.",
+ "section": "Painting",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "pdf": {
+ "label": "QPdf",
+ "purpose": "Provides a PDF backend for QPainter.",
+ "section": "Painting",
+ "condition": "features.temporaryfile",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "freetype": {
+ "label": "Freetype Font Engine",
+ "purpose": "Supports the FreeType 2 font engine (and its supported font formats).",
+ "section": "Fonts",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "desktopservices": {
+ "label": "QDesktopServices",
+ "purpose": "Provides methods for accessing common desktop services.",
+ "section": "Utilities",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "systemtrayicon": {
+ "label": "QSystemTrayIcon",
+ "purpose": "Provides an icon for an application in the system tray.",
+ "section": "Utilities",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "accessibility": {
+ "label": "Accessibility",
+ "purpose": "Provides accessibility support.",
+ "section": "Utilities",
+ "condition": "features.properties",
+ "output": [ "publicFeature", "feature" ]
}
},
diff --git a/src/network/configure.json b/src/network/configure.json
index 3372d177c3..97bf92167d 100644
--- a/src/network/configure.json
+++ b/src/network/configure.json
@@ -176,6 +176,64 @@
"system-proxies": {
"label": "Use system proxies",
"output": [ "privateFeature" ]
+ },
+ "ftp": {
+ "label": "FTP",
+ "purpose": "Provides support for the File Transfer Protocol in QNetworkAccessManager.",
+ "section": "Networking",
+ "condition": "features.textdate",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "http": {
+ "label": "HTTP",
+ "purpose": "Provides support for the Hypertext Transfer Protocol in QNetworkAccessManager.",
+ "section": "Networking",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "udpsocket": {
+ "label": "QUdpSocket",
+ "purpose": "Provides access to UDP sockets.",
+ "section": "Networking",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "networkproxy": {
+ "label": "QNetworkProxy",
+ "purpose": "Provides network proxy support.",
+ "section": "Networking",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "socks5": {
+ "label": "SOCKS5",
+ "purpose": "Provides SOCKS5 support in QNetworkProxy.",
+ "section": "Networking",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "networkinterface": {
+ "label": "QNetworkInterface",
+ "purpose": "Supports enumerating a host's IP addresses and network interfaces.",
+ "section": "Networking",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "networkdiskcache": {
+ "label": "QNetworkDiskCache",
+ "purpose": "Provides a disk cache for network resources.",
+ "section": "Networking",
+ "condition": "features.temporaryfile",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "bearermanagement": {
+ "label": "Bearer management",
+ "purpose": "Provides bearer management for the network stack.",
+ "section": "Networking",
+ "condition": "features.library && features.networkinterface && features.properties",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "localserver": {
+ "label": "QLocalServer",
+ "purpose": "Provides a local socket based server.",
+ "section": "Networking",
+ "condition": "features.temporaryfile",
+ "output": [ "publicFeature", "feature" ]
}
},
diff --git a/src/plugins/generic/generic.pro b/src/plugins/generic/generic.pro
index 69e832906b..996e57d015 100644
--- a/src/plugins/generic/generic.pro
+++ b/src/plugins/generic/generic.pro
@@ -1,7 +1,5 @@
TEMPLATE = subdirs
-QT_FOR_CONFIG += gui-private
-
-load(qfeatures)
+QT_FOR_CONFIG += gui-private network-private
qtConfig(evdev) {
SUBDIRS += evdevmouse evdevtouch evdevkeyboard evdevtablet
@@ -11,7 +9,7 @@ qtConfig(tslib) {
SUBDIRS += tslib
}
-!contains(QT_DISABLED_FEATURES, udpsocket) {
+qtConfig(udpsocket) {
SUBDIRS += tuiotouch
}
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 0f4207c636..941c25361f 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -1,14 +1,13 @@
TEMPLATE = subdirs
+QT_FOR_CONFIG += network
-load(qfeatures)
SUBDIRS *= sqldrivers
-qtHaveModule(network):!contains(QT_DISABLED_FEATURES, bearermanagement): SUBDIRS += bearer
+qtHaveModule(network):qtConfig(bearermanagement): SUBDIRS += bearer
qtHaveModule(gui) {
SUBDIRS *= platforms platforminputcontexts platformthemes
- !contains(QT_DISABLED_FEATURES, imageformatplugin): SUBDIRS *= imageformats
- !android:!contains(QT_DISABLED_FEATURES, library): SUBDIRS *= generic
+ qtConfig(imageformatplugin): SUBDIRS *= imageformats
+ !android:qtConfig(library): SUBDIRS *= generic
}
-!winrt:!wince*:qtHaveModule(widgets):!contains(QT_DISABLED_FEATURES, printer) {
+!winrt:!wince:qtHaveModule(printsupport): \
SUBDIRS += printsupport
-}
diff --git a/src/printsupport/configure.json b/src/printsupport/configure.json
index 6bf4208e9c..439f2dbdd8 100644
--- a/src/printsupport/configure.json
+++ b/src/printsupport/configure.json
@@ -26,8 +26,38 @@
"features": {
"cups": {
"label": "CUPS",
+ "purpose": "Provides support for the Common Unix Printing System.",
+ "section": "Painting",
"condition": "libs.cups",
"output": [ "privateFeature", "feature" ]
+ },
+ "printer": {
+ "label": "QPrinter",
+ "purpose": "Provides a printer backend of QPainter.",
+ "section": "Painting",
+ "condition": "!config.android && !config.uikit && !config.winrt && features.picture && features.temporaryfile && features.pdf",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "printpreviewwidget": {
+ "label": "QPrintPreviewWidget",
+ "purpose": "Provides a widget for previewing page layouts for printer output.",
+ "section": "Widgets",
+ "condition": "features.graphicsview && features.printer && features.mainwindow",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "printdialog": {
+ "label": "QPrintDialog",
+ "purpose": "Provides a dialog widget for specifying printer configuration.",
+ "section": "Dialogs",
+ "condition": "features.printer && features.combobox && features.buttongroup && features.spinbox && features.treeview && features.tabwidget",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "printpreviewdialog": {
+ "label": "QPrintPreviewDialog",
+ "purpose": "Provides a dialog for previewing and configuring page layouts for printer output.",
+ "section": "Dialogs",
+ "condition": "features.printpreviewwidget && features.printdialog && features.toolbar",
+ "output": [ "publicFeature", "feature" ]
}
},
diff --git a/src/src.pro b/src/src.pro
index 60d6a57e2a..541053eba5 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -134,7 +134,7 @@ src_android.subdir = $$PWD/android
}
}
SUBDIRS += src_tools_bootstrap src_tools_moc src_tools_rcc
-!contains(QT_DISABLED_FEATURES, regularexpression):pcre {
+qtConfig(regularexpression):pcre {
SUBDIRS += src_3rdparty_pcre
src_corelib.depends += src_3rdparty_pcre
}
diff --git a/src/widgets/configure.json b/src/widgets/configure.json
index 2c1f8b1e6c..ee7e1dd8e0 100644
--- a/src/widgets/configure.json
+++ b/src/widgets/configure.json
@@ -71,10 +71,480 @@
"autoDetect": "config.android",
"output": [ "styles" ]
},
+ "style-stylesheet": {
+ "label": "QStyleSheetStyle",
+ "purpose": "Provides a widget style which is configurable via CSS.",
+ "section": "Styles",
+ "condition": "features.style-windows && features.properties && features.cssparser",
+ "output": [ "publicFeature", "feature" ]
+ },
"android-style-assets": {
"label": "Android Style Assets",
"condition": "features.style-android",
"output": [ "privateConfig" ]
+ },
+ "effects": {
+ "label": "Effects",
+ "purpose": "Provides special widget effects (e.g. fading and scrolling).",
+ "section": "Kernel"
+ },
+ "filesystemmodel": {
+ "label": "QFileSystemModel",
+ "purpose": "Provides a data model for the local filesystem.",
+ "section": "File I/O",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "itemviews": {
+ "label": "The Model/View Framework",
+ "purpose": "Provides the model/view architecture managing the relationship between data and the way it is presented to the user.",
+ "section": "ItemViews",
+ "condition": "features.itemmodel && features.rubberband && features.scrollarea",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "treewidget": {
+ "label": "QTreeWidget",
+ "purpose": "Provides views using tree models.",
+ "section": "Widgets",
+ "condition": "features.treeview",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "listwidget": {
+ "label": "QListWidget",
+ "purpose": "Provides item-based list widgets.",
+ "section": "Widgets",
+ "condition": "features.listview",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "tablewidget": {
+ "label": "QTableWidget",
+ "purpose": "Provides item-based table views.",
+ "section": "Widgets",
+ "condition": "features.tableview",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "datetimeedit": {
+ "label": "QDateTimeEdit",
+ "purpose": "Supports editing dates and times.",
+ "section": "Widgets",
+ "condition": "features.calendarwidget && features.datestring",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "stackedwidget": {
+ "label": "QStackedWidget",
+ "purpose": "Provides stacked widgets.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "textbrowser": {
+ "label": "QTextBrowser",
+ "purpose": "Supports HTML document browsing.",
+ "section": "Widgets",
+ "condition": "features.textedit",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "splashscreen": {
+ "label": "QSplashScreen",
+ "purpose": "Supports splash screens that can be shown during application startup.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "splitter": {
+ "label": "QSplitter",
+ "purpose": "Provides user controlled splitter widgets.",
+ "section": "Widgets",
+ "condition": "features.rubberband",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "lcdnumber": {
+ "label": "QLCDNumber",
+ "purpose": "Provides LCD-like digits.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "menu": {
+ "label": "QMenu",
+ "purpose": "Provides popup-menus.",
+ "section": "Widgets",
+ "condition": "features.action",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "lineedit": {
+ "label": "QLineEdit",
+ "purpose": "Provides single-line edits.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "spinbox": {
+ "label": "QSpinBox",
+ "purpose": "Provides spin boxes handling integers and discrete sets of values.",
+ "section": "Widgets",
+ "condition": "features.spinwidget && features.lineedit && features.validator",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "tabbar": {
+ "label": "QTabBar",
+ "purpose": "Provides tab bars, e.g., for use in tabbed dialogs.",
+ "section": "Widgets",
+ "condition": "features.toolbutton",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "tabwidget": {
+ "label": "QTabWidget",
+ "purpose": "Supports stacking tabbed widgets.",
+ "section": "Widgets",
+ "condition": "features.tabbar && features.stackedwidget",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "combobox": {
+ "label": "QComboBox",
+ "purpose": "Provides drop-down boxes presenting a list of options to the user.",
+ "section": "Widgets",
+ "condition": "features.lineedit && features.standarditemmodel && features.listview",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "fontcombobox": {
+ "label": "QFontComboBox",
+ "purpose": "Provides a combobox that lets the user select a font family.",
+ "section": "Widgets",
+ "condition": "features.combobox && features.stringlistmodel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "toolbutton": {
+ "label": "QToolButton",
+ "purpose": "Provides quick-access buttons to commands and options.",
+ "section": "Widgets",
+ "condition": "features.action",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "toolbar": {
+ "label": "QToolBar",
+ "purpose": "Provides movable panels containing a set of controls.",
+ "section": "Widgets",
+ "condition": "features.mainwindow",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "toolbox": {
+ "label": "QToolBox",
+ "purpose": "Provides columns of tabbed widget items.",
+ "section": "Widgets",
+ "condition": "features.toolbutton && features.scrollarea",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "groupbox": {
+ "label": "QGroupBox",
+ "purpose": "Provides widget grouping boxes with frames.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "buttongroup": {
+ "label": "QButtonGroup",
+ "purpose": "Supports organizing groups of button widgets.",
+ "section": "Widgets",
+ "condition": "features.groupbox",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "mainwindow": {
+ "label": "QMainWindow",
+ "purpose": "Provides main application windows.",
+ "section": "Widgets",
+ "condition": "features.menu && features.resizehandler && features.toolbutton",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "dockwidget": {
+ "label": "QDockwidget",
+ "purpose": "Supports docking widgets inside a QMainWindow or floated as a top-level window on the desktop.",
+ "section": "Widgets",
+ "condition": "features.rubberband && features.mainwindow",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "mdiarea": {
+ "label": "QMdiArea",
+ "purpose": "Provides an area in which MDI windows are displayed.",
+ "section": "Widgets",
+ "condition": "features.scrollarea",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "resizehandler": {
+ "label": "QWidgetResizeHandler",
+ "purpose": "Provides an internal resize handler for dock widgets.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "statusbar": {
+ "label": "QStatusBar",
+ "purpose": "Supports presentation of status information.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "menubar": {
+ "label": "QMenuBar",
+ "purpose": "Provides pull-down menu items.",
+ "section": "Widgets",
+ "condition": "features.menu && features.toolbutton",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "contextmenu": {
+ "label": "Context menus",
+ "purpose": "Adds pop-up menus on right mouse click to numerous widgets.",
+ "section": "Widgets",
+ "condition": "features.menu",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "progressbar": {
+ "label": "QProgressBar",
+ "purpose": "Supports presentation of operation progress.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "slider": {
+ "label": "QSlider",
+ "purpose": "Provides sliders controlling a bounded value.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "scrollbar": {
+ "label": "QScrollBar",
+ "purpose": "Provides scrollbars allowing the user access parts of a document that is larger than the widget used to display it.",
+ "section": "Widgets",
+ "condition": "features.slider",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "dial": {
+ "label": "QDial",
+ "purpose": "Provides a rounded range control, e.g., like a speedometer.",
+ "section": "Widgets",
+ "condition": "features.slider",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "scrollarea": {
+ "label": "QScrollArea",
+ "purpose": "Supports scrolling views onto widgets.",
+ "section": "Widgets",
+ "condition": "features.scrollbar",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "graphicsview": {
+ "label": "QGraphicsView",
+ "purpose": "Provides a canvas/sprite framework.",
+ "section": "Widgets",
+ "condition": "features.scrollarea",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "graphicseffect": {
+ "label": "QGraphicsEffect",
+ "purpose": "Provides various graphics effects.",
+ "section": "Widgets",
+ "condition": "features.graphicsview",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "spinbox": {
+ "label": "QSpinBox",
+ "purpose": "Provides spinbox control widgets.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "textedit": {
+ "label": "QTextEdit",
+ "purpose": "Supports rich text editing.",
+ "section": "Widgets",
+ "condition": "features.scrollarea && features.properties",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "syntaxhighlighter": {
+ "label": "QSyntaxHighlighter",
+ "purpose": "Supports custom syntax highlighting.",
+ "section": "Widgets",
+ "condition": "features.textedit",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "rubberband": {
+ "label": "QRubberBand",
+ "purpose": "Supports using rubberbands to indicate selections and boundaries.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "tooltip": {
+ "label": "QToolTip",
+ "purpose": "Supports presentation of tooltips.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "statustip": {
+ "label": "Status Tip",
+ "purpose": "Supports status tip functionality and events.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "whatsthis": {
+ "label": "QWhatsThis",
+ "purpose": "Supports displaying \"What's this\" help.",
+ "section": "Widgets",
+ "condition": "features.toolbutton",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "sizegrip": {
+ "label": "QSizeGrip",
+ "purpose": "Provides corner-grips for resizing top-level windows.",
+ "section": "Widgets",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "calendarwidget": {
+ "label": "QCalendarWidget",
+ "purpose": "Provides a monthly based calendar widget allowing the user to select a date.",
+ "section": "Widgets",
+ "condition": "features.tableview && features.menu && features.textdate && features.spinbox && features.toolbutton",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "keysequenceedit": {
+ "label": "QKeySequenceEdit",
+ "purpose": "Provides a widget for editing QKeySequences.",
+ "section": "Widgets",
+ "condition": "features.lineedit && features.shortcut",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "messagebox": {
+ "label": "QMessageBox",
+ "purpose": "Provides message boxes displaying informative messages and simple questions.",
+ "section": "Dialogs",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "colordialog": {
+ "label": "QColorDialog",
+ "purpose": "Provides a dialog widget for specifying colors.",
+ "section": "Dialogs",
+ "condition": "features.spinbox",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "filedialog": {
+ "label": "QFileDialog",
+ "purpose": "Provides a dialog widget for selecting files or directories.",
+ "section": "Dialogs",
+ "condition": "features.dirmodel && features.treeview && features.combobox && features.toolbutton && features.buttongroup && features.tooltip && features.splitter && features.stackedwidget && features.proxymodel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "fontdialog": {
+ "label": "QFontDialog",
+ "purpose": "Provides a dialog widget for selecting fonts.",
+ "section": "Dialogs",
+ "condition": "features.stringlistmodel && features.combobox && features.validator && features.groupbox",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "progressdialog": {
+ "label": "QProgressDialog",
+ "purpose": "Provides feedback on the progress of a slow operation.",
+ "section": "Dialogs",
+ "condition": "features.progressbar",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "inputdialog": {
+ "label": "QInputDialog",
+ "purpose": "Provides a simple convenience dialog to get a single value from the user.",
+ "section": "Dialogs",
+ "condition": "features.combobox && features.spinbox && features.stackedwidget",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "errormessage": {
+ "label": "QErrorMessage",
+ "purpose": "Provides an error message display dialog.",
+ "section": "Dialogs",
+ "condition": "features.textedit",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "wizard": {
+ "label": "QWizard",
+ "purpose": "Provides a framework for multi-page click-through dialogs.",
+ "section": "Dialogs",
+ "condition": "features.properties",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "dirmodel": {
+ "label": "QDirModel",
+ "purpose": "Provides a data model for the local filesystem.",
+ "section": "ItemViews",
+ "condition": "features.itemviews && features.filesystemmodel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "listview": {
+ "label": "QListView",
+ "purpose": "Provides a list or icon view onto a model.",
+ "section": "ItemViews",
+ "condition": "features.itemviews",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "tableview": {
+ "label": "QTableView",
+ "purpose": "Provides a default model/view implementation of a table view.",
+ "section": "ItemViews",
+ "condition": "features.itemviews",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "treeview": {
+ "label": "QTreeView",
+ "purpose": "Provides a default model/view implementation of a tree view.",
+ "section": "ItemViews",
+ "condition": "features.itemviews",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "datawidgetmapper": {
+ "label": "QDataWidgetMapper",
+ "purpose": "Provides mapping between a section of a data model to widgets.",
+ "section": "ItemViews",
+ "condition": "features.itemviews && features.properties",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "columnview": {
+ "label": "QColumnView",
+ "purpose": "Provides a model/view implementation of a column view.",
+ "section": "ItemViews",
+ "condition": "features.listview",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "paint_debug": {
+ "label": "Painting Debug Utilities",
+ "purpose": "Enabled debugging painting with the environment variables QT_FLUSH_UPDATE and QT_FLUSH_PAINT.",
+ "section": "Painting",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "completer": {
+ "label": "QCompleter",
+ "purpose": "Provides completions based on an item model.",
+ "section": "Utilities",
+ "condition": "features.proxymodel",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "fscompleter": {
+ "label": "QFSCompleter",
+ "purpose": "Provides file name completion in QFileDialog.",
+ "section": "Utilities",
+ "condition": "features.filesystemmodel && features.completer",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "undocommand": {
+ "label": "QUndoCommand",
+ "purpose": "Applies (redo or) undo of a single change in a document.",
+ "section": "Utilities",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "undostack": {
+ "label": "QUndoStack",
+ "purpose": "Provides the ability to (redo or) undo a list of changes in a document.",
+ "section": "Utilities",
+ "condition": "features.undocommand",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "undogroup": {
+ "label": "QUndoGroup",
+ "purpose": "Provides the ability to cluster QUndoCommands.",
+ "section": "Utilities",
+ "condition": "features.undostack",
+ "output": [ "publicFeature", "feature" ]
+ },
+ "undoview": {
+ "label": "QUndoView",
+ "purpose": "Provides a widget which shows the contents of an undo stack.",
+ "section": "Utilities",
+ "condition": "features.undostack && features.listview",
+ "output": [ "publicFeature", "feature" ]
}
},
diff --git a/src/xml/configure.json b/src/xml/configure.json
new file mode 100644
index 0000000000..345eb8544b
--- /dev/null
+++ b/src/xml/configure.json
@@ -0,0 +1,16 @@
+{
+ "module": "xml",
+ "depends": [
+ "core"
+ ],
+ "testDir": "../../config.tests",
+
+ "features": {
+ "dom": {
+ "label": "DOM",
+ "purpose": "Supports the Document Object Model.",
+ "section": "File I/O",
+ "output": [ "publicFeature", "feature" ]
+ }
+ }
+}
diff --git a/src/xml/qtxmlglobal.h b/src/xml/qtxmlglobal.h
index de5a8ab39d..ed5de8db87 100644
--- a/src/xml/qtxmlglobal.h
+++ b/src/xml/qtxmlglobal.h
@@ -41,6 +41,9 @@
#define QTXMLGLOBAL_H
#include <QtCore/qglobal.h>
+#ifndef QT_BOOTSTRAPPED
+# include <QtXml/qtxml-config.h>
+#endif
QT_BEGIN_NAMESPACE
diff --git a/sync.profile b/sync.profile
index 0860c7692a..4da3499667 100644
--- a/sync.profile
+++ b/sync.profile
@@ -65,7 +65,7 @@ my @zlib_headers = ( "zconf.h", "zlib.h" );
@ignore_headers = ( @internal_zlib_headers );
@ignore_for_include_check = ( "qsystemdetection.h", "qcompilerdetection.h", "qprocessordetection.h", @zlib_headers, @angle_headers);
@ignore_for_qt_begin_namespace_check = ( "qt_windows.h", @zlib_headers, @angle_headers);
-%inject_headers = ( "$basedir/src/corelib/global" => [ "qconfig.h", "qconfig_p.h", "qfeatures.h" ] );
+%inject_headers = ( "$basedir/src/corelib/global" => [ "qconfig.h", "qconfig_p.h" ] );
# Module dependencies.
# Every module that is required to build this module should have one entry.
# Each of the module version specifiers can take one of the following values:
diff --git a/tests/auto/corelib/plugin/plugin.pro b/tests/auto/corelib/plugin/plugin.pro
index 777e920995..774edc655a 100644
--- a/tests/auto/corelib/plugin/plugin.pro
+++ b/tests/auto/corelib/plugin/plugin.pro
@@ -3,8 +3,7 @@ SUBDIRS=\
qfactoryloader \
quuid
-load(qfeatures)
-!contains(QT_DISABLED_FEATURES, library): SUBDIRS += \
+qtConfig(library): SUBDIRS += \
qpluginloader \
qplugin \
qlibrary
diff --git a/tests/auto/corelib/plugin/qfactoryloader/test/test.pro b/tests/auto/corelib/plugin/qfactoryloader/test/test.pro
index f1e76c31bf..3345651730 100644
--- a/tests/auto/corelib/plugin/qfactoryloader/test/test.pro
+++ b/tests/auto/corelib/plugin/qfactoryloader/test/test.pro
@@ -19,7 +19,6 @@ win32 {
mac: CONFIG -= app_bundle
-load(qfeatures)
-contains(QT_DISABLED_FEATURES, library) {
+!qtConfig(library) {
LIBS += -L ../bin/ -lplugin1 -lplugin2
}