diff options
author | Olivier Goffart <olivier.goffart@nokia.com> | 2010-09-10 20:04:39 +0200 |
---|---|---|
committer | Olivier Goffart <olivier.goffart@nokia.com> | 2010-09-10 20:04:39 +0200 |
commit | b3981fd1f7b82742857c613af6dfbe41b5493577 (patch) | |
tree | 957b84d8f1792f9e5a43c879274469c4f07168ea /bin/syncqt | |
parent | e0ef11578048620b3f107b7a357fed3aade0d21e (diff) | |
parent | 72cc21e597f2d77ea1be3c1a3f7df36d8909d2fc (diff) | |
download | qt4-tools-b3981fd1f7b82742857c613af6dfbe41b5493577.tar.gz |
Merge remote branch 'origin/4.7' into qt-master-from-4.7
Conflicts:
bin/syncqt
demos/declarative/snake/content/snake.js
demos/declarative/snake/snake.qml
doc/src/development/qmake-manual.qdoc
src/corelib/plugin/plugin.pri
src/gui/kernel/qapplication_win.cpp
src/gui/kernel/qdesktopwidget_win.cpp
src/gui/painting/qdrawhelper.cpp
tests/auto/qdir/tst_qdir.cpp
tools/qdoc3/test/assistant.qdocconf
tools/qdoc3/test/designer.qdocconf
tools/qdoc3/test/linguist.qdocconf
Diffstat (limited to 'bin/syncqt')
-rwxr-xr-x | bin/syncqt | 234 |
1 files changed, 110 insertions, 124 deletions
diff --git a/bin/syncqt b/bin/syncqt index eaaf26745b..a2eece07ff 100755 --- a/bin/syncqt +++ b/bin/syncqt @@ -214,7 +214,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) { @@ -298,8 +298,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 @@ -311,21 +310,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; @@ -334,6 +334,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; @@ -367,7 +368,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; @@ -429,7 +430,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; } ###################################################################### @@ -466,21 +467,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; } } @@ -566,102 +569,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(); @@ -695,12 +698,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 = ""; @@ -714,24 +716,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"); } } } @@ -742,34 +743,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); } } } @@ -781,15 +779,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") && @@ -800,16 +796,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; @@ -819,7 +813,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 $_); } } @@ -832,13 +826,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" =~ /^$quoted_basedir\/src/) { + if ($lib ne "phonon" && $subdir =~ /^$quoted_basedir\/src/) { my $file_name = "$out_basedir/include/Qt/$header"; my $file_op = '>'; my $header_content = ''; @@ -851,7 +846,7 @@ foreach (@modules_to_sync) { " #if defined(__GNUC__)\n" . " #warning \"$warning_msg\"\n" . " #elif defined(_MSC_VER)\n" . - " #pragma message \"WARNING: $warning_msg\"\n" . + " #pragma message(\"WARNING: $warning_msg\")\n" . " #endif\n". "#endif\n\n"; } @@ -861,27 +856,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) { @@ -891,8 +886,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/::/) { @@ -927,8 +921,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; @@ -942,7 +936,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; } } @@ -953,7 +947,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; @@ -967,14 +961,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; @@ -987,21 +981,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") && @@ -1011,22 +1001,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; @@ -1034,17 +1022,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 $_); } } } @@ -1073,8 +1061,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"; } @@ -1123,7 +1110,6 @@ if($check_includes) { } } } - } } } |