X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Fbuildext.pl;h=ab4345cb3c32a1e33941afe7522cf0dc4e94dfaf;hb=91af766ac8815630662ce7fde84b165de512e80f;hp=6e40bb9bf79b74abc8e2ff491f697286647c9ba9;hpb=f76dcffd2a85ebbf391d02c50da184b1b8a1232e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/buildext.pl b/win32/buildext.pl index 6e40bb9..ab4345c 100644 --- a/win32/buildext.pl +++ b/win32/buildext.pl @@ -1,6 +1,26 @@ -use File::Find; +=head1 NAME + +buildext.pl - build extensions + +=head1 SYNOPSIS + + buildext.pl make [-make_opts] dep directory [target] + +E.g. + + buildext.pl nmake -nologo perldll.def ..\ext + + buildext.pl nmake -nologo perldll.def ..\ext clean + + buildext.pl dmake perldll.def ..\ext + + buildext.pl dmake perldll.def ..\ext clean + +=cut + use File::Basename; use Cwd; +use FindExt; my $here = getcwd(); my $perl = $^X; $here =~ s,/,\\,g; @@ -14,13 +34,13 @@ my $dep = shift; my $dmod = -M $dep; my $dir = shift; chdir($dir) || die "Cannot cd to $dir\n"; +my $targ = shift; (my $ext = getcwd()) =~ s,/,\\,g; -my $no = join('|',qw(DynaLoader GDBM_File ODBM_File NDBM_File DB_File Syslog Sysv)); -$no = qr/^(?:$no)$/i; -my %ext; -find(\&find_xs,'.'); +FindExt::scan_ext($ext); -foreach my $dir (sort keys %ext) +my @ext = FindExt::extensions(); + +foreach my $dir (sort @ext) { if (chdir("$ext\\$dir")) { @@ -28,7 +48,8 @@ foreach my $dir (sort keys %ext) if (!(-f 'Makefile') || $mmod > $dmod) { print "\nRunning Makefile.PL in $dir\n"; - my $code = system($perl,"-I$here\\..\lib",'Makefile.PL','INSTALLDIRS=perl'); + print "$perl \"-I$here\\..\\lib\" Makefile.PL INSTALLDIRS=perl\n"; + my $code = system($perl,"-I$here\\..\\lib",'Makefile.PL','INSTALLDIRS=perl'); warn "$code from $dir's Makefile.PL" if $code; $mmod = -M 'Makefile'; if ($mmod > $dmod) @@ -36,8 +57,16 @@ foreach my $dir (sort keys %ext) warn "Makefile $mmod > $dmod ($dep)\n"; } } - print "\nMaking $dir\n"; - system($make); + if ($targ) + { + print "Making $targ in $dir\n$make $targ\n"; + system("$make $targ"); + } + else + { + print "Making $dir\n$make\n"; + system($make); + } chdir($here) || die "Cannot cd to $here:$!"; } else @@ -46,19 +75,3 @@ foreach my $dir (sort keys %ext) } } -sub find_xs -{ - if (/^(.*)\.pm$/i || /^(.*)_pm.PL$/i) - { - my $name = $1; - return if $name =~ $no; - my $dir = $File::Find::dir; - $dir =~ s,./,,; - return if exists $ext{$dir}; - return unless -f "$ext/$dir/Makefile.PL"; - if ($dir =~ /$name$/i) - { - $ext{$dir} = $name; - } - } -}