Anarres-Mud-Driver-0.26/
Anarres-Mud-Driver-0.26/Efun/
Anarres-Mud-Driver-0.26/Efun/Core/
Anarres-Mud-Driver-0.26/Interpreter/
Anarres-Mud-Driver-0.26/Type/
Anarres-Mud-Driver-0.26/include/
Anarres-Mud-Driver-0.26/lib/
Anarres-Mud-Driver-0.26/lib/Driver/
Anarres-Mud-Driver-0.26/lib/Driver/Compiler/
Anarres-Mud-Driver-0.26/lib/Driver/Program/
require 5.006001;
use ExtUtils::MakeMaker;

my @base = qw(lexer parser utils Compiler);
my @obj = map { "$_\.o" } @base;
my @src = map { "$_\.c" } @base;
my @hdr = qw(compiler.h parser.h);

WriteMakefile(
    NAME			=> 'Anarres::Mud::Driver::Compiler',
    VERSION_FROM	=> 'Compiler.pm', # finds $VERSION
    AUTHOR			=> 'Shevek (cpan@anarres.org)',
	INC				=> '-I../include',
	OBJECT			=> "@obj",
	C				=> \@src,
	H				=> \@hdr,

	# Remove this and let it inherit for production
	# OPTIMIZE		=> '-O2 -g -Wall',

	clean			=> {
				FILES	=> "lex.yy.c " .
							"parser.output parser.tab.[ch] ",
						},
	# Removed lexer.c, parser.[ch] from clean because I should
	# distribute them for people who don't have lex.
);

sub MY::postamble {
	my $self = shift;
	my $old = $self->MM::postamble(@_);
	chomp($old);

	my $lex = $ENV{LEX} || 'flex';
	my $yacc = $ENV{YACC} || 'bison';

	my $new = <<"EON";

LEX = $lex
YACC = $yacc
EON
	$new .= <<'EON';

%.c : %.yy
	$(LEX) $*.yy
	$(PERL) symchange.pl lex.yy.c > $*.c
	$(RM_F) lex.yy.c

%.c %.h : %.y
	$(YACC) -vd $*.y
	$(PERL) symchange.pl $*.tab.c > $*.c
	$(PERL) symchange.pl $*.tab.h > $*.h
	$(RM_F) $*.tab.[ch]

dep : $(C_FILES) $(H_FILES)
	$(RM_F) .depend
	$(CC) -MM $(INC) -I$(PERL_INC) $(CCFLAGS) $(C_FILES) >> .depend

include .depend

config :: $(C_FILES)

EON
	return $old . $new;
}