pgbison.pl
application/x-perl
# -*-perl-*- hey - emacs - this is a perl file
# src/tools/msvc/pgbison.pl
use strict;
use File::Basename;
# assume we are in the postgres source root
require 'src/tools/msvc/buildenv.pl' if -e 'src/tools/msvc/buildenv.pl';
my ($bisonver) = `bison -V`; # grab first line
$bisonver=(split(/\s+/,$bisonver))[3]; # grab version number
unless ($bisonver eq '1.875' || $bisonver ge '2.2')
{
print "WARNING! Bison install not found, or unsupported Bison version.\n";
print "echo Attempting to build without.\n";
exit 0;
}
my $input = shift;
if ($input !~ /\.y$/)
{
print "Input must be a .y file\n";
exit 1;
}
elsif (! -e $input)
{
print "Input file $input not found\n";
exit 1;
}
(my $output = $input) =! s/\.y$/.c/;
my $makefile = dirname($input) . "/Makefile";
my ($mf, $make);
open($mf,$makefile);
local $/ = undef;
$make=<$mf>;
close($mf);
my $headerflag = ($make =~ /\$\(BISON\)\s+-d/ ? '-d' : '');
system("bison $headerflag $input -o $output");
exit $? >> 8;