summaryrefslogtreecommitdiffstats
path: root/bin/syncqt
diff options
context:
space:
mode:
Diffstat (limited to 'bin/syncqt')
-rwxr-xr-xbin/syncqt232
1 files changed, 109 insertions, 123 deletions
diff --git a/bin/syncqt b/bin/syncqt
index 4acb5b5..907869d 100755
--- a/bin/syncqt
+++ b/bin/syncqt
@@ -213,7 +213,7 @@ sub classNames {
}
}
return @ret if($line =~ m/^#pragma qt_sync_stop_processing/);
- push(@ret, "$1") if($line =~ m/^#pragma qt_class\(([^)]*)\)[\r\n]*$/);
+ push(@ret, $1) if($line =~ m/^#pragma qt_class\(([^)]*)\)[\r\n]*$/);
$line = 0;
}
if($line) {
@@ -297,8 +297,7 @@ sub classNames {
push @symbols, "QMutable" . $1 . "Iterator";
}
- foreach (@symbols) {
- my $symbol = $_;
+ foreach my $symbol (@symbols) {
$symbol = (join("::", @namespaces) . "::" . $symbol) if (scalar @namespaces);
push @ret, $symbol
if ($symbol =~ /^Q[^:]*$/ # no-namespace, starting with Q
@@ -310,21 +309,22 @@ sub classNames {
}
######################################################################
-# Syntax: syncHeader(header, iheader, copy)
+# Syntax: syncHeader(header, iheader, copy, timestamp)
# Params: header, string, filename to create "symlink" for
# iheader, string, destination name of symlink
# copy, forces header to be a copy of iheader
+# timestamp, the requested modification time if copying
#
# Purpose: Syncronizes header to iheader
# Returns: 1 if successful, else 0.
######################################################################
sub syncHeader {
- my ($header, $iheader, $copy) = @_;
+ my ($header, $iheader, $copy, $ts) = @_;
$iheader =~ s=\\=/=g;
$header =~ s=\\=/=g;
return copyFile($iheader, $header) if($copy);
- unless(-e "$header") {
+ unless(-e $header) {
my $header_dir = dirname($header);
mkpath $header_dir, !$quiet;
@@ -333,6 +333,7 @@ sub syncHeader {
open HEADER, ">$header" || die "Could not open $header for writing!\n";
print HEADER "#include \"$iheader_out\"\n";
close HEADER;
+ utime(time, $ts, $header) or die "$iheader, $header";
return 1;
}
return 0;
@@ -368,7 +369,7 @@ sub fixPaths {
$dir =~ s=\\=/=g;
}
$dir =~ s,/cygdrive/([a-zA-Z])/,$1:/,g;
- return basename($file) if("$file_dir" eq "$dir");
+ return basename($file) if($file_dir eq $dir);
#guts
my $match_dir = 0;
@@ -430,7 +431,7 @@ sub fileCompare {
my $file2contents = fileContents($file2);
if (! -e $file1) { return 1; }
if (! -e $file2) { return -1; }
- return $file1contents ne $file2contents ? (stat("$file2"))[9] <=> (stat("$file1"))[9] : 0;
+ return $file1contents ne $file2contents ? (stat($file2))[9] <=> (stat($file1))[9] : 0;
}
######################################################################
@@ -467,21 +468,23 @@ sub copyFile
if ( $knowdiff || ($filecontents ne $ifilecontents) ) {
if ( $copy > 0 ) {
my $file_dir = dirname($file);
- mkpath $file_dir, !$quiet unless(-e "$file_dir");
+ mkpath $file_dir, !$quiet unless(-e $file_dir);
open(O, "> " . $file) || die "Could not open $file for writing (no write permission?)";
local $/;
binmode O;
print O $ifilecontents;
close O;
+ utime time, (stat($ifile))[9], $file;
return 1;
} elsif ( $copy < 0 ) {
my $ifile_dir = dirname($ifile);
- mkpath $ifile_dir, !$quiet unless(-e "$ifile_dir");
+ mkpath $ifile_dir, !$quiet unless(-e $ifile_dir);
open(O, "> " . $ifile) || die "Could not open $ifile for writing (no write permission?)";
local $/;
binmode O;
print O $filecontents;
close O;
+ utime time, (stat($file))[9], $ifile;
return 1;
}
}
@@ -567,102 +570,102 @@ while ( @ARGV ) {
#parse
my $arg = shift @ARGV;
- if ("$arg" eq "-h" || "$arg" eq "-help" || "$arg" eq "?") {
+ if ($arg eq "-h" || $arg eq "-help" || $arg eq "?") {
$var = "show_help";
$val = "yes";
- } elsif("$arg" eq "-copy") {
+ } elsif($arg eq "-copy") {
$var = "copy";
$val = "yes";
- } elsif("$arg" eq "-o" || "$arg" eq "-outdir") {
+ } elsif($arg eq "-o" || $arg eq "-outdir") {
$var = "output";
$val = shift @ARGV;
- } elsif("$arg" eq "-showonly" || "$arg" eq "-remove-stale" || "$arg" eq "-windows" ||
- "$arg" eq "-relative" || "$arg" eq "-check-includes") {
+ } elsif($arg eq "-showonly" || $arg eq "-remove-stale" || $arg eq "-windows" ||
+ $arg eq "-relative" || $arg eq "-check-includes") {
$var = substr($arg, 1);
$val = "yes";
- } elsif("$arg" =~ /^-no-(.*)$/) {
+ } elsif($arg =~ /^-no-(.*)$/) {
$var = $1;
$val = "no";
#these are for commandline compat
- } elsif("$arg" eq "-inc") {
+ } elsif($arg eq "-inc") {
$var = "output";
$val = shift @ARGV;
- } elsif("$arg" eq "-module") {
+ } elsif($arg eq "-module") {
$var = "module";
$val = shift @ARGV;
- } elsif("$arg" eq "-separate-module") {
+ } elsif($arg eq "-separate-module") {
$var = "separate-module";
$val = shift @ARGV;
- } elsif("$arg" eq "-show") {
+ } elsif($arg eq "-show") {
$var = "showonly";
$val = "yes";
- } elsif("$arg" eq "-quiet") {
+ } elsif($arg eq "-quiet") {
$var = "quiet";
$val = "yes";
- } elsif("$arg" eq "-base-dir") {
+ } elsif($arg eq "-base-dir") {
# skip, it's been dealt with at the top of the file
shift @ARGV;
next;
}
#do something
- if(!$var || "$var" eq "show_help") {
+ if(!$var || $var eq "show_help") {
print "Unknown option: $arg\n\n" if(!$var);
showUsage();
- } elsif ("$var" eq "copy") {
- if("$val" eq "yes") {
+ } elsif ($var eq "copy") {
+ if($val eq "yes") {
$copy_headers++;
} elsif($showonly) {
$copy_headers--;
}
- } elsif ("$var" eq "showonly") {
- if("$val" eq "yes") {
+ } elsif ($var eq "showonly") {
+ if($val eq "yes") {
$showonly++;
} elsif($showonly) {
$showonly--;
}
- } elsif ("$var" eq "quiet") {
- if("$val" eq "yes") {
+ } elsif ($var eq "quiet") {
+ if($val eq "yes") {
$quiet++;
} elsif($quiet) {
$quiet--;
}
- } elsif ("$var" eq "check-includes") {
- if("$val" eq "yes") {
+ } elsif ($var eq "check-includes") {
+ if($val eq "yes") {
$check_includes++;
} elsif($check_includes) {
$check_includes--;
}
- } elsif ("$var" eq "remove-stale") {
- if("$val" eq "yes") {
+ } elsif ($var eq "remove-stale") {
+ if($val eq "yes") {
$remove_stale++;
} elsif($remove_stale) {
$remove_stale--;
}
- } elsif ("$var" eq "windows") {
- if("$val" eq "yes") {
+ } elsif ($var eq "windows") {
+ if($val eq "yes") {
$force_win++;
} elsif($force_win) {
$force_win--;
}
- } elsif ("$var" eq "relative") {
- if("$val" eq "yes") {
+ } elsif ($var eq "relative") {
+ if($val eq "yes") {
$force_relative++;
} elsif($force_relative) {
$force_relative--;
}
- } elsif ("$var" eq "module") {
+ } elsif ($var eq "module") {
print "module :$val:\n" unless $quiet;
die "No such module: $val" unless(defined $modules{$val});
push @modules_to_sync, $val;
- } elsif ("$var" eq "separate-module") {
+ } elsif ($var eq "separate-module") {
my ($module, $prodir, $headerdir) = split(/:/, $val);
$modules{$module} = $prodir;
push @modules_to_sync, $module;
$moduleheaders{$module} = $headerdir;
$create_uic_class_map = 0;
$create_private_headers = 0;
- } elsif ("$var" eq "output") {
+ } elsif ($var eq "output") {
my $outdir = $val;
if(checkRelative($outdir)) {
$out_basedir = getcwd();
@@ -696,12 +699,11 @@ my %inject_headers;
# find the header by normal means.
%inject_headers = ( "$basedir/src/corelib/global" => ( "*qconfig.h" ) ) unless (-e "$basedir/src/corelib/global/qconfig.h");
-foreach (@modules_to_sync) {
+foreach my $lib (@modules_to_sync) {
#iteration info
- my $lib = $_;
- my $dir = "$modules{$lib}";
+ my $dir = $modules{$lib};
my $pathtoheaders = "";
- $pathtoheaders = "$moduleheaders{$lib}" if ($moduleheaders{$lib});
+ $pathtoheaders = $moduleheaders{$lib} if ($moduleheaders{$lib});
#information used after the syncing
my $pri_install_classes = "";
@@ -715,24 +717,23 @@ foreach (@modules_to_sync) {
#get dependencies
if(-e "$dir/" . basename($dir) . ".pro") {
if(open(F, "<$dir/" . basename($dir) . ".pro")) {
- while(<F>) {
- my $line = $_;
+ while(my $line = <F>) {
chomp $line;
if($line =~ /^ *QT *\+?= *([^\r\n]*)/) {
- foreach(split(/ /, "$1")) {
- $master_contents .= "#include <QtCore/QtCore>\n" if("$_" eq "core");
- $master_contents .= "#include <QtGui/QtGui>\n" if("$_" eq "gui");
- $master_contents .= "#include <QtNetwork/QtNetwork>\n" if("$_" eq "network");
- $master_contents .= "#include <QtSvg/QtSvg>\n" if("$_" eq "svg");
- $master_contents .= "#include <QtDeclarative/QtDeclarative>\n" if("$_" eq "declarative");
- $master_contents .= "#include <QtScript/QtScript>\n" if("$_" eq "script");
- $master_contents .= "#include <QtScriptTools/QtScriptTools>\n" if("$_" eq "scripttools");
- $master_contents .= "#include <Qt3Support/Qt3Support>\n" if("$_" eq "qt3support");
- $master_contents .= "#include <QtSql/QtSql>\n" if("$_" eq "sql");
- $master_contents .= "#include <QtXml/QtXml>\n" if("$_" eq "xml");
- $master_contents .= "#include <QtXmlPatterns/QtXmlPatterns>\n" if("$_" eq "xmlpatterns");
- $master_contents .= "#include <QtOpenGL/QtOpenGL>\n" if("$_" eq "opengl");
- $master_contents .= "#include <QtOpenVG/QtOpenVG>\n" if("$_" eq "openvg");
+ foreach(split(/ /, $1)) {
+ $master_contents .= "#include <QtCore/QtCore>\n" if($_ eq "core");
+ $master_contents .= "#include <QtGui/QtGui>\n" if($_ eq "gui");
+ $master_contents .= "#include <QtNetwork/QtNetwork>\n" if($_ eq "network");
+ $master_contents .= "#include <QtSvg/QtSvg>\n" if($_ eq "svg");
+ $master_contents .= "#include <QtDeclarative/QtDeclarative>\n" if($_ eq "declarative");
+ $master_contents .= "#include <QtScript/QtScript>\n" if($_ eq "script");
+ $master_contents .= "#include <QtScriptTools/QtScriptTools>\n" if($_ eq "scripttools");
+ $master_contents .= "#include <Qt3Support/Qt3Support>\n" if($_ eq "qt3support");
+ $master_contents .= "#include <QtSql/QtSql>\n" if($_ eq "sql");
+ $master_contents .= "#include <QtXml/QtXml>\n" if($_ eq "xml");
+ $master_contents .= "#include <QtXmlPatterns/QtXmlPatterns>\n" if($_ eq "xmlpatterns");
+ $master_contents .= "#include <QtOpenGL/QtOpenGL>\n" if($_ eq "opengl");
+ $master_contents .= "#include <QtOpenVG/QtOpenVG>\n" if($_ eq "openvg");
}
}
}
@@ -743,34 +744,31 @@ foreach (@modules_to_sync) {
#remove the old files
if($remove_stale) {
my @subdirs = ("$out_basedir/include/$lib");
- foreach (@subdirs) {
- my $subdir = "$_";
- if (opendir DIR, "$subdir") {
+ foreach my $subdir (@subdirs) {
+ if (opendir DIR, $subdir) {
while(my $t = readdir(DIR)) {
my $file = "$subdir/$t";
- if(-d "$file") {
- push @subdirs, "$file" unless($t eq "." || $t eq "..");
+ if(-d $file) {
+ push @subdirs, $file unless($t eq "." || $t eq "..");
} else {
- my @files = ("$file");
+ my @files = ($file);
#push @files, "$out_basedir/include/Qt/$t" if(-e "$out_basedir/include/Qt/$t");
- foreach (@files) {
- my $file = $_;
+ foreach my $file (@files) {
my $remove_file = 0;
if(open(F, "<$file")) {
- while(<F>) {
- my $line = $_;
+ while(my $line = <F>) {
chomp $line;
if($line =~ /^\#include \"([^\"]*)\"$/) {
my $include = $1;
$include = $subdir . "/" . $include unless(substr($include, 0, 1) eq "/");
- $remove_file = 1 unless(-e "$include");
+ $remove_file = 1 unless(-e $include);
} else {
$remove_file = 0;
last;
}
}
close(F);
- unlink "$file" if($remove_file);
+ unlink $file if($remove_file);
}
}
}
@@ -782,15 +780,13 @@ foreach (@modules_to_sync) {
}
#create the new ones
- foreach (split(/;/, $dir)) {
- my $current_dir = "$_";
+ foreach my $current_dir (split(/;/, $dir)) {
my $headers_dir = $current_dir;
$headers_dir .= "/$pathtoheaders" if ($pathtoheaders);
#calc subdirs
my @subdirs = ($headers_dir);
- foreach (@subdirs) {
- my $subdir = "$_";
- opendir DIR, "$subdir" or next;
+ foreach my $subdir (@subdirs) {
+ opendir DIR, $subdir or next;
while(my $t = readdir(DIR)) {
push @subdirs, "$subdir/$t" if(-d "$subdir/$t" && !($t eq ".") &&
!($t eq "..") && !($t eq ".obj") &&
@@ -801,16 +797,14 @@ foreach (@modules_to_sync) {
}
#calc files and "copy" them
- foreach (@subdirs) {
- my $subdir = "$_";
- my @headers = findFiles("$subdir", "^[-a-z0-9_]*\\.h\$" , 0);
+ foreach my $subdir (@subdirs) {
+ my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0);
push @headers, $inject_headers{$subdir} if (defined $inject_headers{$subdir});
- foreach (@headers) {
- my $header = "$_";
+ foreach my $header (@headers) {
my $shadow = ($header =~ s/^\*//);
- $header = 0 if("$header" =~ /^ui_.*.h/);
+ $header = 0 if($header =~ /^ui_.*.h/);
foreach (@ignore_headers) {
- $header = 0 if("$header" eq "$_");
+ $header = 0 if($header eq $_);
}
if($header) {
my $header_copies = 0;
@@ -820,7 +814,7 @@ foreach (@modules_to_sync) {
$public_header = 0;
} else {
foreach (@ignore_for_master_contents) {
- $public_header = 0 if("$header" eq "$_");
+ $public_header = 0 if($header eq $_);
}
}
@@ -833,13 +827,14 @@ foreach (@modules_to_sync) {
print "SYMBOL: $_\n";
}
} else {
+ my $ts = (stat($iheader))[9];
#find out all the places it goes..
my @headers;
if ($public_header) {
@headers = ( "$out_basedir/include/$lib/$header" );
# write forwarding headers to include/Qt
- if ("$lib" ne "phonon" && "$subdir" =~ /^$basedir\/src/) {
+ if ($lib ne "phonon" && $subdir =~ /^$basedir\/src/) {
my $file_name = "$out_basedir/include/Qt/$header";
my $file_op = '>';
my $header_content = '';
@@ -862,27 +857,27 @@ foreach (@modules_to_sync) {
close HEADERFILE;
}
- foreach(@classes) {
+ foreach my $full_class (@classes) {
my $header_base = basename($header);
- my $class = $_;
# Strip namespaces:
+ my $class = $full_class;
$class =~ s/^.*:://;
# if ($class =~ m/::/) {
# class =~ s,::,/,g;
# }
- $class_lib_map_contents .= "QT_CLASS_LIB($_, $lib, $header_base)\n";
- $header_copies++ if(syncHeader("$out_basedir/include/$lib/$class", "$out_basedir/include/$lib/$header", 0));
+ $class_lib_map_contents .= "QT_CLASS_LIB($full_class, $lib, $header_base)\n";
+ $header_copies++ if(syncHeader("$out_basedir/include/$lib/$class", "$out_basedir/include/$lib/$header", 0, $ts));
# KDE-Compat headers for Phonon
if ($lib eq "phonon") {
- $header_copies++ if (syncHeader("$out_basedir/include/phonon_compat/Phonon/$class", "$out_basedir/include/$lib/$header", 0));
+ $header_copies++ if (syncHeader("$out_basedir/include/phonon_compat/Phonon/$class", "$out_basedir/include/$lib/$header", 0, $ts));
}
}
} elsif ($create_private_headers) {
@headers = ( "$out_basedir/include/$lib/private/$header" );
}
foreach(@headers) { #sync them
- $header_copies++ if(syncHeader($_, $iheader, $copy_headers));
+ $header_copies++ if(syncHeader($_, $iheader, $copy_headers, $ts));
}
if($public_header) {
@@ -892,8 +887,7 @@ foreach (@modules_to_sync) {
#deal with the install directives
if($public_header) {
my $pri_install_iheader = fixPaths($iheader, $current_dir);
- foreach(@classes) {
- my $class = $_;
+ foreach my $class (@classes) {
# Strip namespaces:
$class =~ s/^.*:://;
# if ($class =~ m/::/) {
@@ -928,8 +922,8 @@ foreach (@modules_to_sync) {
foreach my $master_include (@master_includes) {
#generate the "master" include file
my @tmp = split(/;/,$modules{$lib});
- $pri_install_files .= fixPaths($master_include, "$tmp[0]") . " "; #get the master file installed too
- if($master_include && -e "$master_include") {
+ $pri_install_files .= fixPaths($master_include, $tmp[0]) . " "; #get the master file installed too
+ if($master_include && -e $master_include) {
open MASTERINCLUDE, "<$master_include";
local $/;
binmode MASTERINCLUDE;
@@ -943,7 +937,7 @@ foreach (@modules_to_sync) {
mkpath $master_dir, !$quiet;
print "header (master) created for $lib\n" unless $quiet;
open MASTERINCLUDE, ">$master_include";
- print MASTERINCLUDE "$master_contents";
+ print MASTERINCLUDE $master_contents;
close MASTERINCLUDE;
}
}
@@ -954,7 +948,7 @@ foreach (@modules_to_sync) {
$headers_pri_contents .= "SYNCQT.HEADER_CLASSES = $pri_install_classes\n";
$headers_pri_contents .= "SYNCQT.PRIVATE_HEADER_FILES = $pri_install_pfiles\n";
my $headers_pri_file = "$out_basedir/include/$lib/headers.pri";
- if(-e "$headers_pri_file") {
+ if(-e $headers_pri_file) {
open HEADERS_PRI_FILE, "<$headers_pri_file";
local $/;
binmode HEADERS_PRI_FILE;
@@ -968,14 +962,14 @@ foreach (@modules_to_sync) {
mkpath $headers_pri_dir, !$quiet;
print "headers.pri file created for $lib\n" unless $quiet;
open HEADERS_PRI_FILE, ">$headers_pri_file";
- print HEADERS_PRI_FILE "$headers_pri_contents";
+ print HEADERS_PRI_FILE $headers_pri_contents;
close HEADERS_PRI_FILE;
}
}
}
unless($showonly || !$create_uic_class_map) {
my $class_lib_map = "$out_basedir/src/tools/uic/qclass_lib_map.h";
- if(-e "$class_lib_map") {
+ if(-e $class_lib_map) {
open CLASS_LIB_MAP, "<$class_lib_map";
local $/;
binmode CLASS_LIB_MAP;
@@ -988,21 +982,17 @@ unless($showonly || !$create_uic_class_map) {
my $class_lib_map_dir = dirname($class_lib_map);
mkpath $class_lib_map_dir, !$quiet;
open CLASS_LIB_MAP, ">$class_lib_map";
- print CLASS_LIB_MAP "$class_lib_map_contents";
+ print CLASS_LIB_MAP $class_lib_map_contents;
close CLASS_LIB_MAP;
}
}
if($check_includes) {
- for (keys(%modules)) {
- #iteration info
- my $lib = $_;
- {
+ for my $lib (keys(%modules)) {
#calc subdirs
my @subdirs = ($modules{$lib});
- foreach (@subdirs) {
- my $subdir = "$_";
- opendir DIR, "$subdir" or die "Huh, directory ".$subdir." cannot be opened.";
+ foreach my $subdir (@subdirs) {
+ opendir DIR, $subdir or die "Huh, directory ".$subdir." cannot be opened.";
while(my $t = readdir(DIR)) {
push @subdirs, "$subdir/$t" if(-d "$subdir/$t" && !($t eq ".") &&
!($t eq "..") && !($t eq ".obj") &&
@@ -1012,22 +1002,20 @@ if($check_includes) {
closedir DIR;
}
- foreach (@subdirs) {
- my $subdir = "$_";
+ foreach my $subdir (@subdirs) {
my $header_skip_qt_module_test = 0;
foreach(@ignore_for_qt_module_check) {
foreach (split(/;/, $_)) {
- $header_skip_qt_module_test = 1 if ("$subdir" =~ /^$_/);
+ $header_skip_qt_module_test = 1 if ($subdir =~ /^$_/);
}
}
- my @headers = findFiles("$subdir", "^[-a-z0-9_]*\\.h\$" , 0);
- foreach (@headers) {
- my $header = "$_";
+ my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0);
+ foreach my $header (@headers) {
my $header_skip_qt_begin_header_test = 0;
my $header_skip_qt_begin_namespace_test = 0;
- $header = 0 if("$header" =~ /^ui_.*.h/);
+ $header = 0 if($header =~ /^ui_.*.h/);
foreach (@ignore_headers) {
- $header = 0 if("$header" eq "$_");
+ $header = 0 if($header eq $_);
}
if($header) {
my $public_header = $header;
@@ -1035,17 +1023,17 @@ if($check_includes) {
$public_header = 0;
} else {
foreach (@ignore_for_master_contents) {
- $public_header = 0 if("$header" eq "$_");
+ $public_header = 0 if($header eq $_);
}
if($public_header) {
foreach (@ignore_for_include_check) {
- $public_header = 0 if("$header" eq "$_");
+ $public_header = 0 if($header eq $_);
}
foreach(@ignore_for_qt_begin_header_check) {
- $header_skip_qt_begin_header_test = 1 if ("$header" eq "$_");
+ $header_skip_qt_begin_header_test = 1 if ($header eq $_);
}
foreach(@ignore_for_qt_begin_namespace_check) {
- $header_skip_qt_begin_namespace_test = 1 if ("$header" eq "$_");
+ $header_skip_qt_begin_namespace_test = 1 if ($header eq $_);
}
}
}
@@ -1074,8 +1062,7 @@ if($check_includes) {
$include = 0;
}
if($include) {
- for (keys(%modules)) {
- my $trylib = $_;
+ for my $trylib (keys(%modules)) {
if(-e "$out_basedir/include/$trylib/$include") {
print "WARNING: $iheader includes $include when it should include $trylib/$include\n";
}
@@ -1124,7 +1111,6 @@ if($check_includes) {
}
}
}
- }
}
}