use strict; use ExtUtils::MakeMaker; my $is_mswin = $^O eq 'MSWin32'; my $is_netware = $^O eq 'NetWare'; my $is_vms = $^O eq 'VMS'; WriteMakefile( NAME => 'DynaLoader', LINKTYPE => 'static', DEFINE => '-DLIBC="$(LIBC)"', SKIP => [qw(dynamic dynamic_lib dynamic_bs)], XSPROTOARG => '-noprototypes', # XXX remove later? VERSION_FROM => 'DynaLoader_pm.PL', PL_FILES => {'DynaLoader_pm.PL'=>'DynaLoader.pm'}, PM => {'DynaLoader.pm' => '$(INST_LIBDIR)/DynaLoader.pm'}, depend => {'DynaLoader$(OBJ_EXT)' => 'dlutils.c'}, clean => {FILES => 'DynaLoader.c DynaLoader.xs DynaLoader.pm'}, ); sub MY::cflags { package MY; my $flags = shift->SUPER::cflags(@_); if ($flags =~ /-DUSEIMPORTLIB/m) { $flags =~ s/-DUSEIMPORTLIB/-UUSEIMPORTLIB/m; } $flags; } sub MY::postamble { my $test_xs; if ($is_mswin || $is_netware || $is_vms) { $test_xs = ''; } else { $test_xs = <<'EOT'; # Perform very simple tests just to check for major gaffs. # We can\'t do much more for platforms we are not executing on. test-xs: for i in dl_*xs; \ do $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSUBPPARGS) $$i > /dev/null; \ done EOT } return ' DynaLoader.xs: $(DLSRC) $(RM_F) $@ $(CP) $? $@ ' . $test_xs; } sub MY::static { my $object; if ($is_mswin || $is_netware) { $object = '$(PERL_SRC)\\$(OBJECT)'; } elsif ($is_vms) { $object = '$(PERL_SRC)$(OBJECT)'; } else { $object = '$(PERL_SRC)/$(OBJECT)'; } return " $object : \$(FIRST_MAKEFILE) \$(OBJECT) #\$(RM_RF) $object #\$(CP) \$(OBJECT) $object static :: $object "; }