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