diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2018-03-20 21:21:38 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2018-04-12 15:42:59 +0000 |
commit | 9c4c136bc9f29bab1cc9684dfced55a92a8bbe96 (patch) | |
tree | 40241dec0d2f439b717805bcc86a2bc2a789eafa /mkspecs/features/qt_module_headers.prf | |
parent | 1a71fe0306d8d8984d62d83e2cd616b9bac7e2fe (diff) |
rework syncqt interaction regarding cross-tree paths
instead of relying on more or less accidental qmake behaviors regarding
the base dir for relative paths (esp. if a file does not exist yet),
make everything explicit. to that effect, clearly define the base tree
(source or build) for every syncqt-generated variable, and write only
in-tree relative paths to the variables. on the receiving end, resolve
the paths as soon as headers.pri was read.
Task-number: QTBUG-67111
Change-Id: I32ae5760fb62ebc650fdb69e46aac786a8141564
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'mkspecs/features/qt_module_headers.prf')
-rw-r--r-- | mkspecs/features/qt_module_headers.prf | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index 62b88c6fe2..38e293db9e 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -96,12 +96,26 @@ MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES minimal_syncqt: return() +defineTest(syncQtResolve) { + out = + for (f, SYNCQT.$$1): \ + out += $$absolute_path($$f, $$2) + SYNCQT.$$1 = $$out + export(SYNCQT.$$1) +} + #load up the headers info git_build: \ INC_PATH = $$MODULE_BASE_OUTDIR else: \ INC_PATH = $$MODULE_BASE_INDIR include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true) +syncQtResolve(HEADER_FILES, $$_PRO_FILE_PWD_) +syncQtResolve(PRIVATE_HEADER_FILES, $$_PRO_FILE_PWD_) +syncQtResolve(QPA_HEADER_FILES, $$_PRO_FILE_PWD_) +syncQtResolve(GENERATED_HEADER_FILES, $$INC_PATH/include/$$MODULE_INCNAME) +syncQtResolve(INJECTED_HEADER_FILES, $$OUT_PWD) +syncQtResolve(INJECTED_PRIVATE_HEADER_FILES, $$OUT_PWD) !lib_bundle: \ # Headers are embedded into the bundle, so don't install them separately. CONFIG += qt_install_headers @@ -114,9 +128,8 @@ exists($$OUT_PWD/qt$${MODULE}-config.h) { 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 + SYNCQT.INJECTED_HEADER_FILES += $$OUT_PWD/qt$${MODULE}-config.h + SYNCQT.INJECTED_PRIVATE_HEADER_FILES += $$OUT_PWD/qt$${MODULE}-config_p.h } for (injection, SYNCQT.INJECTIONS) { |