summaryrefslogtreecommitdiffstats
path: root/mkspecs/features
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2016-08-31 15:39:30 +0200
committerLars Knoll <lars.knoll@qt.io>2016-09-16 12:27:59 +0000
commit8d6f2e7e157d5778e37e54cd7e90c3185970abff (patch)
treec11af6badcfbbd9525a361d38c827a4b0ac8a87e /mkspecs/features
parent31a63b69037c680101bf82a7161d4a0e5184dd86 (diff)
Add a QT_REQUIRE_CONFIG(feature) macro
This macro expands into a static_assert and can be used to trigger a compile error if a certain feature is not available when trying to compile some code. This is especially useful to protect against accidental inclusion of headers that implement functionality related to a feature. Change-Id: I456c55b989ce5f35f3af0e13c1886a85c23dfe29 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'mkspecs/features')
-rw-r--r--mkspecs/features/qt_module_headers.prf11
1 files changed, 9 insertions, 2 deletions
diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf
index 229760068e..5a45007820 100644
--- a/mkspecs/features/qt_module_headers.prf
+++ b/mkspecs/features/qt_module_headers.prf
@@ -243,16 +243,23 @@ headersclean:!internal_module {
}
!isEmpty(hcleanCOMMAND):if(!qtConfig(debug_and_release)|CONFIG(release, debug|release)) {
+ CLEAN_HEADERS =
+ for (h, SYNCQT.CLEAN_HEADER_FILES) {
+ hh = $$split(h, :)
+ hr = $$member(hh, 1)
+ isEmpty(hr)|qtConfig($$hr): \
+ CLEAN_HEADERS += $$member(hh, 0)
+ }
+ CLEAN_HEADERS -= $$HEADERSCLEAN_EXCLUDE
header_check.dependency_type = TYPE_C
header_check.CONFIG += no_link
header_check.output = ${QMAKE_VAR_OBJECTS_DIR}header_${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- header_check.input = SYNCQT.CLEAN_HEADER_FILES
+ header_check.input = CLEAN_HEADERS
header_check.variable_out = PRE_TARGETDEPS
header_check.name = headercheck ${QMAKE_FILE_IN}
header_check.commands = $$hcleanCOMMAND
silent:header_check.commands = @echo compiling[header] ${QMAKE_FILE_IN} && $$hcleanCOMMAND
QMAKE_EXTRA_COMPILERS += header_check
- SYNCQT.CLEAN_HEADER_FILES -= $$HEADERSCLEAN_EXCLUDE
}
unset(hcleanCOMMAND)
unset(hcleanFLAGS)