This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PERL_SRC already has brackets on VMS.
[perl5.git] / ext / DynaLoader / Makefile.PL
1 use strict;
2 use ExtUtils::MakeMaker;
3
4 my $is_mswin    = $^O eq 'MSWin32';
5 my $is_netware  = $^O eq 'NetWare';
6 my $is_vms      = $^O eq 'VMS';
7
8 WriteMakefile(
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                     'XSLoader_pm.PL'=>'XSLoader.pm'},
17     PM          => {'DynaLoader.pm' => '$(INST_LIBDIR)/DynaLoader.pm',
18                     'XSLoader.pm' => '$(INST_LIBDIR)/XSLoader.pm'},
19     depend      => {'DynaLoader$(OBJ_EXT)' => 'dlutils.c'},
20     clean       => {FILES => 'DynaLoader.c DynaLoader.xs DynaLoader.pm ' .
21                              'XSLoader.pm'},
22 );
23
24 sub MY::postamble {
25     my $test_xs;
26
27     if ($is_mswin || $is_netware || $is_vms) {
28         $test_xs = '';
29     } else {
30         $test_xs = <<'EOT';
31
32 # Perform very simple tests just to check for major gaffs.
33 # We can\'t do much more for platforms we are not executing on.
34 test-xs:
35         for i in dl_*xs; \
36             do $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSUBPPARGS) $$i > /dev/null; \
37         done
38 EOT
39     }
40
41     return '
42 DynaLoader.xs: $(DLSRC)
43         $(RM_F) $@
44         $(CP) $? $@
45 ' . $test_xs;
46 }
47
48 sub MY::static {
49     my $object;
50     if ($is_mswin || $is_netware) {
51         $object = '$(PERL_SRC)\\$(OBJECT)';
52     } elsif ($is_vms) {
53         $object = '$(PERL_SRC)$(OBJECT)';
54     } else {
55         $object = '$(PERL_SRC)/$(OBJECT)';
56     }
57
58
59     return "
60 $object : \$(FIRST_MAKEFILE) \$(OBJECT)
61         \$(RM_RF) $object
62         \$(CP) \$(OBJECT) $object
63
64 static :: $object
65 ";
66 }