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