use ExtUtils::MakeMaker; use strict; use Getopt::Std; my (%foo, $jsdir, $inc, $libpath); #m - build under mozilla tree #d - specifies js build directory (with include/ and lib/ directories) #c - build under charlie tree getopts('mcd:', \%foo); $jsdir = $foo{d}; $foo{'m'} = 1 unless $foo{c} || $foo{d}; #mozilla tree is the default if ($foo{c}) { $inc = "-I$ENV{CHARLIE_HOME}/include"; $libpath = "-L$ENV{CHARLIE_HOME}/lib"; } if ($jsdir) { $inc = "-I$jsdir/include"; $libpath = "-L$jsdir/lib -ljs"; } my $tmpmk = <<'eof'; DEPTH=.. include ../config.mk all: @echo '$(OBJDIR)' eof if ($foo{'m'}) { if ($^O eq "MSWin32") { $inc = "-I.. -I../Debug"; #I'm not sure $libpath = "-L../Debug"; } else { #suppose unix, never Mac, gmake open FOO, ">tempmakefile"; print FOO $tmpmk; close FOO; my $objdir = `gmake -f tempmakefile`; unlink "tempmakefile"; $inc = "-I.. -I../$objdir"; $libpath = "-L../$objdir"; } } my %extras = (); my $define; if ($^O eq "MSWin32") { $define = "-DXP_PC"; $extras{OBJECT} = '$(BASEEXT)$(OBJ_EXT) jsperl.obj'; } else { $define = '-DXP_UNIX'; } WriteMakefile(NAME => 'JS', DEFINE => $define, INC => $inc, LIBS => "$libpath -ljs", VERSION_FROM => 'JS.pm', %extras,); __END__