56016cae03f43e2db0b98e63996e96c43f86c97b
[perl.git] / ext / NDBM_File / Makefile.SH
1 : This forces SH files to create target in same directory as SH file.
2 : This is so that make depend always knows where to find SH derivatives.
3
4 case "$0" in
5 */*) cd `expr X$0 : 'X\(.*\)/'` ;;
6 esac
7
8 if test -f config.sh; then TOP=.;
9 elif test -f ../config.sh; then TOP=..;
10 elif test -f ../../config.sh; then TOP=../..;
11 elif test -f ../../../config.sh; then TOP=../../..;
12 elif test -f ../../../../config.sh; then TOP=../../../..;
13 else
14         echo "Can't find config.sh."; exit 1
15 fi
16
17 : Find absolute path name for TOP.  This is needed when we cd to TOP
18 : to run perl on autosplit.
19 oldpwd=`pwd`; cd $TOP; ABSTOP=`pwd`; cd $oldpwd
20
21 case $CONFIG in
22 '')
23         . $TOP/config.sh
24         ;;
25 esac
26
27 : Find out directory name.  This is also the extension name.
28 ext=`pwd | $sed -e 's@.*/@@'`
29
30 : This extension might have its own typemap
31 if test -f typemap; then
32         exttypemap='typemap'
33 else
34         exttypemap=''
35 fi
36
37 : This extension might need additional libraries.
38 potential_libs="-lndbm"
39 . $TOP/ext/util/extliblist
40 case "${extralibs}${dynaloadlibs}${statloadlibs}" in
41 '') : Try again.  Maybe they have -ldbm instead
42         potential_libs='-ldbm'
43         . $TOP/ext/util/extliblist
44         ;;
45 esac
46
47 : This extension might need bootstrap support
48 if test -f ${ext}_BS; then
49         bootdep=${ext}_BS
50 else
51         bootdep=''
52 fi
53
54 case "$dlsrc" in
55 dl_aix*)
56     echo "#!" > $ext.exp
57     echo "boot_$ext" >> $ext.exp
58     ;;
59 esac
60
61 echo "Extracting ext/$ext/Makefile (with variable substitutions)"
62 : This section of the file will have variable substitutions done on it.
63 : Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!.
64 : Protect any dollar signs and backticks that you do not want interpreted
65 : by putting a backslash in front.  You may delete these comments.
66 $spitshell >Makefile << !GROK!THIS!
67 #
68 # This Makefile is for the $ext extension to perl.
69
70 CC = $cc
71 RANLIB = $ranlib
72 TOP = $TOP
73 ABSTOP = $ABSTOP
74 LDFLAGS = $ldflags
75 CLDFLAGS = $ldflags
76 SMALL = $small
77 LARGE = $large $split
78
79 # To use an alternate make, set \$altmake in config.sh.
80 MAKE = ${altmake-make}
81
82 EXT = $ext
83
84 # $ext might have its own typemap
85 EXTTYPEMAP = $exttypemap
86
87 # $ext might have its own bootstrap support
88 BOOTDEP  = $bootdep
89 BOOTSTRAP  = $ext.bs
90
91 # The following are used to build and install shared libraries for
92 # dynamic loading.
93 LDDLFLAGS = $lddlflags
94 CCDLFLAGS = $ccdlflags
95 CCCDLFLAGS = $cccdlflags
96 SO = $so
97 DLEXT = $dlext
98
99 # $ext might need to be linked with some extra libraries.
100 # EXTRALIBS =  full list of libraries needed for static linking.
101 #               Only those libraries that actually exist are included.
102 # DYNLOADLIBS = list of those libraries that are needed but can be
103 #               linked in dynamically on this platform.  On SunOS, for
104 #               example, this would be .so* libraries, but not archive
105 #               libraries.  The bootstrap file is installed only if
106 #               this list is not empty.
107 # STATLOADLIBS = list of those libraries which must be statically
108 #               linked into the shared library.  On SunOS 4.1.3, 
109 #               for example,  I have only an archive version of
110 #               -lm, and it must be linked in statically.
111 EXTRALIBS = $extralibs
112 DYNALOADLIBS  = $dynaloadlibs
113 STATLOADLIBS = $statloadlibs
114
115 !GROK!THIS!
116
117 $spitshell >>Makefile <<'!NO!SUBS!'
118
119 # Where to put things:
120 AUTO = $(TOP)/lib/auto
121 INSTALLBOOT = $(AUTO)/$(EXT)/$(EXT).bs
122 INSTALLDYNAMIC = $(AUTO)/$(EXT)/$(EXT).$(DLEXT)
123 INSTALLSTATIC = $(EXT).a
124 INSTALLPM = $(TOP)/lib/$(EXT).pm
125
126 PERL = $(ABSTOP)/miniperl
127 XSUBPP = $(TOP)/ext/xsubpp
128 SHELL = /bin/sh
129 CCCMD = `sh $(shellflags) $(TOP)/cflags $@`
130
131 .c.o:
132         $(CCCMD) $(CCCDLFLAGS) -I$(TOP) $*.c
133
134 all:    dynamic
135 # Phony target to force checking subdirectories.
136 FORCE:
137
138 config:
139
140 # Target for Dynamic Loading:
141 dynamic:        $(INSTALLDYNAMIC) $(INSTALLPM) $(INSTALLBOOT)
142
143 $(INSTALLDYNAMIC): $(EXT).o
144         @test -d $(AUTO) || mkdir $(AUTO)
145         @test -d $(AUTO)/$(EXT) || mkdir $(AUTO)/$(EXT)
146         ld $(LDDLFLAGS) -o $@ $(EXT).o $(STATLOADLIBS)
147
148 $(BOOTSTRAP):   Makefile $(BOOTDEP)
149         $(PERL) -I$(TOP)/lib $(TOP)/ext/util/mkbootstrap $(DYNALOADLIBS)
150         touch $(BOOTSTRAP)
151
152 $(INSTALLBOOT): $(BOOTSTRAP)
153         @test ! -s $(BOOTSTRAP) || cp $(BOOTSTRAP) $@
154
155 # Target for Static Loading:
156 static: $(INSTALLSTATIC) $(INSTALLPM)
157
158 $(INSTALLSTATIC):       $(EXT).o
159         ar cr $@ $(EXT).o
160         $(RANLIB) $@
161         echo $(EXTRALIBS) >> $(TOP)/ext.libs
162
163 $(EXT).c:       $(EXT).xs $(XSUBPP) $(TOP)/ext/typemap $(EXTTYPEMAP) $(TOP)/cflags Makefile
164         $(PERL) $(XSUBPP) $(EXT).xs >tmp
165         mv tmp $@
166
167 $(INSTALLPM):   $(EXT).pm
168         rm -f $@
169         cp $(EXT).pm $@
170         cd $(TOP); $(PERL) autosplit $(EXT)
171
172 clean:
173         rm -f *.o *.a mon.out core $(EXT).c so_locations $(BOOTSTRAP) $(EXT).exp
174
175 realclean:      clean
176         rm -f makefile Makefile
177         rm -f $(INSTALLPM) $(INSTALLDYNAMIC) $(INSTALLSTATIC) $(INSTALLBOOT)
178         rm -rf $(AUTO)/$(EXT)
179
180 purge:  realclean
181
182 $(EXT).o :      $(TOP)/EXTERN.h
183 $(EXT).o :      $(TOP)/perl.h
184 $(EXT).o :      $(TOP)/embed.h
185 $(EXT).o :      $(TOP)/config.h
186 $(EXT).o :      $(TOP)/unixish.h
187 $(EXT).o :      $(TOP)/handy.h
188 $(EXT).o :      $(TOP)/regexp.h
189 $(EXT).o :      $(TOP)/sv.h
190 $(EXT).o :      $(TOP)/util.h
191 $(EXT).o :      $(TOP)/form.h
192 $(EXT).o :      $(TOP)/gv.h
193 $(EXT).o :      $(TOP)/cv.h
194 $(EXT).o :      $(TOP)/opcode.h
195 $(EXT).o :      $(TOP)/op.h
196 $(EXT).o :      $(TOP)/cop.h
197 $(EXT).o :      $(TOP)/av.h
198 $(EXT).o :      $(TOP)/hv.h
199 $(EXT).o :      $(TOP)/mg.h
200 $(EXT).o :      $(TOP)/scope.h
201 $(EXT).o :      $(TOP)/pp.h
202 $(EXT).o :      $(TOP)/proto.h
203 $(EXT).o :      $(TOP)/XSUB.h 
204
205 Makefile:       Makefile.SH $(TOP)/config.sh ; /bin/sh Makefile.SH
206 $(TOP)/config.h:        $(TOP)/config.sh; cd $(TOP); /bin/sh config_h.SH
207 $(TOP)/embed.h: $(TOP)/config.sh; cd $(TOP); /bin/sh embed_h.SH
208 $(TOP)/cflags:  $(TOP)/config.sh; cd $(TOP); /bin/sh cflags.SH
209
210 !NO!SUBS!
211 chmod 644 Makefile
212 $eunicefix Makefile
213