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