#! 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;