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