* wconfig.pl: New file
authorKen Raeburn <raeburn@mit.edu>
Mon, 27 Mar 2006 22:40:37 +0000 (22:40 +0000)
committerKen Raeburn <raeburn@mit.edu>
Mon, 27 Mar 2006 22:40:37 +0000 (22:40 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17785 dc483132-0cff-0310-8789-dd5450dbe970

src/config/ChangeLog
src/config/wconfig.pl [new file with mode: 0755]

index b14a4ce067025b29eecf6534a646a65bd7f1422b..fbbb4d867084bd423c11363798c3e15c5d49f4af 100644 (file)
@@ -1,3 +1,7 @@
+2006-03-27  Ken Raeburn  <raeburn@mit.edu>
+
+       * wconfig.pl: New file.
+
 2006-03-15  Ken Raeburn  <raeburn@mit.edu>
 
        * pre.in (MAYBE_VALGRIND): New variable.
diff --git a/src/config/wconfig.pl b/src/config/wconfig.pl
new file mode 100755 (executable)
index 0000000..8a9d19f
--- /dev/null
@@ -0,0 +1,77 @@
+#! perl
+$win_flag = "WIN32##";
+@wflags = ();
+$mit_specific = 0;
+@ignore_list = ( "DOS#?#?" );
+
+foreach $arg (@ARGV) {
+    if ($arg =~ /^-/) { push @wflags, $arg; }
+    if ("--mit" eq $arg) {
+       $mit_specific = 1;
+    } elsif ("--win16" eq $arg) {
+       $win_flag = "WIN16##";
+    } elsif ("--win32" eq $arg) {
+       $win_flag = "WIN32##";
+    } elsif ($arg =~ /^--enable-/) {
+       my($a) = $arg . "##";
+       $a =~ s/^--enable-//;
+       $a =~ tr/a-z/A-Z/;
+       push @ignore_list, $a;
+    } elsif ($arg =~ /^--ignore=/) {
+       my($a) = $arg;
+       $a =~ s/--ignore=//;
+       push @ignore_list, $a;
+    } elsif ($arg =~ /^-/) {
+       print STDERR "Invalid option '$arg'\n";
+       exit 1;
+    } else {
+       if (! defined $dir) {
+           $dir = $arg;
+       }
+    }
+}
+push @ignore_list, $win_flag;
+push @ignore_list, "MIT##" if $mit_specific;
+
+if ($#wflags >= 0) { printf "WCONFIG_FLAGS=%s\n", join (" ", @wflags); }
+
+# This has a couple variations from the old wconfig.c.
+#
+# The old script wouldn't treat the input strings as regular expressions.
+# This one does, and actually it builds one regexp, so the strict order of
+# checks done by wconfig.c no longer applies.
+#
+# And the old script would change "##DOS#" to "#", whereas this
+# version (with the regexp given above) will accept and discard 0, 1
+# or 2 "#" marks.
+$sub = "sub do_subst { my (\$a) = shift; \$a =~ s/^##(" . join("|", @ignore_list) . ")//; return \$a; }";
+#print STDERR $sub, "\n";
+eval $sub;
+
+sub process {
+    my $fh = shift;
+    while (<$fh>) {
+       if (/^@/) {
+           # This branch isn't actually used as far as I can tell.
+           print "\n";
+           next;
+       }
+       # Do we want to do any autoconf-style @FOO@ substitutions?
+       # s/@MAINT@/#/g;
+       # Are there any options we might want to set at configure time?
+       print &do_subst($_);
+    }
+}
+
+if (defined $dir) {
+    open AUX, "<$dir/win-pre.in" || die "Couldn't open win-pre.in: $!\n";
+    &process(\*AUX);
+    close AUX;
+}
+&process(\*STDIN);
+if (defined $dir) {
+    open AUX, "<$dir/win-post.in" || die "Couldn't open win-post.in: $!\n";
+    &process(\*AUX);
+    close AUX;
+}
+exit 0;