diff options
-rwxr-xr-x | bin/syncqt.pl | 23 | ||||
-rw-r--r-- | mkspecs/features/qt_module_headers.prf | 14 | ||||
-rw-r--r-- | src/corelib/global/global.pri | 9 | ||||
-rw-r--r-- | sync.profile | 1 |
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", |