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