#!/usr/local/bin/perl
#
# used to generate the file MINFO for use by util/mk1mf.pl
# It is basically a list of all variables from the passed makefile
#

while ($ARGV[0] =~ /^([^\s=]+)\s*=\s*(.*)$/)
	{
	$sym{$1} = $2;
	shift;
	}

$s="";
while (<>)
	{
	s|\R$||;
	s/#.*//;
	if (/^([^\s=]+)\s*=\s*(.*)$/)
		{
		$o="";
		($s,$b)=($1,$2);
		for (;;)
			{
			if ($b =~ /\\$/)
				{
				$b=$`; # Keep what is before the backslash
				$o.=$b." ";
				$b = "" unless defined($b = <>);
				$b =~ s{\R$}{};
				}
			else
				{
				$o.=$b." ";
				last;
				}
			}
		$o =~ s/^\s+//;
		$o =~ s/\s+$//;
		$o =~ s/\s+/ /g;

		$o =~ s/\$[({]([^)}]+)[)}]/$sym{$1}/g;
		$sym{$s}=$o if !exists $sym{$s};
		}
	}

($pwd=`pwd`) =~ s{\R$}{};

if ($sym{'TOP'} eq ".")
	{
	$n=0;
	$dir=".";
	}
else	{
	$n=split(/\//,$sym{'TOP'});
	@_=split(/\//,$pwd);
	$z=$#_-$n+1;
	foreach $i ($z .. $#_) { $dir.=$_[$i]."/"; }
	chop($dir);             # Remove the last slash
	}

print "RELATIVE_DIRECTORY=$dir\n";

foreach (sort keys %sym)
	{
	print "$_=$sym{$_}\n";
	}
print "RELATIVE_DIRECTORY=\n";
