1use strict; 2use warnings; 3 4use ExtUtils::MakeMaker; 5 6my $is_mswin = $^O eq 'MSWin32'; 7my $is_vms = $^O eq 'VMS'; 8 9WriteMakefile( 10 NAME => 'DynaLoader', 11 LINKTYPE => 'static', 12 DEFINE => '-DLIBC="$(LIBC)"', 13 SKIP => [qw(dynamic dynamic_lib dynamic_bs)], 14 XSPROTOARG => '-noprototypes', # XXX remove later? 15 VERSION_FROM => 'DynaLoader_pm.PL', 16 PL_FILES => {'DynaLoader_pm.PL'=>'DynaLoader.pm'}, 17 PM => {'DynaLoader.pm' => '$(INST_LIBDIR)/DynaLoader.pm'}, 18 depend => { 'DynaLoader$(OBJ_EXT)' => 'dlutils.c', 19 'DynaLoader.c' => 'DynaLoader.xs'}, 20 clean => {FILES => 'DynaLoader.c DynaLoader.xs DynaLoader.pm'}, 21); 22 23sub MY::cflags { 24 package MY; 25 my $flags = shift->SUPER::cflags(@_); 26 if ($flags =~ /-DUSEIMPORTLIB/m) { 27 $flags =~ s/-DUSEIMPORTLIB/-UUSEIMPORTLIB/m; 28 } 29 $flags; 30} 31 32sub MY::postamble { 33 my $test_xs; 34 35 if ($is_mswin || $is_vms) { 36 $test_xs = ''; 37 } else { 38 $test_xs = <<'EOT'; 39 40# Perform very simple tests just to check for major gaffs. 41# We can\'t do much more for platforms we are not executing on. 42test-xs: 43 for i in dl_*xs; \ 44 do $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSUBPPARGS) $$i > /dev/null; \ 45 done 46EOT 47 } 48 49 return ' 50DynaLoader.xs: $(DLSRC) 51 $(RM_F) $@ 52 $(CP) $? $@ 53' . $test_xs; 54} 55 56sub MY::static { 57 my $object; 58 if ($is_mswin) { 59 $object = '$(PERL_SRC)\\$(OBJECT)'; 60 } elsif ($is_vms) { 61 $object = '$(PERL_SRC)$(OBJECT)'; 62 } else { 63 $object = '$(PERL_SRC)/$(OBJECT)'; 64 } 65 66 67 return " 68$object : \$(FIRST_MAKEFILE) \$(OBJECT) 69 \$(RM_RF) $object 70 \$(CP) \$(OBJECT) $object 71 72static :: $object 73"; 74} 75