summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/fixwin32mak.pl53
1 files changed, 53 insertions, 0 deletions
diff --git a/build/fixwin32mak.pl b/build/fixwin32mak.pl
new file mode 100644
index 000000000..d8131fb44
--- /dev/null
+++ b/build/fixwin32mak.pl
@@ -0,0 +1,53 @@
+#
+# fixwin32mak.pl ::: Apache/Win32 maintanace program
+#
+# This program, launched from the build/ directory, replaces all nasty absoulute paths
+# in the win32 .mak files with the appropriate relative root.
+#
+# Run this program prior to committing or packaging any newly exported make files.
+
+use Cwd;
+use IO::File;
+use File::Find;
+
+chdir '..';
+$root = cwd;
+# ignore our own direcory (allowing us to move into any parallel tree)
+$root =~ s|^.:(.*)/.*?$|cd "$1|;
+$root =~ s|/|\\\\|g;
+print "Testing " . $root . "\n";
+find(\&fixcwd, '.');
+
+sub fixcwd {
+ if (m|.mak$|) {
+# note repl is broken... isn't freindly to directories with periods.
+ $repl = $File::Find::dir;
+# replace ./ with the parent (moving into any parallel tree)
+ $repl =~ s|^\./|../|;
+# replace each directory in this path with .. to get back to our root
+ $repl =~ s|[^/]+|..|g;
+ $repl =~ s|/|\\|;
+ $oname = $_;
+ $tname = '.#' . $_;
+ $verchg = 0;
+print "Processing " . $_ . "\n";
+ $srcfl = new IO::File $_, "r" || die;
+ $dstfl = new IO::File $tname, "w" || die;
+ while ($src = <$srcfl>) {
+ if ($src =~ s|^(\s*)$root|$1cd "$repl|) {
+ $verchg = -1;
+ }
+ print $dstfl $src;
+ }
+ undef $srcfl;
+ undef $dstfl;
+ if ($verchg) {
+ unlink $oname || die;
+ rename $tname, $oname || die;
+ print "Corrected absolute paths within " . $oname . " in " . $File::Find::dir . "\n";
+ }
+ else {
+ unlink $tname;
+ }
+ }
+}