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>
This commit is contained in:
parent
1a71fe0306
commit
9c4c136bc9
@ -920,7 +920,7 @@ foreach my $lib (@modules_to_sync) {
|
|||||||
$allheadersprivate = 1 if $allmoduleheadersprivate{$lib};
|
$allheadersprivate = 1 if $allmoduleheadersprivate{$lib};
|
||||||
|
|
||||||
#information used after the syncing
|
#information used after the syncing
|
||||||
my $pri_install_classes = "";
|
my $pri_install_gfiles = "";
|
||||||
my $pri_install_files = "";
|
my $pri_install_files = "";
|
||||||
my $pri_install_ifiles = "";
|
my $pri_install_ifiles = "";
|
||||||
my $pri_install_pfiles = "";
|
my $pri_install_pfiles = "";
|
||||||
@ -1086,9 +1086,9 @@ foreach my $lib (@modules_to_sync) {
|
|||||||
# if ($class =~ m/::/) {
|
# if ($class =~ m/::/) {
|
||||||
# $class =~ s,::,/,g;
|
# $class =~ s,::,/,g;
|
||||||
# }
|
# }
|
||||||
my $class_header = fixPaths("$out_basedir/include/$lib/$class", $dir) . " ";
|
my $class_header = "$class ";
|
||||||
$pri_install_classes .= $class_header
|
$pri_install_gfiles .= $class_header
|
||||||
unless($pri_install_classes =~ $class_header);
|
unless($pri_install_gfiles =~ $class_header);
|
||||||
$injection .= ":$class";
|
$injection .= ":$class";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1198,7 +1198,7 @@ foreach my $lib (@modules_to_sync) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$pri_install_files .= fixPaths($header_path, $dir) . " ";
|
$pri_install_gfiles .= "$header ";
|
||||||
}
|
}
|
||||||
if ($verbose_level < 3) {
|
if ($verbose_level < 3) {
|
||||||
print " }\n" unless ($first);
|
print " }\n" unless ($first);
|
||||||
@ -1208,8 +1208,7 @@ foreach my $lib (@modules_to_sync) {
|
|||||||
my $vheader = "$out_basedir/include/$lib/".lc($lib)."version.h";
|
my $vheader = "$out_basedir/include/$lib/".lc($lib)."version.h";
|
||||||
my $VHeader = "$out_basedir/include/$lib/${lib}Version";
|
my $VHeader = "$out_basedir/include/$lib/${lib}Version";
|
||||||
syncHeader($lib, $VHeader, $vheader, 0);
|
syncHeader($lib, $VHeader, $vheader, 0);
|
||||||
$pri_install_files .= fixPaths($vheader, $dir) . " ";
|
$pri_install_gfiles .= lc($lib)."version.h ${lib}Version ";
|
||||||
$pri_install_classes .= fixPaths($VHeader, $dir) . " ";
|
|
||||||
my @versions = split(/\./, $module_version);
|
my @versions = split(/\./, $module_version);
|
||||||
my $modulehexstring = sprintf("0x%02X%02X%02X", $versions[0], $versions[1], $versions[2]);
|
my $modulehexstring = sprintf("0x%02X%02X%02X", $versions[0], $versions[1], $versions[2]);
|
||||||
my $vhdrcont =
|
my $vhdrcont =
|
||||||
@ -1225,7 +1224,7 @@ foreach my $lib (@modules_to_sync) {
|
|||||||
writeFile($vheader, $vhdrcont, $lib, "version header");
|
writeFile($vheader, $vhdrcont, $lib, "version header");
|
||||||
|
|
||||||
my $master_include = "$out_basedir/include/$lib/$lib";
|
my $master_include = "$out_basedir/include/$lib/$lib";
|
||||||
$pri_install_files .= fixPaths($master_include, $dir) . " ";
|
$pri_install_gfiles .= "$lib ";
|
||||||
writeFile($master_include, $master_contents, $lib, "master header");
|
writeFile($master_include, $master_contents, $lib, "master header");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1234,7 +1233,7 @@ foreach my $lib (@modules_to_sync) {
|
|||||||
my $headers_pri_contents = "";
|
my $headers_pri_contents = "";
|
||||||
$headers_pri_contents .= "SYNCQT.HEADER_FILES = $pri_install_files\n";
|
$headers_pri_contents .= "SYNCQT.HEADER_FILES = $pri_install_files\n";
|
||||||
$headers_pri_contents .= "SYNCQT.INJECTED_HEADER_FILES = $pri_install_ifiles\n";
|
$headers_pri_contents .= "SYNCQT.INJECTED_HEADER_FILES = $pri_install_ifiles\n";
|
||||||
$headers_pri_contents .= "SYNCQT.HEADER_CLASSES = $pri_install_classes\n";
|
$headers_pri_contents .= "SYNCQT.GENERATED_HEADER_FILES = $pri_install_gfiles\n";
|
||||||
$headers_pri_contents .= "SYNCQT.PRIVATE_HEADER_FILES = $pri_install_pfiles\n";
|
$headers_pri_contents .= "SYNCQT.PRIVATE_HEADER_FILES = $pri_install_pfiles\n";
|
||||||
$headers_pri_contents .= "SYNCQT.INJECTED_PRIVATE_HEADER_FILES = $pri_install_ipfiles\n";
|
$headers_pri_contents .= "SYNCQT.INJECTED_PRIVATE_HEADER_FILES = $pri_install_ipfiles\n";
|
||||||
$headers_pri_contents .= "SYNCQT.QPA_HEADER_FILES = $pri_install_qpafiles\n";
|
$headers_pri_contents .= "SYNCQT.QPA_HEADER_FILES = $pri_install_qpafiles\n";
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
|
|
||||||
#headers
|
#headers
|
||||||
qt_install_headers {
|
qt_install_headers {
|
||||||
class_headers.files = $$SYNCQT.HEADER_CLASSES
|
gen_headers.files = $$SYNCQT.GENERATED_HEADER_FILES
|
||||||
class_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME
|
gen_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME
|
||||||
INSTALLS += class_headers
|
INSTALLS += gen_headers
|
||||||
|
|
||||||
targ_headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.INJECTED_HEADER_FILES
|
targ_headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.INJECTED_HEADER_FILES
|
||||||
targ_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME
|
targ_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME
|
||||||
|
@ -136,7 +136,7 @@ lib_bundle {
|
|||||||
if(if(!debug_and_release|CONFIG(release, debug|release))) {
|
if(if(!debug_and_release|CONFIG(release, debug|release))) {
|
||||||
FRAMEWORK_HEADERS.version = Versions
|
FRAMEWORK_HEADERS.version = Versions
|
||||||
FRAMEWORK_HEADERS.files = \
|
FRAMEWORK_HEADERS.files = \
|
||||||
$$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES $$SYNCQT.INJECTED_HEADER_FILES
|
$$SYNCQT.HEADER_FILES $$SYNCQT.GENERATED_HEADER_FILES $$SYNCQT.INJECTED_HEADER_FILES
|
||||||
FRAMEWORK_HEADERS.path = Headers
|
FRAMEWORK_HEADERS.path = Headers
|
||||||
FRAMEWORK_PRIVATE_HEADERS.version = Versions
|
FRAMEWORK_PRIVATE_HEADERS.version = Versions
|
||||||
FRAMEWORK_PRIVATE_HEADERS.files = \
|
FRAMEWORK_PRIVATE_HEADERS.files = \
|
||||||
@ -224,7 +224,7 @@ android: CONFIG += qt_android_deps no_linker_version_script
|
|||||||
private_api_headers = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.QPA_HEADER_FILES
|
private_api_headers = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.QPA_HEADER_FILES
|
||||||
|
|
||||||
for(header, private_api_headers): \
|
for(header, private_api_headers): \
|
||||||
verscript_content += " @FILE:$${_PRO_FILE_PWD_}/$$header@"
|
verscript_content += " @FILE:$$header@"
|
||||||
verscript_content += "};"
|
verscript_content += "};"
|
||||||
|
|
||||||
current = Qt_$$QT_MAJOR_VERSION
|
current = Qt_$$QT_MAJOR_VERSION
|
||||||
@ -244,8 +244,7 @@ android: CONFIG += qt_android_deps no_linker_version_script
|
|||||||
verscriptprocess.name = linker version script ${QMAKE_FILE_BASE}
|
verscriptprocess.name = linker version script ${QMAKE_FILE_BASE}
|
||||||
verscriptprocess.input = verscript_in
|
verscriptprocess.input = verscript_in
|
||||||
verscriptprocess.CONFIG += no_link target_predeps
|
verscriptprocess.CONFIG += no_link target_predeps
|
||||||
for(header, private_api_headers): \
|
verscriptprocess.depends = $$private_api_headers
|
||||||
verscriptprocess.depends += $${_PRO_FILE_PWD_}/$$header
|
|
||||||
verscriptprocess.output = $$verscript
|
verscriptprocess.output = $$verscript
|
||||||
verscriptprocess.commands = perl $${PWD}/data/unix/findclasslist.pl < ${QMAKE_FILE_IN} > $@
|
verscriptprocess.commands = perl $${PWD}/data/unix/findclasslist.pl < ${QMAKE_FILE_IN} > $@
|
||||||
silent:verscriptprocess.commands = @echo creating linker version script ${QMAKE_FILE_BASE} && $$verscriptprocess.commands
|
silent:verscriptprocess.commands = @echo creating linker version script ${QMAKE_FILE_BASE} && $$verscriptprocess.commands
|
||||||
|
@ -96,12 +96,26 @@ MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES
|
|||||||
|
|
||||||
minimal_syncqt: return()
|
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
|
#load up the headers info
|
||||||
git_build: \
|
git_build: \
|
||||||
INC_PATH = $$MODULE_BASE_OUTDIR
|
INC_PATH = $$MODULE_BASE_OUTDIR
|
||||||
else: \
|
else: \
|
||||||
INC_PATH = $$MODULE_BASE_INDIR
|
INC_PATH = $$MODULE_BASE_INDIR
|
||||||
include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true)
|
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.
|
!lib_bundle: \ # Headers are embedded into the bundle, so don't install them separately.
|
||||||
CONFIG += qt_install_headers
|
CONFIG += qt_install_headers
|
||||||
|
|
||||||
@ -114,9 +128,8 @@ exists($$OUT_PWD/qt$${MODULE}-config.h) {
|
|||||||
SYNCQT.INJECTIONS += \
|
SYNCQT.INJECTIONS += \
|
||||||
$$fwd_rel/qt$${MODULE}-config.h:qt$${MODULE}-config.h \
|
$$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
|
$$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.INJECTED_HEADER_FILES += $$OUT_PWD/qt$${MODULE}-config.h
|
||||||
SYNCQT.HEADER_FILES += $$inst_rel/qt$${MODULE}-config.h
|
SYNCQT.INJECTED_PRIVATE_HEADER_FILES += $$OUT_PWD/qt$${MODULE}-config_p.h
|
||||||
SYNCQT.INJECTED_PRIVATE_HEADER_FILES += $$inst_rel/qt$${MODULE}-config_p.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (injection, SYNCQT.INJECTIONS) {
|
for (injection, SYNCQT.INJECTIONS) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user