1use ExtUtils::MakeMaker; 2 3my $define = '-DSDBM -DDUFF'; 4$define .= ' -DWIN32 -DPERL_STATIC_SYMS' if ($^O eq 'MSWin32'); 5 6if ($^O eq 'VMS') { # Old VAXC compiler can't handle Duff's device 7 require Config; 8 $define =~ s/\s+-DDUFF// if $Config::Config{'vms_cc_type'} eq 'vaxc'; 9} 10 11WriteMakefile( 12 NAME => 'sdbm', # (doesn't matter what the name is here) oh yes it does 13# LINKTYPE => 'static', 14 DEFINE => $define, 15 INC => '-I$(PERL_INC)', # force PERL_INC dir ahead of system -I's 16 SKIP => [qw(dynamic dynamic_lib dlsyms)], 17 OBJECT => '$(O_FILES)', 18 clean => {'FILES' => 'dbu libsdbm.a dbd dba dbe x-dbu *.dir *.pag'}, 19 H => [qw(tune.h sdbm.h pair.h $(PERL_INC)/config.h)], 20 C => [qw(sdbm.c pair.c hash.c)] 21); 22 23sub MY::constants { 24 package MY; 25 my $self = shift; 26 27 $self->{INST_STATIC} = 'libsdbm$(LIB_EXT)'; 28 29 return $self->SUPER::constants(); 30} 31 32sub MY::top_targets { 33 my $r = ' 34all :: static 35 $(NOECHO) $(NOOP) 36 37config :: 38 $(NOECHO) $(NOOP) 39 40lint: 41 lint -abchx $(LIBSRCS) 42 43'; 44 $r .= ' 45# This is a workaround, the problem is that our old GNU make exports 46# variables into the environment so $(MYEXTLIB) is set in here to this 47# value which can not be built. 48sdbm/libsdbm.a: 49 $(NOECHO) $(NOOP) 50' unless $^O eq 'VMS'; 51 52 return $r; 53} 54