From 2aa779e893bd7526c97a1968c6835204e4e985e2 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 10 Sep 2018 17:33:09 +0200 Subject: [PATCH] syncqt: fix forwarding injected headers, take ~3 in non-prefix builds, the forwarding headers always end up in qtbase's build dir, while the injected headers always live in the build dir of the module they belong to. to deal with that, we now record the target path relative to the module root dir instead of relative to the base directory of the forwarding header itself. Fixes: QTBUG-70056 Change-Id: Ic4346148a125b13e2610f6965cdf4f5266ac763e Reviewed-by: Lars Knoll --- bin/syncqt.pl | 2 +- mkspecs/features/qt_build_paths.prf | 3 ++- mkspecs/features/qt_module_headers.prf | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bin/syncqt.pl b/bin/syncqt.pl index 8890b317700..77ce90c164c 100755 --- a/bin/syncqt.pl +++ b/bin/syncqt.pl @@ -1111,7 +1111,7 @@ foreach my $lib (@modules_to_sync) { elsif (!$shadow) { $pri_install_pfiles.= "$pri_install_iheader ";; } - $pri_injections .= fixPaths($iheader, "$out_basedir/include/$lib") + $pri_injections .= fixPaths($iheader, $out_basedir) .":".($no_stamp ? "^" : "").fixPaths($oheader, "$out_basedir/include/$lib") .$injection." " if ($shadow); } diff --git a/mkspecs/features/qt_build_paths.prf b/mkspecs/features/qt_build_paths.prf index 1848f00e90c..3bb3823a8ee 100644 --- a/mkspecs/features/qt_build_paths.prf +++ b/mkspecs/features/qt_build_paths.prf @@ -12,7 +12,8 @@ # Find the module's source root dir. isEmpty(_QMAKE_CONF_): error("Project has no top-level .qmake.conf file.") MODULE_BASE_INDIR = $$dirname(_QMAKE_CONF_) -MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_INDIR) +REAL_MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_INDIR) +MODULE_BASE_OUTDIR = $$REAL_MODULE_BASE_OUTDIR !isEmpty(MODULE_BASE_DIR): MODULE_SYNCQT_DIR = $$MODULE_BASE_DIR # compat for webkit isEmpty(MODULE_SYNCQT_DIR): MODULE_SYNCQT_DIR = $$MODULE_BASE_INDIR isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index bbded56b428..70d3520e5c4 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -123,7 +123,7 @@ MODULE_INC_OUTDIR = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME isEmpty(MODULE_CFG_FILE): MODULE_CFG_FILE = qt$${MODULE}-config exists($$OUT_PWD/$${MODULE_CFG_FILE}.h) { - fwd_rel = $$relative_path($$OUT_PWD, $$MODULE_INC_OUTDIR) + fwd_rel = $$relative_path($$OUT_PWD, $$REAL_MODULE_BASE_OUTDIR) SYNCQT.INJECTIONS += \ $$fwd_rel/$${MODULE_CFG_FILE}.h:$${MODULE_CFG_FILE}.h \ $$fwd_rel/$${MODULE_CFG_FILE}_p.h:$$MODULE_VERSION/$$MODULE_INCNAME/private/$${MODULE_CFG_FILE}_p.h @@ -131,7 +131,7 @@ exists($$OUT_PWD/$${MODULE_CFG_FILE}.h) { for (injection, SYNCQT.INJECTIONS) { injects = $$split(injection, :) - dst_hdr = $$absolute_path($$member(injects, 0), $$MODULE_INC_OUTDIR) + dst_hdr = $$absolute_path($$member(injects, 0), $$REAL_MODULE_BASE_OUTDIR) ofwd_hdr = $$member(injects, 1) fwd_hdr = $$replace(ofwd_hdr, ^\\^, ) MAIN_FWD = $$MODULE_INC_OUTDIR/$$fwd_hdr