summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/syncqt.pl23
-rw-r--r--mkspecs/features/qt_module_headers.prf14
-rw-r--r--src/corelib/global/global.pri9
-rw-r--r--sync.profile1
4 files changed, 34 insertions, 13 deletions
diff --git a/bin/syncqt.pl b/bin/syncqt.pl
index bbd514e58b..826d3fc6fa 100755
--- a/bin/syncqt.pl
+++ b/bin/syncqt.pl
@@ -833,6 +833,7 @@ foreach my $lib (@modules_to_sync) {
my $pri_install_files = "";
my $pri_install_pfiles = "";
my $pri_install_qpafiles = "";
+ my $pri_injections = "";
my $libcapitals = uc($lib);
my $master_contents =
@@ -905,8 +906,15 @@ foreach my $lib (@modules_to_sync) {
#calc files and "copy" them
foreach my $subdir (@subdirs) {
my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0);
+ if (defined $inject_headers{$subdir}) {
+ foreach my $if (@{$inject_headers{$subdir}}) {
+ @headers = grep(!/^\Q$if\E$/, @headers); #in case we configure'd previously
+ push @headers, "*".$if;
+ }
+ }
my $header_dirname = "";
foreach my $header (@headers) {
+ my $shadow = ($header =~ s/^\*//);
$header = 0 if($header =~ /^ui_.*.h/);
foreach (@ignore_headers) {
$header = 0 if($header eq $_);
@@ -928,6 +936,7 @@ foreach my $lib (@modules_to_sync) {
}
my $iheader = $subdir . "/" . $header;
+ $iheader =~ s/^\Q$basedir\E/$out_basedir/ if ($shadow);
my @classes = $public_header && (!$minimal && $is_qt) ? classNames($iheader) : ();
if($showonly) {
print "$header [$lib]\n";
@@ -935,7 +944,7 @@ foreach my $lib (@modules_to_sync) {
print "SYMBOL: $_\n";
}
} else {
- my $ts = (stat($iheader))[9];
+ my $ts = $shadow ? 0 : (stat($iheader))[9];
#find out all the places it goes..
my $oheader;
if ($public_header) {
@@ -949,19 +958,20 @@ foreach my $lib (@modules_to_sync) {
# class =~ s,::,/,g;
# }
- $header_copies++ if (syncHeader($lib, "$out_basedir/include/$lib/$class", "$out_basedir/include/$lib/$header", 0, $ts));
+ $header_copies++ if (!$shadow && syncHeader($lib, "$out_basedir/include/$lib/$class", "$out_basedir/include/$lib/$header", 0, $ts));
}
} elsif ($create_private_headers && !$qpa_header) {
$oheader = "$out_basedir/include/$lib/$module_version/$lib/private/$header";
} elsif ($create_private_headers) {
$oheader = "$out_basedir/include/$lib/$module_version/$lib/qpa/$header";
}
- $header_copies++ if (syncHeader($lib, $oheader, $iheader, $copy_headers, $ts));
+ $header_copies++ if (!$shadow && syncHeader($lib, $oheader, $iheader, $copy_headers, $ts));
my $pri_install_iheader = fixPaths($iheader, $dir);
+ my $injection = "";
if($public_header) {
#put it into the master file
- $master_contents .= "#include \"$public_header\"\n" if (shouldMasterInclude($iheader));
+ $master_contents .= "#include \"$public_header\"\n" if (!$shadow && shouldMasterInclude($iheader));
#deal with the install directives
foreach my $class (@classes) {
@@ -973,6 +983,7 @@ foreach my $lib (@modules_to_sync) {
my $class_header = fixPaths("$out_basedir/include/$lib/$class", $dir) . " ";
$pri_install_classes .= $class_header
unless($pri_install_classes =~ $class_header);
+ $injection .= ":$class";
}
$pri_install_files.= "$pri_install_iheader ";;
}
@@ -982,6 +993,9 @@ foreach my $lib (@modules_to_sync) {
else {
$pri_install_pfiles.= "$pri_install_iheader ";;
}
+ $pri_injections .= fixPaths($iheader, "$out_basedir/include/$lib")
+ .":".fixPaths($oheader, "$out_basedir/include/$lib")
+ .$injection." " if ($shadow);
}
if ($verbose_level && $header_copies) {
@@ -1112,6 +1126,7 @@ foreach my $lib (@modules_to_sync) {
$headers_pri_contents .= "SYNCQT.HEADER_CLASSES = $pri_install_classes\n";
$headers_pri_contents .= "SYNCQT.PRIVATE_HEADER_FILES = $pri_install_pfiles\n";
$headers_pri_contents .= "SYNCQT.QPA_HEADER_FILES = $pri_install_qpafiles\n";
+ $headers_pri_contents .= "SYNCQT.INJECTIONS = $pri_injections\n";
my $headers_pri_file = "$out_basedir/include/$lib/headers.pri";
writeFile($headers_pri_file, $headers_pri_contents, $lib, "headers.pri file");
}
diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf
index ca26eb674b..0baa9ec7b2 100644
--- a/mkspecs/features/qt_module_headers.prf
+++ b/mkspecs/features/qt_module_headers.prf
@@ -35,6 +35,20 @@ else: \
INC_PATH = $$MODULE_BASE_INDIR
include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true)
+for (injection, SYNCQT.INJECTIONS) {
+ injects = $$split(injection, :)
+ 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.")
+ injects = $$member(injects, 2, -1)
+ for (inject, injects) {
+ CLASS_FWD = $$INC_PATH/include/$$MODULE_INCNAME/$$inject
+ CLASS_FWD_CONT = '$${LITERAL_HASH}include "$$fwd_hdr"'
+ write_file($$CLASS_FWD, CLASS_FWD_CONT)|error("Aborting.")
+ }
+}
+
autogen_warning = \
"/* This file was generated by qmake with the info from <root>/$$relative_path($$_PRO_FILE_, $$MODULE_BASE_INDIR). */"
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri
index 789f500cab..efa585ff3e 100644
--- a/src/corelib/global/global.pri
+++ b/src/corelib/global/global.pri
@@ -29,15 +29,6 @@ SOURCES += \
# qlibraryinfo.cpp includes qconfig.cpp
INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
-# configure creates these, not syncqt, so we need to manually inject them
-qconfig_h_files = \
- $$OUT_PWD/global/qfeatures.h \
- $$OUT_PWD/global/qconfig.h \
- $$QT_BUILD_TREE/include/QtCore/QtConfig
-targ_headers.files += $$qconfig_h_files
-contains(QMAKE_BUNDLE_DATA, FRAMEWORK_HEADERS): \
- FRAMEWORK_HEADERS.files += $$qconfig_h_files
-
# Only used on platforms with CONFIG += precompile_header
PRECOMPILED_HEADER = global/qt_pch.h
diff --git a/sync.profile b/sync.profile
index 9c759297ce..9823aa16bd 100644
--- a/sync.profile
+++ b/sync.profile
@@ -24,6 +24,7 @@
%classnames = (
"qglobal.h" => "QtGlobal",
"qendian.h" => "QtEndian",
+ "qconfig.h" => "QtConfig",
"qplugin.h" => "QtPlugin",
"qalgorithms.h" => "QtAlgorithms",
"qcontainerfwd.h" => "QtContainerFwd",