From 349cfa7acb95abe865209a28e417ec74b56f9bba Mon Sep 17 00:00:00 2001 From: Alberto Gonzalez Iniesta Date: Tue, 21 Feb 2012 15:53:40 +0100 Subject: Imported Upstream version 2.2.1 --- install-win32/ifdef.pl | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 install-win32/ifdef.pl (limited to 'install-win32/ifdef.pl') diff --git a/install-win32/ifdef.pl b/install-win32/ifdef.pl new file mode 100644 index 0000000..d240ebb --- /dev/null +++ b/install-win32/ifdef.pl @@ -0,0 +1,53 @@ +#!/usr/bin/perl + +# Simple ifdef/else/endif processor. + +die "usage: ifdef [-C] [-Dname ...] [control-file ...] " if (@ARGV[0] =~ /^(-h|--help)$/); + +%Parms = (); + +$pre = "!"; +while ($arg=shift(@ARGV)) { + if ($arg =~ /^-/) { + if ($arg =~ /^-D(\w+)$/) { + $Parms{$1} = 1; + } elsif ($arg =~ /-C(.*)$/) { + $pre = $1; + } else { + die "unrecognized option: $arg"; + } + } else { + open(CONTROL, "< $arg") or die "cannot open $arg"; + while () { + if (/^!define\s+(\w+)/) { + $Parms{$1} = 1; + } + } + } +} + +sub ifdef { + my ($var, $enabled) = @_; + my $def = 0; + $def = 1 if (defined $Parms{$var}) || ($var eq "true"); + $def = 0 if $var eq "false"; + while () { + if (/^\s*\Q$pre\Eifdef\s+(\w+)\s*$/) { + return 1 if ifdef ($1, $def & $enabled); + } elsif (/^\s*\Q$pre\Eelseif\s+(\w+)\s*$/) { + $def = $def ^ 1; + return ifdef ($1, $def & $enabled); + } elsif (/^\s*\Q$pre\Eelse\s*$/) { + $def = $def ^ 1; + } elsif (/^\s*\Q$pre\Eendif\s*$/) { + return 0; + } elsif (/^\s*\Q$pre\E/) { + die "unrecognized command: $_"; + } else { + print if $def && $enabled; + } + } + return 1; +} + +ifdef("true", 1); -- cgit v1.2.3