This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
CYG14 Dynaloader without USEIMPORTLIB, and search cyg prefix
[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     PM          => {'DynaLoader.pm' => '$(INST_LIBDIR)/DynaLoader.pm'},
17     depend      => {'DynaLoader$(OBJ_EXT)' => 'dlutils.c'},
18     clean       => {FILES => 'DynaLoader.c DynaLoader.xs DynaLoader.pm'},
19 );
20
21 sub MY::cflags {
22   package MY;
23   my $flags = shift->SUPER::cflags(@_);
24   if ($flags =~ /-DUSEIMPORTLIB/m) {
25     $flags =~ s/-DUSEIMPORTLIB/-UUSEIMPORTLIB/m;
26   }
27   $flags;
28 }
29
30 sub MY::postamble {
31     my $test_xs;
32
33     if ($is_mswin || $is_netware || $is_vms) {
34         $test_xs = '';
35     } else {
36         $test_xs = <<'EOT';
37
38 # Perform very simple tests just to check for major gaffs.
39 # We can\'t do much more for platforms we are not executing on.
40 test-xs:
41         for i in dl_*xs; \
42             do $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSUBPPARGS) $$i > /dev/null; \
43         done
44 EOT
45     }
46
47     return '
48 DynaLoader.xs: $(DLSRC)
49         $(RM_F) $@
50         $(CP) $? $@
51 ' . $test_xs;
52 }
53
54 sub MY::static {
55     my $object;
56     if ($is_mswin || $is_netware) {
57         $object = '$(PERL_SRC)\\$(OBJECT)';
58     } elsif ($is_vms) {
59         $object = '$(PERL_SRC)$(OBJECT)';
60     } else {
61         $object = '$(PERL_SRC)/$(OBJECT)';
62     }
63
64
65     return "
66 $object : \$(FIRST_MAKEFILE) \$(OBJECT)
67         \$(RM_RF) $object
68         \$(CP) \$(OBJECT) $object
69
70 static :: $object
71 ";
72 }