Fix macOS shadow prefix builds using pre-synced source packages

For source packages that don't have a .git subdirectory, syncqt is
executed before configure, with outdir set to srcdir, and this
caused path misalignments for injected headers in qt_module.prf
when generating makefile rules.

The fix is to change syncqt to always output injected header
paths relative to the source dir.

Task-number: QTBUG-64539
Change-Id: Ia2296e44494093dbf124729062f430ad6fca7262
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
bb10
Alexandru Croitor 2017-11-16 16:59:00 +01:00 committed by Lars Knoll
parent 7e360ccd4e
commit 0dc025bf9f
2 changed files with 7 additions and 12 deletions

View File

@ -1037,7 +1037,8 @@ foreach my $lib (@modules_to_sync) {
my $clean_header;
my $requires;
my $iheader = $subdir . "/" . $header;
my $iheader_src = $subdir . "/" . $header;
my $iheader = $iheader_src;
$iheader =~ s/^\Q$basedir\E/$out_basedir/ if ($shadow);
if ($check_includes) {
# We need both $public_header and $private_header because QPA headers count as neither
@ -1079,7 +1080,7 @@ foreach my $lib (@modules_to_sync) {
}
$header_copies++ if (!$shadow && syncHeader($lib, $oheader, $iheader, $copy_headers, $ts));
my $pri_install_iheader = fixPaths($iheader, $dir);
my $pri_install_iheader = fixPaths($iheader_src, $dir);
my $injection = "";
if ($public_header) {
foreach my $class (@classes) {

View File

@ -135,18 +135,12 @@ lib_bundle {
!build_all| \
if(if(!debug_and_release|CONFIG(release, debug|release))) {
FRAMEWORK_HEADERS.version = Versions
FRAMEWORK_HEADERS.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES
# Non-existing paths (yet, they will be generated) are used verbatim.
for (injected_header, SYNCQT.INJECTED_HEADER_FILES): \
FRAMEWORK_HEADERS.files += \
$$relative_path($$absolute_path($$injected_header, $$_PRO_FILE_PWD_), $$OUT_PWD)
FRAMEWORK_HEADERS.files = \
$$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES $$SYNCQT.INJECTED_HEADER_FILES
FRAMEWORK_HEADERS.path = Headers
FRAMEWORK_PRIVATE_HEADERS.version = Versions
FRAMEWORK_PRIVATE_HEADERS.files = $$SYNCQT.PRIVATE_HEADER_FILES
for (injected_header, SYNCQT.INJECTED_PRIVATE_HEADER_FILES): \
FRAMEWORK_PRIVATE_HEADERS.files += \
$$relative_path($$absolute_path($$injected_header, $$_PRO_FILE_PWD_), $$OUT_PWD)
FRAMEWORK_PRIVATE_HEADERS.files = \
$$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.INJECTED_PRIVATE_HEADER_FILES
FRAMEWORK_PRIVATE_HEADERS.path = Headers/$$VERSION/$$MODULE_INCNAME/private
FRAMEWORK_QPA_HEADERS.version = Versions
FRAMEWORK_QPA_HEADERS.files = $$SYNCQT.QPA_HEADER_FILES