summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/qt_module_headers.prf
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs/features/qt_module_headers.prf')
-rw-r--r--mkspecs/features/qt_module_headers.prf42
1 files changed, 32 insertions, 10 deletions
diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf
index 05d0706a33..790a4ee29e 100644
--- a/mkspecs/features/qt_module_headers.prf
+++ b/mkspecs/features/qt_module_headers.prf
@@ -16,7 +16,7 @@ load(qt_build_paths)
minimal_syncqt {
QMAKE_SYNCQT += -minimal $$QMAKE_SYNCQT_OPTIONS
} else {
- contains(QT_CONFIG, private_tests): \ # -developer-build
+ qtConfig(private_tests): \ # -developer-build
QMAKE_SYNCQT += -check-includes
}
for(mod, MODULE_INCNAME): \
@@ -104,18 +104,33 @@ include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true)
alien_syncqt: return()
+MODULE_INC_OUTDIR = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME
+
+exists($$OUT_PWD/qt$${MODULE}-config.h) {
+ fwd_rel = $$relative_path($$OUT_PWD, $$MODULE_INC_OUTDIR)
+ SYNCQT.INJECTIONS += \
+ $$fwd_rel/qt$${MODULE}-config.h:qt$${MODULE}-config.h \
+ $$fwd_rel/qt$${MODULE}-config_p.h:$$MODULE_VERSION/$$MODULE_INCNAME/private/qt$${MODULE}-config_p.h
+ inst_rel = $$relative_path($$OUT_PWD, $$_PRO_FILE_PWD_)
+ SYNCQT.HEADER_FILES += $$inst_rel/qt$${MODULE}-config.h
+ SYNCQT.INJECTED_PRIVATE_HEADER_FILES += $$inst_rel/qt$${MODULE}-config_p.h
+}
+
for (injection, SYNCQT.INJECTIONS) {
injects = $$split(injection, :)
+ dst_hdr = $$absolute_path($$member(injects, 0), $$MODULE_INC_OUTDIR)
fwd_hdr = $$member(injects, 1)
- MAIN_FWD = $$INC_PATH/include/$$MODULE_INCNAME/$$fwd_hdr
- MAIN_FWD_CONT = '$${LITERAL_HASH}include "$$member(injects, 0)"'
- write_file($$MAIN_FWD, MAIN_FWD_CONT)|error("Aborting.")
+ MAIN_FWD = $$MODULE_INC_OUTDIR/$$fwd_hdr
+ MAIN_FWD_CONT = '$${LITERAL_HASH}include "$$relative_path($$dst_hdr, $$dirname(MAIN_FWD))"'
+ write_file($$MAIN_FWD, MAIN_FWD_CONT)|error()
+ touch($$MAIN_FWD, $$dst_hdr)
!git_build: QMAKE_DISTCLEAN += $$MAIN_FWD
injects = $$member(injects, 2, -1)
for (inject, injects) {
- CLASS_FWD = $$INC_PATH/include/$$MODULE_INCNAME/$$inject
+ CLASS_FWD = $$MODULE_INC_OUTDIR/$$inject
CLASS_FWD_CONT = '$${LITERAL_HASH}include "$$fwd_hdr"'
- write_file($$CLASS_FWD, CLASS_FWD_CONT)|error("Aborting.")
+ write_file($$CLASS_FWD, CLASS_FWD_CONT)|error()
+ touch($$CLASS_FWD, $$dst_hdr)
!git_build: QMAKE_DISTCLEAN += $$CLASS_FWD
}
}
@@ -135,7 +150,7 @@ MODULE_MASTER_DEPS_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$${MOD
MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}include <$$depname/$$depname>"
}
MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}endif"
- write_file($$MODULE_MASTER_DEPS_HEADER, MODULE_MASTER_DEPS_HEADER_CONT)|error("Aborting.")
+ write_file($$MODULE_MASTER_DEPS_HEADER, MODULE_MASTER_DEPS_HEADER_CONT)|error()
!git_build: QMAKE_DISTCLEAN += $$MODULE_MASTER_DEPS_HEADER
}
SYNCQT.HEADER_FILES += $$MODULE_MASTER_DEPS_HEADER
@@ -227,17 +242,24 @@ headersclean:!internal_module {
$$[QT_INSTALL_DATA/src]/mkspecs/features/data/dummy.cpp
}
- !isEmpty(hcleanCOMMAND):if(!contains(QT_CONFIG, debug_and_release)|CONFIG(release, debug|release)) {
+ !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)