diff options
Diffstat (limited to 'mkspecs/features/qt_module_headers.prf')
-rw-r--r-- | mkspecs/features/qt_module_headers.prf | 42 |
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..5a45007820 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.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) |