3 buildext.pl - build extensions
7 buildext.pl make [-make_opts] dep directory [target]
11 buildext.pl nmake -nologo perldll.def ..\ext
13 buildext.pl nmake -nologo perldll.def ..\ext clean
15 buildext.pl dmake perldll.def ..\ext
17 buildext.pl dmake perldll.def ..\ext clean
27 if ($perl =~ m#^\.\.#)
29 $perl = "$here\\$perl";
31 (my $topdir = $perl) =~ s/\\[^\\]+$//;
32 # miniperl needs to find perlglob and pl2bat
33 $ENV{PATH} = "$topdir;$topdir\\win32\\bin;$ENV{PATH}";
34 #print "PATH=$ENV{PATH}\n";
35 my $pl2bat = "$topdir\\win32\\bin\\pl2bat";
36 unless (-f "$pl2bat.bat") {
37 my @args = ($perl, ("$pl2bat.pl") x 2);
42 $make .= " ".shift while $ARGV[0]=~/^-/;
46 chdir($dir) || die "Cannot cd to $dir\n";
48 (my $ext = getcwd()) =~ s,/,\\,g;
49 FindExt::scan_ext($ext);
51 my @ext = FindExt::extensions();
53 foreach my $dir (sort @ext)
55 if (chdir("$ext\\$dir"))
57 my $mmod = -M 'Makefile';
58 if (!(-f 'Makefile') || $mmod > $dmod)
60 print "\nRunning Makefile.PL in $dir\n";
61 my @perl = ($perl, "-I$here\\..\\lib", 'Makefile.PL',
62 'INSTALLDIRS=perl', 'PERL_CORE=1');
63 print join(' ', @perl), "\n";
64 my $code = system(@perl);
65 warn "$code from $dir's Makefile.PL" if $code;
66 $mmod = -M 'Makefile';
69 warn "Makefile $mmod > $dmod ($dep)\n";
74 print "Making $targ in $dir\n$make $targ\n";
75 system("$make $targ");
79 print "Making $dir\n$make\n";
82 chdir($here) || die "Cannot cd to $here:$!";
86 warn "Cannot cd to $ext\\$dir:$!";