xref: /openbsd-src/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
1256a93a4Safresh1package ExtUtils::MM_OS390;
2256a93a4Safresh1
3256a93a4Safresh1use strict;
4256a93a4Safresh1use warnings;
5*f2a19305Safresh1our $VERSION = '7.70';
6256a93a4Safresh1$VERSION =~ tr/_//d;
7256a93a4Safresh1
8256a93a4Safresh1use ExtUtils::MakeMaker::Config;
9256a93a4Safresh1require ExtUtils::MM_Unix;
10256a93a4Safresh1our @ISA = qw(ExtUtils::MM_Unix);
11256a93a4Safresh1
12256a93a4Safresh1=head1 NAME
13256a93a4Safresh1
14256a93a4Safresh1ExtUtils::MM_OS390 - OS390 specific subclass of ExtUtils::MM_Unix
15256a93a4Safresh1
16256a93a4Safresh1=head1 SYNOPSIS
17256a93a4Safresh1
18256a93a4Safresh1  Don't use this module directly.
19256a93a4Safresh1  Use ExtUtils::MM and let it choose.
20256a93a4Safresh1
21256a93a4Safresh1=head1 DESCRIPTION
22256a93a4Safresh1
23256a93a4Safresh1This is a subclass of L<ExtUtils::MM_Unix> which contains functionality for
24256a93a4Safresh1OS390.
25256a93a4Safresh1
26256a93a4Safresh1Unless otherwise stated it works just like ExtUtils::MM_Unix.
27256a93a4Safresh1
28256a93a4Safresh1=head2 Overriden methods
29256a93a4Safresh1
30256a93a4Safresh1=over
31256a93a4Safresh1
32256a93a4Safresh1=item xs_make_dynamic_lib
33256a93a4Safresh1
34256a93a4Safresh1Defines the recipes for the C<dynamic_lib> section.
35256a93a4Safresh1
36256a93a4Safresh1=cut
37256a93a4Safresh1
38256a93a4Safresh1sub xs_make_dynamic_lib {
39256a93a4Safresh1    my ($self, $attribs, $object, $to, $todir, $ldfrom, $exportlist, $dlsyms) = @_;
40256a93a4Safresh1    $exportlist = '' if $exportlist ne '$(EXPORT_LIST)';
41256a93a4Safresh1    my $armaybe = $self->_xs_armaybe($attribs);
42256a93a4Safresh1    my @m = sprintf '%s : %s $(MYEXTLIB) %s$(DFSEP).exists %s $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) %s'."\n", $to, $object, $todir, $exportlist, ($dlsyms || '');
43256a93a4Safresh1    my $dlsyms_arg = $self->xs_dlsyms_arg($dlsyms);
44256a93a4Safresh1    if ($armaybe ne ':'){
45256a93a4Safresh1        $ldfrom = 'tmp$(LIB_EXT)';
46256a93a4Safresh1        push(@m,"	\$(ARMAYBE) cr $ldfrom $object\n");
47256a93a4Safresh1        push(@m,"	\$(RANLIB) $ldfrom\n");
48256a93a4Safresh1    }
49256a93a4Safresh1
50256a93a4Safresh1    # For example in AIX the shared objects/libraries from previous builds
51256a93a4Safresh1    # linger quite a while in the shared dynalinker cache even when nobody
52256a93a4Safresh1    # is using them.  This is painful if one for instance tries to restart
53256a93a4Safresh1    # a failed build because the link command will fail unnecessarily 'cos
54256a93a4Safresh1    # the shared object/library is 'busy'.
55256a93a4Safresh1    push(@m,"	\$(RM_F) \$\@\n");
56256a93a4Safresh1
57256a93a4Safresh1    my $libs = '$(LDLOADLIBS)';
58256a93a4Safresh1
59256a93a4Safresh1    my $ld_run_path_shell = "";
60256a93a4Safresh1    if ($self->{LD_RUN_PATH} ne "") {
61256a93a4Safresh1        $ld_run_path_shell = 'LD_RUN_PATH="$(LD_RUN_PATH)" ';
62256a93a4Safresh1    }
63256a93a4Safresh1
64256a93a4Safresh1    push @m, sprintf <<'MAKE', $ld_run_path_shell, $self->xs_obj_opt('$@'), $dlsyms_arg, $ldfrom, $libs, $exportlist;
65256a93a4Safresh1	%s$(LD) %s $(LDDLFLAGS) %s $(OTHERLDFLAGS) %s $(MYEXTLIB) \
66256a93a4Safresh1	  $(PERL_ARCHIVE) %s $(PERL_ARCHIVE_AFTER) %s \
67256a93a4Safresh1	  $(INST_DYNAMIC_FIX)
68256a93a4Safresh1	$(CHMOD) $(PERM_RWX) $@
69256a93a4Safresh1MAKE
70256a93a4Safresh1    join '', @m;
71256a93a4Safresh1}
72256a93a4Safresh1
73256a93a4Safresh11;
74256a93a4Safresh1
75256a93a4Safresh1=back
76256a93a4Safresh1
77256a93a4Safresh1=head1 AUTHOR
78256a93a4Safresh1
79256a93a4Safresh1Michael G Schwern <schwern@pobox.com> with code from ExtUtils::MM_Unix
80256a93a4Safresh1
81256a93a4Safresh1=head1 SEE ALSO
82256a93a4Safresh1
83256a93a4Safresh1L<ExtUtils::MakeMaker>
84256a93a4Safresh1
85256a93a4Safresh1=cut
86256a93a4Safresh1__END__
87