42 "QtScript" => "$basedir/src/script", |
42 "QtScript" => "$basedir/src/script", |
43 "QtScriptTools" => "$basedir/src/scripttools", |
43 "QtScriptTools" => "$basedir/src/scripttools", |
44 "Qt3Support" => "$basedir/src/qt3support", |
44 "Qt3Support" => "$basedir/src/qt3support", |
45 "ActiveQt" => "$basedir/src/activeqt/container;$basedir/src/activeqt/control;$basedir/src/activeqt/shared", |
45 "ActiveQt" => "$basedir/src/activeqt/container;$basedir/src/activeqt/control;$basedir/src/activeqt/shared", |
46 "QtTest" => "$basedir/src/testlib", |
46 "QtTest" => "$basedir/src/testlib", |
47 "QtAssistant" => "$basedir/tools/assistant/compat/lib", |
|
48 "QtHelp" => "$basedir/tools/assistant/lib", |
47 "QtHelp" => "$basedir/tools/assistant/lib", |
49 "QtDesigner" => "$basedir/tools/designer/src/lib", |
48 "QtDesigner" => "$basedir/tools/designer/src/lib", |
50 "QtUiTools" => "$basedir/tools/designer/src/uitools", |
49 "QtUiTools" => "$basedir/tools/designer/src/uitools", |
51 "QtDBus" => "$basedir/src/dbus", |
50 "QtDBus" => "$basedir/src/dbus", |
52 "QtWebKit" => "$basedir/src/3rdparty/webkit/WebCore", |
51 "QtWebKit" => "$basedir/src/3rdparty/webkit/WebCore", |
96 print " -showonly Show action but not perform (default: " . ($showonly ? "yes" : "no") . ")\n"; |
96 print " -showonly Show action but not perform (default: " . ($showonly ? "yes" : "no") . ")\n"; |
97 print " -outdir <PATH> Specify output directory for sync (default: $out_basedir)\n"; |
97 print " -outdir <PATH> Specify output directory for sync (default: $out_basedir)\n"; |
98 print " -outsubdir <DIR> Target subdir under outdir (default: $out_subdir)\n"; |
98 print " -outsubdir <DIR> Target subdir under outdir (default: $out_subdir)\n"; |
99 print " -public Create only public headers (default: " . ($create_private_headers ? "no" : "yes") . ")\n"; |
99 print " -public Create only public headers (default: " . ($create_private_headers ? "no" : "yes") . ")\n"; |
100 print " -oneway Don't sync back from outdir (default: " . ($oneway ? "yes" : "no") . ")\n"; |
100 print " -oneway Don't sync back from outdir (default: " . ($oneway ? "yes" : "no") . ")\n"; |
|
101 print " -quiet Only report problems, not activity (default: " . ($quiet ? "yes" : "no") . ")\n"; |
101 print " -separate-module <NAME>:<PROFILEDIR>:<HEADERDIR> Create headers for <NAME> with original headers in <HEADERDIR> relative to <PROFILEDIR> \n"; |
102 print " -separate-module <NAME>:<PROFILEDIR>:<HEADERDIR> Create headers for <NAME> with original headers in <HEADERDIR> relative to <PROFILEDIR> \n"; |
102 print " -help This help\n"; |
103 print " -help This help\n"; |
103 exit 0; |
104 exit 0; |
104 } |
105 } |
105 |
106 |
328 $header =~ s=\\=/=g; |
329 $header =~ s=\\=/=g; |
329 return copyFile($iheader, $header) if($copy); |
330 return copyFile($iheader, $header) if($copy); |
330 |
331 |
331 unless(-e "$header") { |
332 unless(-e "$header") { |
332 my $header_dir = dirname($header); |
333 my $header_dir = dirname($header); |
333 mkpath $header_dir, 0777; |
334 mkpath $header_dir, !$quiet; |
334 |
335 |
335 #write it |
336 #write it |
336 my $iheader_out = fixPaths($iheader, $header_dir); |
337 my $iheader_out = fixPaths($iheader, $header_dir); |
337 open HEADER, ">$header" || die "Could not open $header for writing!\n"; |
338 open HEADER, ">$header" || die "Could not open $header for writing!\n"; |
338 print HEADER "#include \"$iheader_out\"\n"; |
339 print HEADER "#include \"$iheader_out\"\n"; |
358 $dir =~ s=\\=/=g; |
359 $dir =~ s=\\=/=g; |
359 $dir =~ s/\+/\\+/g; |
360 $dir =~ s/\+/\\+/g; |
360 |
361 |
361 #setup |
362 #setup |
362 my $ret = $file; |
363 my $ret = $file; |
|
364 $ret =~ s,/cygdrive/([a-zA-Z])/,$1:/,g; |
363 my $file_dir = dirname($file); |
365 my $file_dir = dirname($file); |
364 if($file_dir eq ".") { |
366 if($file_dir eq ".") { |
365 $file_dir = getcwd(); |
367 $file_dir = getcwd(); |
366 $file_dir =~ s=\\=/=g; |
368 $file_dir =~ s=\\=/=g; |
367 } |
369 } |
368 $file_dir =~ s,/cygdrive/([a-zA-Z])/,$1:,g; |
370 $file_dir =~ s,/cygdrive/([a-zA-Z])/,$1:/,g; |
369 if($dir eq ".") { |
371 if($dir eq ".") { |
370 $dir = getcwd(); |
372 $dir = getcwd(); |
371 $dir =~ s=\\=/=g; |
373 $dir =~ s=\\=/=g; |
372 } |
374 } |
373 $dir =~ s,/cygdrive/([a-zA-Z])/,$1:/,g; |
375 $dir =~ s,/cygdrive/([a-zA-Z])/,$1:/,g; |
468 } |
470 } |
469 |
471 |
470 if ( $knowdiff || ($filecontents ne $ifilecontents) ) { |
472 if ( $knowdiff || ($filecontents ne $ifilecontents) ) { |
471 if ( $copy > 0 && !$oneway) { |
473 if ( $copy > 0 && !$oneway) { |
472 my $file_dir = dirname($file); |
474 my $file_dir = dirname($file); |
473 mkpath $file_dir, 0777 unless(-e "$file_dir"); |
475 mkpath $file_dir, !$quiet unless(-e "$file_dir"); |
474 print "$file $ifile $copy\n"; |
|
475 open(O, "> " . $file) || die "Could not open $file for writing (no write permission?)"; |
476 open(O, "> " . $file) || die "Could not open $file for writing (no write permission?)"; |
476 local $/; |
477 local $/; |
477 binmode O; |
478 binmode O; |
478 print O $ifilecontents; |
479 print O $ifilecontents; |
479 close O; |
480 close O; |
480 return 1; |
481 return 1; |
481 } elsif ( $copy < 0 ) { |
482 } elsif ( $copy < 0 ) { |
482 my $ifile_dir = dirname($ifile); |
483 my $ifile_dir = dirname($ifile); |
483 mkpath $ifile_dir, 0777 unless(-e "$ifile_dir"); |
484 mkpath $ifile_dir, !$quiet unless(-e "$ifile_dir"); |
484 open(O, "> " . $ifile) || die "Could not open $ifile for writing (no write permission?)"; |
485 open(O, "> " . $ifile) || die "Could not open $ifile for writing (no write permission?)"; |
485 local $/; |
486 local $/; |
486 binmode O; |
487 binmode O; |
487 print O $filecontents; |
488 print O $filecontents; |
488 close O; |
489 close O; |
504 sub symlinkFile |
505 sub symlinkFile |
505 { |
506 { |
506 my ($file,$ifile) = @_; |
507 my ($file,$ifile) = @_; |
507 |
508 |
508 if ($isunix) { |
509 if ($isunix) { |
509 print "symlink created for $file "; |
510 print "symlink created for $file " unless $quiet; |
510 if ( $force_relative && ($ifile =~ /^$basedir/)) { |
511 if ( $force_relative && ($ifile =~ /^$basedir/)) { |
511 my $t = getcwd(); |
512 my $t = getcwd(); |
512 my $c = -1; |
513 my $c = -1; |
513 my $p = "../"; |
514 my $p = "../"; |
514 $t =~ s-^$basedir/--; |
515 $t =~ s-^$basedir/--; |
515 $p .= "../" while( ($c = index( $t, "/", $c + 1)) != -1 ); |
516 $p .= "../" while( ($c = index( $t, "/", $c + 1)) != -1 ); |
516 $file =~ s-^$basedir/-$p-; |
517 $file =~ s-^$basedir/-$p-; |
517 print " ($file)\n"; |
518 print " ($file)\n" unless $quiet; |
518 } |
519 } |
519 print "\n"; |
520 print "\n" unless $quiet; |
520 return symlink($file, $ifile); |
521 return symlink($file, $ifile); |
521 } |
522 } |
522 return copyFile($file, $ifile); |
523 return copyFile($file, $ifile); |
523 } |
524 } |
524 |
525 |
598 $var = "separate-module"; |
599 $var = "separate-module"; |
599 $val = shift @ARGV; |
600 $val = shift @ARGV; |
600 } elsif("$arg" eq "-show") { |
601 } elsif("$arg" eq "-show") { |
601 $var = "showonly"; |
602 $var = "showonly"; |
602 $val = "yes"; |
603 $val = "yes"; |
|
604 } elsif("$arg" eq "-quiet") { |
|
605 $var = "quiet"; |
|
606 $val = "yes"; |
603 } elsif("$arg" eq "-base-dir") { |
607 } elsif("$arg" eq "-base-dir") { |
604 # skip, it's been dealt with at the top of the file |
608 # skip, it's been dealt with at the top of the file |
605 shift @ARGV; |
609 shift @ARGV; |
606 next; |
610 next; |
607 } elsif("$arg" eq '*') { |
|
608 # workaround for windows 9x where "%*" expands to "*" |
|
609 $var = 1; |
|
610 } elsif("$arg" eq "-outsubdir") { |
611 } elsif("$arg" eq "-outsubdir") { |
611 $var = "outsubdir"; |
612 $var = "outsubdir"; |
612 $val = shift @ARGV; |
613 $val = shift @ARGV; |
613 } elsif("$arg" eq "-public") { |
614 } elsif("$arg" eq "-public") { |
614 $var = "public"; |
615 $var = "public"; |
615 $val = "yes"; |
616 $val = "yes"; |
616 } elsif("$arg" eq "-oneway") { |
617 } elsif("$arg" eq "-oneway") { |
617 $var = "oneway"; |
618 $var = "oneway"; |
618 $val = "yes"; |
619 $val = "yes"; |
619 } |
620 } |
620 |
621 |
621 #do something |
622 #do something |
622 if(!$var || "$var" eq "show_help") { |
623 if(!$var || "$var" eq "show_help") { |
623 print "Unknown option: $arg\n\n" if(!$var); |
624 print "Unknown option: $arg\n\n" if(!$var); |
663 } elsif ("$var" eq "oneway") { |
670 } elsif ("$var" eq "oneway") { |
664 $oneway = ("$val" eq "yes" ? 1 : 0); |
671 $oneway = ("$val" eq "yes" ? 1 : 0); |
665 } elsif ("$var" eq "outsubdir") { |
672 } elsif ("$var" eq "outsubdir") { |
666 $out_subdir = $val; |
673 $out_subdir = $val; |
667 } elsif ("$var" eq "module") { |
674 } elsif ("$var" eq "module") { |
668 print "module :$val:\n"; |
675 print "module :$val:\n" unless $quiet; |
669 die "No such module: $val" unless(defined $modules{$val}); |
676 die "No such module: $val" unless(defined $modules{$val}); |
670 push @modules_to_sync, $val; |
677 push @modules_to_sync, $val; |
671 } elsif ("$var" eq "separate-module") { |
678 } elsif ("$var" eq "separate-module") { |
672 my ($module, $prodir, $headerdir) = split(/:/, $val); |
679 my ($module, $prodir, $headerdir) = split(/:/, $val); |
673 $modules{$module} = $prodir; |
680 $modules{$module} = $prodir; |
691 @modules_to_sync = keys(%modules) if($#modules_to_sync == -1); |
698 @modules_to_sync = keys(%modules) if($#modules_to_sync == -1); |
692 |
699 |
693 $isunix = checkUnix; #cache checkUnix |
700 $isunix = checkUnix; #cache checkUnix |
694 |
701 |
695 # create path |
702 # create path |
696 mkpath "$out_basedir/$out_subdir", 0777; |
703 mkpath "$out_basedir/$out_subdir", !$quiet; |
697 |
704 |
698 my @ignore_headers = (); |
705 my @ignore_headers = (); |
699 my $class_lib_map_contents = ""; |
706 my $class_lib_map_contents = ""; |
700 my @ignore_for_master_contents = ( "qt.h", "qpaintdevicedefs.h" ); |
707 my @ignore_for_master_contents = ( "qt.h", "qpaintdevicedefs.h" ); |
701 my @ignore_for_include_check = ( "qatomic.h" ); |
708 my @ignore_for_include_check = ( "qatomic.h" ); |
702 my @ignore_for_qt_begin_header_check = ( "qiconset.h", "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qt_windows.h" ); |
709 my @ignore_for_qt_begin_header_check = ( "qiconset.h", "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qt_windows.h" ); |
703 my @ignore_for_qt_begin_namespace_check = ( "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qatomic_arch.h", "qatomic_windowsce.h", "qt_windows.h", "qatomic_macosx.h" ); |
710 my @ignore_for_qt_begin_namespace_check = ( "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qatomic_arch.h", "qatomic_windowsce.h", "qt_windows.h", "qatomic_macosx.h" ); |
704 my @ignore_for_qt_module_check = ( "$modules{QtCore}/arch", "$modules{QtCore}/global", "$modules{QtSql}/drivers", "$modules{QtTest}", "$modules{QtAssistant}", "$modules{QtDesigner}", "$modules{QtUiTools}", "$modules{QtDBus}", "$modules{phonon}" ); |
711 my @ignore_for_qt_module_check = ( "$modules{QtCore}/arch", "$modules{QtCore}/global", "$modules{QtSql}/drivers", "$modules{QtTest}", "$modules{QtDesigner}", "$modules{QtUiTools}", "$modules{QtDBus}", "$modules{phonon}" ); |
705 |
712 |
706 foreach (@modules_to_sync) { |
713 foreach (@modules_to_sync) { |
707 #iteration info |
714 #iteration info |
708 my $lib = $_; |
715 my $lib = $_; |
709 my $dir = "$modules{$lib}"; |
716 my $dir = "$modules{$lib}"; |
909 my @master_includes; |
916 my @master_includes; |
910 push @master_includes, "$out_basedir/$out_subdir/$lib/$lib"; |
917 push @master_includes, "$out_basedir/$out_subdir/$lib/$lib"; |
911 push @master_includes, "$out_basedir/$out_subdir/phonon_compat/Phonon/Phonon" if ($lib eq "phonon"); |
918 push @master_includes, "$out_basedir/$out_subdir/phonon_compat/Phonon/Phonon" if ($lib eq "phonon"); |
912 foreach my $master_include (@master_includes) { |
919 foreach my $master_include (@master_includes) { |
913 #generate the "master" include file |
920 #generate the "master" include file |
914 $pri_install_files .= fixPaths($master_include, "$modules{$lib}") . " "; #get the master file installed too |
921 my @tmp = split(/;/,$modules{$lib}); |
|
922 $pri_install_files .= fixPaths($master_include, "$tmp[0]") . " "; #get the master file installed too |
915 if($master_include && -e "$master_include") { |
923 if($master_include && -e "$master_include") { |
916 open MASTERINCLUDE, "<$master_include"; |
924 open MASTERINCLUDE, "<$master_include"; |
917 local $/; |
925 local $/; |
918 binmode MASTERINCLUDE; |
926 binmode MASTERINCLUDE; |
919 my $oldmaster = <MASTERINCLUDE>; |
927 my $oldmaster = <MASTERINCLUDE>; |
921 $oldmaster =~ s/\r//g; # remove \r's , so comparison is ok on all platforms |
929 $oldmaster =~ s/\r//g; # remove \r's , so comparison is ok on all platforms |
922 $master_include = 0 if($oldmaster eq $master_contents); |
930 $master_include = 0 if($oldmaster eq $master_contents); |
923 } |
931 } |
924 if($master_include && $master_contents) { |
932 if($master_include && $master_contents) { |
925 my $master_dir = dirname($master_include); |
933 my $master_dir = dirname($master_include); |
926 mkpath $master_dir, 0777; |
934 mkpath $master_dir, !$quiet; |
927 print "header (master) created for $lib\n"; |
935 print "header (master) created for $lib\n" unless $quiet; |
928 open MASTERINCLUDE, ">$master_include"; |
936 open MASTERINCLUDE, ">$master_include"; |
929 print MASTERINCLUDE "$master_contents"; |
937 print MASTERINCLUDE "$master_contents"; |
930 close MASTERINCLUDE; |
938 close MASTERINCLUDE; |
931 } |
939 } |
932 } |
940 } |
946 $old_headers_pri_contents =~ s/\r//g; # remove \r's , so comparison is ok on all platforms |
954 $old_headers_pri_contents =~ s/\r//g; # remove \r's , so comparison is ok on all platforms |
947 $headers_pri_file = 0 if($old_headers_pri_contents eq $headers_pri_contents); |
955 $headers_pri_file = 0 if($old_headers_pri_contents eq $headers_pri_contents); |
948 } |
956 } |
949 if($headers_pri_file && $master_contents) { |
957 if($headers_pri_file && $master_contents) { |
950 my $headers_pri_dir = dirname($headers_pri_file); |
958 my $headers_pri_dir = dirname($headers_pri_file); |
951 mkpath $headers_pri_dir, 0777; |
959 mkpath $headers_pri_dir, !$quiet; |
952 print "headers.pri file created for $lib\n"; |
960 print "headers.pri file created for $lib\n" unless $quiet; |
953 open HEADERS_PRI_FILE, ">$headers_pri_file"; |
961 open HEADERS_PRI_FILE, ">$headers_pri_file"; |
954 print HEADERS_PRI_FILE "$headers_pri_contents"; |
962 print HEADERS_PRI_FILE "$headers_pri_contents"; |
955 close HEADERS_PRI_FILE; |
963 close HEADERS_PRI_FILE; |
956 } |
964 } |
957 } |
965 } |
967 $old_class_lib_map_contents =~ s/\r//g; # remove \r's , so comparison is ok on all platforms |
975 $old_class_lib_map_contents =~ s/\r//g; # remove \r's , so comparison is ok on all platforms |
968 $class_lib_map = 0 if($old_class_lib_map_contents eq $class_lib_map_contents); |
976 $class_lib_map = 0 if($old_class_lib_map_contents eq $class_lib_map_contents); |
969 } |
977 } |
970 if($class_lib_map) { |
978 if($class_lib_map) { |
971 my $class_lib_map_dir = dirname($class_lib_map); |
979 my $class_lib_map_dir = dirname($class_lib_map); |
972 mkpath $class_lib_map_dir, 0777; |
980 mkpath $class_lib_map_dir, !$quiet; |
973 open CLASS_LIB_MAP, ">$class_lib_map"; |
981 open CLASS_LIB_MAP, ">$class_lib_map"; |
974 print CLASS_LIB_MAP "$class_lib_map_contents"; |
982 print CLASS_LIB_MAP "$class_lib_map_contents"; |
975 close CLASS_LIB_MAP; |
983 close CLASS_LIB_MAP; |
976 } |
984 } |
977 } |
985 } |