summaryrefslogtreecommitdiffstats
path: root/bin/syncqt.pl
diff options
context:
space:
mode:
Diffstat (limited to 'bin/syncqt.pl')
-rwxr-xr-xbin/syncqt.pl45
1 files changed, 30 insertions, 15 deletions
diff --git a/bin/syncqt.pl b/bin/syncqt.pl
index 02e55d847e..02194aa0b7 100755
--- a/bin/syncqt.pl
+++ b/bin/syncqt.pl
@@ -76,8 +76,8 @@ sub normalizePath {
# set output basedir to be where ever syncqt is run from
our $out_basedir = getcwd();
normalizePath(\$out_basedir);
+our $build_basedir = $out_basedir;
our $basedir;
-our $quoted_basedir;
# Make sure we use Windows line endings for chomp and friends on Windows.
$INPUT_RECORD_SEPARATOR = "\r\n" if ($^O eq "msys");
@@ -129,6 +129,7 @@ sub showUsage
print " -showonly Show action but not perform (default: " . ($showonly ? "yes" : "no") . ")\n";
print " -minimal Do not create CamelCase headers (default: " . ($minimal ? "yes" : "no") . ")\n";
print " -outdir <PATH> Specify output directory for sync (default: $out_basedir)\n";
+ print " -builddir <PATH> Specify build directory for sync (default: $build_basedir)\n";
print " -version <VERSION> Specify the module's version (default: detect from qglobal.h)\n";
print " -quiet Only report problems, not activity (same as -verbose 0)\n";
print " -v, -verbose <level> Sets the verbosity level (max. 4) (default: $verbose_level)\n";
@@ -648,17 +649,16 @@ sub listSubdirs {
######################################################################
# Syntax: loadSyncProfile()
#
-# Purpose: Locates the sync.profile.
-# Returns: Hashmap of module name -> directory.
+# Purpose: Loads the sync.profile.
######################################################################
sub loadSyncProfile {
- my ($srcbase, $outbase) = @_;
if ($verbose_level) {
- print("<srcbase> = $$srcbase \n");
- print("<outbase> = $$outbase \n");
+ print("<srcbase> = $basedir \n");
+ print("<bldbase> = $build_basedir \n");
+ print("<outbase> = $out_basedir \n");
}
- my $syncprofile = "$$srcbase/sync.profile";
+ my $syncprofile = "$basedir/sync.profile";
my $result;
unless ($result = do "$syncprofile") {
die "syncqt couldn't parse $syncprofile: $@" if $@;
@@ -670,13 +670,12 @@ sub loadSyncProfile {
$reverse_classnames{$cn} = $fn;
}
}
-
- return $result;
}
sub basePrettify {
my ($arg) = @_;
$$arg =~ s,^\Q$basedir\E,<srcbase>,;
+ $$arg =~ s,^\Q$build_basedir\E,<bldbase>,;
$$arg =~ s,^\Q$out_basedir\E,<outbase>,;
}
@@ -686,6 +685,11 @@ sub cleanPath {
return $arg;
}
+######################################################################
+# Syntax: locateSyncProfile()
+#
+# Purpose: Locates the sync.profile.
+######################################################################
sub locateSyncProfile
{
my ($directory) = @_;
@@ -724,11 +728,10 @@ sub globosort($$) {
}
# check if this is an in-source build, and if so use that as the basedir too
-$basedir = locateSyncProfile($out_basedir);
+$basedir = locateSyncProfile($build_basedir);
if ($basedir) {
$basedir = dirname($basedir) ;
normalizePath(\$basedir);
- $quoted_basedir = "\Q$basedir";
}
# --------------------------------------------------------------------
@@ -750,6 +753,9 @@ while ( @ARGV ) {
} elsif($arg eq "-o" || $arg eq "-outdir") {
$var = "output";
$val = shift @ARGV;
+ } elsif($arg eq "-builddir") {
+ $var = "build";
+ $val = shift @ARGV;
} elsif($arg eq "-showonly" || $arg eq "-remove-stale" || $arg eq "-windows" ||
$arg eq "-relative" || $arg eq "-check-includes") {
$var = substr($arg, 1);
@@ -796,7 +802,6 @@ while ( @ARGV ) {
die "Could not find a sync.profile for '$arg'\n" if (!$basedir);
$basedir = dirname($basedir);
normalizePath(\$basedir);
- $quoted_basedir = "\Q$basedir";
$var = "ignore";
}
@@ -877,6 +882,16 @@ while ( @ARGV ) {
$out_basedir = $outdir;
}
normalizePath(\$out_basedir);
+ } elsif ($var eq "build") {
+ my $outdir = $val;
+ if (checkRelative($outdir)) {
+ $build_basedir = getcwd();
+ chomp $build_basedir;
+ $build_basedir .= "/" . $outdir;
+ } else {
+ $build_basedir = $outdir;
+ }
+ normalizePath(\$build_basedir);
}
}
@@ -892,7 +907,7 @@ our @ignore_for_qt_module_check = ();
our %inject_headers = ();
# load the module's sync.profile here, before we can
-loadSyncProfile(\$basedir, \$out_basedir);
+loadSyncProfile();
@modules_to_sync = keys(%modules) if($#modules_to_sync == -1);
@@ -941,7 +956,7 @@ foreach my $lib (@modules_to_sync) {
for my $p (keys %inject_headers) {
next unless ($p =~ /^\Q$dir\E(\/|$)/);
my $sp = $p;
- $sp =~ s,^\Q$basedir\E/,$out_basedir/,;
+ $sp =~ s,^\Q$basedir\E/,$build_basedir/,;
for my $n (@{$inject_headers{$p}}) {
$injections{$sp."/".$n} = 1;
}
@@ -1039,7 +1054,7 @@ foreach my $lib (@modules_to_sync) {
my $requires;
my $iheader_src = $subdir . "/" . $header;
my $iheader = $iheader_src;
- $iheader =~ s/^\Q$basedir\E/$out_basedir/ if ($shadow);
+ $iheader =~ s/^\Q$basedir\E/$build_basedir/ if ($shadow);
if ($check_includes) {
# We need both $public_header and $private_header because QPA headers count as neither
my $private_header = !$public_header && !$qpa_header