summaryrefslogtreecommitdiff
path: root/Makefile.SH
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.SH')
-rw-r--r--Makefile.SH216
1 files changed, 137 insertions, 79 deletions
diff --git a/Makefile.SH b/Makefile.SH
index fe0549a035..88b8b7194e 100644
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -17,25 +17,31 @@ case "$0" in
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
esac
-case "$d_symlink" in
-*define*) sln='ln -s' ;;
-*) sln='ln';;
-esac
-
case "$d_dosuid" in
*define*) suidperl='suidperl' ;;
*) suidperl='';;
esac
+: Certain parts of Makefile need to be commented out if dynamic
+: loading is not used.
+case "$usedl" in
+define) comment='' ;;
+*) comment='#' ;;
+esac
+
echo "Extracting Makefile (with variable substitutions)"
: This section of the file will have variable substitutions done on it.
: Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!.
: Protect any dollar signs and backticks that you do not want interpreted
: by putting a backslash in front. You may delete these comments.
$spitshell >Makefile <<!GROK!THIS!
-# : Makefile.SH,v 15738Revision: 4.1 15738Date: 92/08/07 17:18:08 $
+# $Makefile.SH,v $Revision: 4.1 $Date: 92/08/07 17:18:08 $
+# This file is derived from Makefile.SH. Any changes made here will
+# be lost the next time you run Configure.
+# Makefile is used to generate makefile. The only difference
+# is that makefile has the dependencies filled in at the end.
#
-# $Log: Makefile.SH,v $
+# \$Log: Makefile.SH,v \$
# Revision 4.1 92/08/07 17:18:08 lwall
# Stage 6 Snapshot
#
@@ -71,14 +77,24 @@ mansrc = $mansrc
manext = $manext
LDFLAGS = $ldflags
CLDFLAGS = $ldflags
+
SMALL = $small
LARGE = $large $split
mallocsrc = $mallocsrc
mallocobj = $mallocobj
dlsrc = $dlsrc
dlobj = $dlobj
-SLN = $sln
+dldir = $dldir
+LNS = $lns
RMS = rm -f
+ranlib = $ranlib
+
+# The following are used to build and install shared libraries for
+# dynamic loading.
+LDDLFLAGS = $lddlflags
+CCDLFLAGS = $ccdlflags
+CCCDLFLAGS = $cccdlflags
+SHLIBSUFFIX = $shlibsuffix
libs = $libs $cryptlib
@@ -86,11 +102,11 @@ public = perl $suidperl
shellflags = $shellflags
-# To use an alternate make, set $altmake in config.sh.
+## To use an alternate make, set $altmake in config.sh.
MAKE = ${altmake-make}
!GROK!THIS!
-: In the following dollars and backticks do not need the extra backslash.
+## In the following dollars and backticks do not need the extra backslash.
$spitshell >>Makefile <<'!NO!SUBS!'
CCCMD = `sh $(shellflags) cflags $@`
@@ -103,7 +119,7 @@ manpages = perl.man h2ph.man
util =
-sh = Makefile.SH makedepend.SH h2ph.SH
+sh = Makefile.SH cflags.SH embed_h.SH makedepend.SH makedir.SH writemain.SH
h1 = EXTERN.h INTERN.h av.h cop.h config.h embed.h form.h handy.h
h2 = hv.h op.h opcode.h perl.h regcomp.h regexp.h gv.h sv.h util.h
@@ -118,19 +134,19 @@ c1 = av.c scope.c op.c doop.c doio.c dump.c hv.c
c2 = $(mallocsrc) mg.c perly.c pp.c regcomp.c regexec.c
c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c
-c = $(c1) $(c2) $(c3)
+c = $(c1) $(c2) $(c3) $(dlsrc) miniperlmain.c perlmain.c
s1 = av.c scope.c op.c doop.c doio.c dump.c hv.c
-s2 = $(mallocobj) mg.c perly.c pp.c regcomp.c regexec.c
+s2 = $(mallocsrc) mg.c perly.c pp.c regcomp.c regexec.c
s3 = gv.c sv.c taint.c toke.c util.c deb.c run.c perly.c
-saber = $(s1) $(s2) $(s3)
+saber = $(s1) $(s2) $(s3) $(dlsrc)
obj1 = av.o scope.o op.o doop.o doio.o dump.o hv.o
obj2 = $(mallocobj) mg.o perly.o pp.o regcomp.o regexec.o
obj3 = gv.o sv.o taint.o toke.o util.o deb.o run.o
-obj = $(obj1) $(obj2) $(obj3) $(dlobj)
+obj = $(obj1) $(obj2) $(obj3)
lintflags = -hbvxac
@@ -139,82 +155,126 @@ addedbyconf = Makefile.old bsd eunice filexp loc pdp11 usg v7
# grrr
SHELL = /bin/sh
-.SUFFIXES: .x
-
.c.o:
$(CCCMD) $*.c
-.x.c:
- sh writemain $*.x >$*.c
-
all: miniperl perl lib/Config.pm
#all: $(public) $(private) $(util) $(scripts)
# cd x2p; $(MAKE) all
# touch all
+
+# Phony target to force checking subdirectories.
+FORCE:
+
!NO!SUBS!
+
+### Some makes have problems with the following dependency
+### if $(dlsrc) or $(dlobj) is empty.
+### Therefore, comment it out if dlsrc is null.
+###
+$spitshell >>Makefile <<!GROK!THIS!
+${comment}
+${comment}\$(dlsrc): \$(dldir)/\$(dlsrc)
+${comment} cp \$(dldir)/\$(dlsrc) \$(dlsrc)
+
+${comment}\$(dlobj): \$(dlsrc)
+${comment} \$(CCCMD) \$(dlsrc)
+
+!GROK!THIS!
+
###
### Boilerplate for all the .xs files in the ext directory.
### XXX FIXME: At some point we also need to copy .pm files out of
### XXX the ext directory into lib.
-# Configure sets extensions to a string like
-# "ext/dbm/NDBM_File.xs ext/dbm/ODBM_File.xs ext/dbm/GDBM_File.xs \
-# ext/dbm/SDBM_File.xs ext/posix/POSIX.xs"
-extobjs=" "
+### XXX FIXME: At some point we need to run autosplit on the .pm
+### XXX files.
+### Configure sets extensions to a string like
+### "ext/dbm/NDBM_File.xs ext/dbm/ODBM_File.xs ext/dbm/GDBM_File.xs \
+### ext/dbm/SDBM_File.xs ext/posix/POSIX.xs"
+ext=" "
+extdep=" "
+extobj=" "
+extsrc=" "
+# extradep gives any extra dependencies of this extension.
+# extraobj gives any extra thinks to link with this extension.
for f in $extensions
do
- base=`basename $f .xs`
- dir=`dirname $f`
- extobjs="$extobjs $f.o"
+ base=`echo $f | $sed -e 's@.*/\(.*\).xs@\1@'`
+ ext="$ext $base"
+ extsrc="$extsrc $base.c"
+ case $base in
+ SDBM_File) extradep="ext/dbm/sdbm/libsdbm.a"
+ extraobj="ext/dbm/sdbm/libsdbm.a" ;;
+ POSIX) extradep=""
+ extraobj="-lm" ;;
+ *) extradep=""
+ extraobj="" ;;
+ esac
+ case "$usedl" in
+ define) extdep="$extdep lib/auto/$base/${base}\$(SHLIBSUFFIX)"
+ ;;
+ *) extdep="$extdep $base.o $extradep"
+ extobj="$extobj $base.o $extraobj" ;;
+ esac
+
$spitshell >>Makefile <<!GROK!THIS!
# $base extension
+$base.o: $base.c
+ \$(CCCMD) \$(CCCDLFLAGS) \$*.c
+
$base.c: $f ext/xsubpp ext/typemap
test -f miniperl || make miniperl
- ext/xsubpp $f >tmp
+ ./miniperl ext/xsubpp $f >tmp
mv tmp $base.c
-$base.o: $base.c
+${comment}lib/auto/$base/$base\$(SHLIBSUFFIX): $base.o $extradep
+${comment} test -d lib/auto/$base || mkdir lib/auto/$base
+${comment} ld \$(LDDLFLAGS) -o \$@ $base.o $extraobj
!GROK!THIS!
- case $base in
- SDBM_File) $spitshell >>Makefile <<'!NO!SUBS!'
+done
-lib/auto/SDBM_File/SDBM_File.so: SDBM_File.o ext/dbm/sdbm/libsdbm.a
- @- mkdir lib/auto/SDBM_File 2>/dev/null
- ld -o lib/auto/SDBM_File/SDBM_File.so SDBM_File.o ext/dbm/sdbm/libsdbm.a
+$spitshell >>Makefile <<!GROK!THIS!
-ext/dbm/sdbm/libsdbm.a: ext/dbm/sdbm/sdbm.c ext/dbm/sdbm/sdbm.h
- cd ext/dbm/sdbm; $(MAKE) sdbm
-!NO!SUBS!
- ;;
- POSIX) $spitshell >>Makefile <<'!NO!SUBS!'
-lib/auto/POSIX/POSIX.so: POSIX.o ext/dbm/sdbm/libsdbm.a
- @- mkdir lib/auto/POSIX 2>/dev/null
- ld -o lib/auto/POSIX/POSIX.so POSIX.o ext/dbm/sdbm/libsdbm.a
-!NO!SUBS!
- ;;
- esac
-done
+# List of extensions (used by writemain) to generate perlmain.c
+ext=$ext
+extsrc=$extsrc
+# Extension dependencies.
+extdep=$extdep
+# How to include extensions in linking command
+extobj=$extobj
-echo "extobjs=$extobjs" >> Makefile
+ext/dbm/sdbm/libsdbm.a: ext/dbm/sdbm/sdbm.h ext/dbm/sdbm/sdbm.c
+ cd ext/dbm/sdbm; \$(MAKE) -f Makefile libsdbm.a
+!GROK!THIS!
+
+### Now on to the rest of the Makefile.
$spitshell >>Makefile <<'!NO!SUBS!'
# The $& notation tells Sequent machines that it can do a parallel make,
# and is harmless otherwise.
-miniperlmain.c: miniperlmain.x
-miniperlmain.o: miniperlmain.c
miniperl: $& miniperlmain.o perl.o $(obj)
$(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain.o perl.o $(obj) $(libs)
-perlmain.c: perlmain.x
+perlmain.c: miniperlmain.c
+ sh writemain $(ext) > perlmain.c
+
perlmain.o: perlmain.c
-perl: $& perlmain.o perl.o $(obj) NDBM_File.o ODBM_File.o POSIX.o
- $(CC) $(LARGE) $(CLDFLAGS) -o perl perlmain.o perl.o $(obj) NDBM_File.o ODBM_File.o POSIX.o $(libs)
+
+perl: $& perlmain.o perl.o $(obj) $(dlobj) $(extdep)
+ $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain.o perl.o $(obj) $(dlobj) $(extobj) $(libs)
+
+pureperl: $& perlmain.o perl.o $(obj) $(dlobj) $(extdep)
+ purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain.o perl.o $(obj) $(dlobj) $(extobj) $(libs)
+
+quantperl: $& perlmain.o perl.o $(obj) $(dlobj) $(extdep)
+ quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain.o perl.o $(obj) $(dlobj) $(extobj) $(libs)
libperl.rlb: libperl.a
- ranlib libperl.a
+ $(ranlib) libperl.a
touch libperl.rlb
libperl.a: $& perl.o $(obj)
@@ -225,11 +285,11 @@ libperl.a: $& perl.o $(obj)
# checks as well as the special code to validate that the script in question
# has been invoked correctly.
-suidperl: $& sperl.o main.o libperl.rlb
- $(CC) $(LARGE) $(CLDFLAGS) sperl.o main.o libperl.a $(libs) -o suidperl
+suidperl: $& sperl.o perlmain.o libperl.rlb
+ $(CC) $(LARGE) $(CLDFLAGS) sperl.o perlmain.o libperl.a $(libs) -o suidperl
-lib/Config.pm: config.sh
- ./configpm
+lib/Config.pm: config.sh miniperl
+ ./miniperl configpm
saber: $(saber)
# load $(saber)
@@ -237,25 +297,16 @@ saber: $(saber)
sperl.o: perl.c perly.h patchlevel.h $(h)
$(RMS) sperl.c
- $(SLN) perl.c sperl.c
+ $(LNS) perl.c sperl.c
$(CCCMD) -DIAMSUID sperl.c
$(RMS) sperl.c
-dl.o: ext/dl/dl.c
- cp ext/dl/dl.c dl.c
- $(CC) -c dl.c
-
-!NO!SUBS!
-
-### Now on to the rest of the Makefile.
-$spitshell >>Makefile <<'!NO!SUBS!'
-
perly.h: perly.c
@ echo Dummy dependency for dumb parallel make
touch perly.h
opcode.h: opcode.pl
- - opcode.pl
+ - perl opcode.pl
embed.h: embed_h.SH global.sym interp.sym
sh embed_h.SH
@@ -274,14 +325,21 @@ install: all
./perl installperl
clean:
- rm -f *.o all perl taintperl suidperl miniperl
+ rm -f *.o all perl miniperl
+ rm -f POSIX.c ?DBM_File.c perlmain.c
+ rm -f ext/dbm/sdbm/libsdbm.a
+ cd ext/dbm/sdbm; $(MAKE) -f Makefile clean
cd x2p; $(MAKE) clean
realclean: clean
cd x2p; $(MAKE) realclean
+ cd ext/dbm/sdbm; $(MAKE) -f Makefile realclean
rm -f *.orig */*.orig *~ */*~ core $(addedbyconf) h2ph h2ph.man
- rm -f perly.h t/perl Makefile config.h makedepend makedir
- rm -f makefile x2p/Makefile x2p/makefile cflags x2p/cflags
+ rm -f Makefile cflags embed_h makedepend makedir writemain
+ rm -f config.h t/perl makefile makefile.old cflags
+ rm -rf lib/auto/?DBM_File lib/auto/POSIX
+ rm -f x2p/Makefile x2p/makefile x2p/makefile.old x2p/cflags
+ rm -f lib/Config.pm
rm -f c2ph pstruct
# The following lint has practically everything turned on. Unfortunately,
@@ -298,28 +356,28 @@ depend: makedepend
- test -s perly.h || /bin/rm -f perly.h
cd x2p; $(MAKE) depend
-test: perl
+test: perl lib/Config.pm
- cd t && chmod +x TEST */*.t
- - cd t && (rm -f perl; $(SLN) ../perl perl) && ./perl TEST </dev/tty
+ - cd t && (rm -f perl; $(LNS) ../perl perl) && ./perl TEST </dev/tty
-clist:
+clist: $(c)
echo $(c) | tr ' ' '\012' >.clist
-hlist:
+hlist: $(h)
echo $(h) | tr ' ' '\012' >.hlist
-shlist:
+shlist: $(sh)
echo $(sh) | tr ' ' '\012' >.shlist
# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
# If this runs make out of memory, delete /usr/include lines.
!NO!SUBS!
-$eunicefix Makefile4
+$eunicefix Makefile
case `pwd` in
*SH)
- $rm -f ../Makefile4
- ln Makefile4 ../Makefile4
+ $rm -f ../Makefile
+ ln Makefile ../Makefile
;;
esac
rm -f makefile