summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/ext/SDBM_File/sdbm/Makefile.PL
blob: 4453dea1fda16170ed770ed35785a5250714d2f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
use ExtUtils::MakeMaker;

$define = '-DSDBM -DDUFF';
$define .= ' -DWIN32 -DPERL_STATIC_SYMS' if ($^O eq 'MSWin32');

if ($^O eq 'VMS') {  # Old VAXC compiler can't handle Duff's device
    require Config;
    $define =~ s/\s+-DDUFF// if $Config::Config{'vms_cc_type'} eq 'vaxc';
}

WriteMakefile(
    NAME      => 'sdbm', # (doesn't matter what the name is here) oh yes it does
#    LINKTYPE  => 'static',
    DEFINE    => $define,
    INC       => '-I$(PERL_INC)', # force PERL_INC dir ahead of system -I's
    INST_ARCHLIB => '.',
    SKIP      => [qw(dynamic dynamic_lib dlsyms)],
    OBJECT    => '$(O_FILES)',
    clean     => {'FILES' => 'dbu libsdbm.a dbd dba dbe x-dbu *.dir *.pag'},
    H         => [qw(tune.h sdbm.h pair.h $(PERL_INC)/config.h)],
    C         => [qw(sdbm.c pair.c hash.c)]
);

sub MY::constants {
  package MY;
  my $r = shift->SUPER::constants();
  if ($^O eq 'VMS') {
    $r =~ s/^INST_STATIC =.*$/INST_STATIC = libsdbm\$(LIB_EXT)/m
  }
  return $r;
}

sub MY::post_constants {
  package MY;
  if ($^O eq 'VMS') {
    shift->SUPER::post_constants();
  } else {
'
INST_STATIC = libsdbm$(LIB_EXT)
'
  }
}

sub MY::top_targets {
    my $noecho = shift->{NOECHO};
    
    my $r = '
all :: static
	' . $noecho . '$(NOOP)

config ::
	' . $noecho . '$(NOOP)

lint:
	lint -abchx $(LIBSRCS)

';
    $r .= '
# This is a workaround, the problem is that our old GNU make exports
# variables into the environment so $(MYEXTLIB) is set in here to this
# value which can not be built.
sdbm/libsdbm.a:
	' . $noecho . '$(NOOP)
' unless $^O eq 'VMS';

    return $r;
}
OpenPOWER on IntegriCloud