# : Makefile.SH,v 15738Revision: 4.1 15738Date: 92/08/07 17:18:08 $
#
# $Log:	Makefile.SH,v $
# Revision 4.1  92/08/07  17:18:08  lwall
# Stage 6 Snapshot
# 
# Revision 4.0.1.4  92/06/08  11:40:43  lwall
# patch20: cray didn't give enough memory to /bin/sh
# patch20: various and sundry fixes
# 
# Revision 4.0.1.3  91/11/05  15:48:11  lwall
# patch11: saberized perl
# patch11: added support for dbz
# 
# Revision 4.0.1.2  91/06/07  10:14:43  lwall
# patch4: cflags now emits entire cc command except for the filename
# patch4: alternate make programs are now semi-supported
# patch4: uperl.o no longer tries to link in libraries prematurely
# patch4: installperl now installs x2p stuff too
# 
# Revision 4.0.1.1  91/04/11  17:30:39  lwall
# patch1: C flags are now settable on a per-file basis
# 
# Revision 4.0  91/03/20  00:58:54  lwall
# 4.0 baseline.
# 
# 

# I now supply perly.c with the kits, so don't remake perly.c without byacc
BYACC = ../perl-byacc1.8.2/byacc

CC = cc
bin = /usr/local/bin
scriptdir = /usr/local/bin
privlib = /usr/local/lib/perl
mansrc = /usr/man/manl
manext = l
LDFLAGS = 
CLDFLAGS = 
SMALL = 
LARGE =  
mallocsrc = malloc.c
mallocobj = malloc.o
SLN = ln -s
RMS = rm -f

libs = -ldbm -lm # -lposix -Bdynamic -ldl

public = perl

shellflags = 

# To use an alternate make, set  in config.sh.
MAKE = make


CCCMD = `sh $(shellflags) cflags $@`

private = 

scripts = h2ph

manpages = perl.man h2ph.man

util =

sh = Makefile.SH makedepend.SH h2ph.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

h = $(h1) $(h2)

c1 = av.c cop.c cons.c consop.c doop.c doio.c
c2 = eval.c hv.c main.c $(mallocsrc) perl.c pp.c regcomp.c regexec.c
c3 = gv.c sv.c taint.c toke.c util.c usersub.c

c = $(c1) $(c2) $(c3)

s1 = av.c cop.c cons.c consop.c doop.c doio.c
s2 = eval.c hv.c main.c perl.c pp.c regcomp.c regexec.c
s3 = gv.c sv.c taint.c toke.c util.c usersub.c perly.c

saber = $(s1) $(s2) $(s3)

obj1 = av.o scope.o op.o doop.o doio.o dump.o hv.o
obj2 = $(mallocobj) mg.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) NDBM_File.o ODBM_File.o POSIX.o  linux_dl.o

lintflags = -hbvxac

addedbyconf = Makefile.old bsd eunice filexp loc pdp11 usg v7

# grrr
SHELL = /bin/sh

.c.o:
	$(CCCMD) $*.c


all: perl lib/Config.pm

#all: $(public) $(private) $(util) $(scripts)
#	cd x2p; $(MAKE) all
#	touch all

# The $& notation tells Sequent machines that it can do a parallel make,
# and is harmless otherwise.

perl: $& main.o perly.o perl.o $(obj)
	$(CC)  $(LARGE) $(CLDFLAGS) main.o perly.o perl.o $(obj) $(libs) -o perl
	echo ""

libperl.rlb: libperl.a
	ranlib libperl.a
	touch libperl.rlb

libperl.a: $& perly.o perl.o $(obj)
	ar rcuv libperl.a $(obj) perly.o

# This version, if specified in Configure, does ONLY those scripts which need
# set-id emulation.  Suidperl must be setuid root.  It contains the "taint"
# 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

lib/Config.pm: config.sh
	./configpm

saber: $(saber)
	# load $(saber)
	# load /lib/libm.a

sperl.o: perl.c perly.h patchlevel.h $(h)
	$(RMS) sperl.c
	$(SLN) perl.c sperl.c
	$(CCCMD) -DTAINT -DIAMSUID sperl.c
	$(RMS) sperl.c

dl.o: ext/dl/dl.c
	cp ext/dl/dl.c dl.c
	$(CC) -c dl.c

# ODBM_File extension

ODBM_File.c: ext/dbm/ODBM_File.xs ext/xsubpp ext/typemap
	ext/xsubpp ext/dbm/ODBM_File.xs >tmp
	mv tmp ODBM_File.c

ODBM_File.o: ODBM_File.c

# NDBM_File extension

NDBM_File.c: ext/dbm/NDBM_File.xs ext/xsubpp ext/typemap
	ext/xsubpp ext/dbm/NDBM_File.xs >tmp
	mv tmp NDBM_File.c

NDBM_File.o: NDBM_File.c

# SDBM_File extension

SDBM_File.c: ext/dbm/SDBM_File.xs ext/xsubpp ext/typemap
	ext/xsubpp ext/dbm/SDBM_File.xs > tmp
	mv tmp SDBM_File.c

SDBM_File.o: SDBM_File.c

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

ext/dbm/sdbm/libsdbm.a: ext/dbm/sdbm/sdbm.c ext/dbm/sdbm/sdbm.h
	cd ext/dbm/sdbm; $(MAKE) sdbm

# GDBM_File extension

GDBM_File.c: ext/dbm/GDBM_File.xs ext/xsubpp ext/typemap
	ext/xsubpp ext/dbm/GDBM_File.xs >tmp
	mv tmp GDBM_File.c

GDBM_File.o: GDBM_File.c

# POSIX extension

POSIX.c: ext/posix/POSIX.xs ext/xsubpp ext/typemap
	ext/xsubpp ext/posix/POSIX.xs > tmp
	mv tmp POSIX.c

POSIX.o: POSIX.c

lib/auto/POSIX/POSIX.so: POSIX.o
	@- mkdir lib/auto/POSIX 2>/dev/null
	ld -o lib/auto/POSIX/POSIX.so POSIX.o ext/dbm/sdbm/libsdbm.a

perly.h: perly.c
	@ echo Dummy dependency for dumb parallel make
	touch perly.h

opcode.h: opcode.pl
	- opcode.pl

embed.h: embed_h.SH global.sym interp.sym
	sh embed_h.SH

perly.c:
	@ echo 'Expect' 62 shift/reduce and 62 reduce/reduce conflicts
	$(BYACC) -d perly.y
	sh $(shellflags) ./perly.fixer y.tab.c perly.c
	mv y.tab.h perly.h
	echo 'extern YYSTYPE yylval;' >>perly.h

perly.o: perly.c perly.h $(h)
	$(CCCMD) perly.c

install: all
	./perl installperl

clean:
	rm -f *.o all perl taintperl suidperl perly.c
	cd x2p; $(MAKE) clean

realclean: clean
	cd x2p; $(MAKE) realclean
	rm -f *.orig */*.orig *~ */*~ core $(addedbyconf) h2ph h2ph.man
	rm -f perly.c perly.h t/perl Makefile config.h makedepend makedir
	rm -f makefile x2p/Makefile x2p/makefile cflags x2p/cflags
	rm -f c2ph pstruct

# The following lint has practically everything turned on.  Unfortunately,
# you have to wade through a lot of mumbo jumbo that can't be suppressed.
# If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
# for that spot.

lint: perly.c $(c)
	lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz

depend: makedepend
	- test -f perly.h || cp /dev/null perly.h
	./makedepend
	- test -s perly.h || /bin/rm -f perly.h
	cd x2p; $(MAKE) depend

test: perl
	- cd t && chmod +x TEST */*.t
	- cd t && (rm -f perl; $(SLN) ../perl perl) && ./perl TEST </dev/tty

clist:
	echo $(c) | tr ' ' '\012' >.clist

hlist:
	echo $(h) | tr ' ' '\012' >.hlist

shlist:
	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.
av.o: EXTERN.h
av.o: av.c
av.o: av.h
av.o: config.h
av.o: cop.h
av.o: embed.h
av.o: form.h
av.o: gv.h
av.o: handy.h
av.o: hv.h
av.o: op.h
av.o: opcode.h
av.o: perl.h
av.o: pp.h
av.o: proto.h
av.o: regexp.h
av.o: sv.h
av.o: unixish.h
av.o: util.h
cop.o: EXTERN.h
cop.o: av.h
cop.o: config.h
cop.o: cop.c
cop.o: cop.h
cop.o: embed.h
cop.o: form.h
cop.o: gv.h
cop.o: handy.h
cop.o: hv.h
cop.o: op.h
cop.o: opcode.h
cop.o: perl.h
cop.o: pp.h
cop.o: proto.h
cop.o: regexp.h
cop.o: sv.h
cop.o: unixish.h
cop.o: util.h
cons.o: EXTERN.h
cons.o: av.h
cons.o: config.h
cons.o: cons.c
cons.o: cop.h
cons.o: embed.h
cons.o: form.h
cons.o: gv.h
cons.o: handy.h
cons.o: hv.h
cons.o: op.h
cons.o: opcode.h
cons.o: perl.h
cons.o: perly.h
cons.o: pp.h
cons.o: proto.h
cons.o: regexp.h
cons.o: sv.h
cons.o: unixish.h
cons.o: util.h
consop.o: EXTERN.h
consop.o: av.h
consop.o: config.h
consop.o: consop.c
consop.o: cop.h
consop.o: embed.h
consop.o: form.h
consop.o: gv.h
consop.o: handy.h
consop.o: hv.h
consop.o: op.h
consop.o: opcode.h
consop.o: perl.h
consop.o: pp.h
consop.o: proto.h
consop.o: regexp.h
consop.o: sv.h
consop.o: unixish.h
consop.o: util.h
scope.o: EXTERN.h
scope.o: av.h
scope.o: config.h
scope.o: cop.h
scope.o: doop.c
scope.o: embed.h
scope.o: form.h
scope.o: gv.h
scope.o: handy.h
scope.o: hv.h
scope.o: op.h
scope.o: opcode.h
scope.o: perl.h
scope.o: pp.h
scope.o: proto.h
scope.o: regexp.h
scope.o: sv.h
scope.o: unixish.h
scope.o: util.h
op.o: EXTERN.h
op.o: av.h
op.o: config.h
op.o: cop.h
op.o: doop.c
op.o: embed.h
op.o: form.h
op.o: gv.h
op.o: handy.h
op.o: hv.h
op.o: op.h
op.o: opcode.h
op.o: perl.h
op.o: pp.h
op.o: proto.h
op.o: regexp.h
op.o: sv.h
op.o: unixish.h
op.o: util.h
run.o: EXTERN.h
run.o: av.h
run.o: config.h
run.o: cop.h
run.o: doop.c
run.o: embed.h
run.o: form.h
run.o: gv.h
run.o: handy.h
run.o: hv.h
run.o: op.h
run.o: opcode.h
run.o: perl.h
run.o: pp.h
run.o: proto.h
run.o: regexp.h
run.o: sv.h
run.o: unixish.h
run.o: util.h
deb.o: EXTERN.h
deb.o: av.h
deb.o: config.h
deb.o: cop.h
deb.o: doop.c
deb.o: embed.h
deb.o: form.h
deb.o: gv.h
deb.o: handy.h
deb.o: hv.h
deb.o: op.h
deb.o: opcode.h
deb.o: perl.h
deb.o: pp.h
deb.o: proto.h
deb.o: regexp.h
deb.o: sv.h
deb.o: unixish.h
deb.o: util.h
doop.o: EXTERN.h
doop.o: av.h
doop.o: config.h
doop.o: cop.h
doop.o: doop.c
doop.o: embed.h
doop.o: form.h
doop.o: gv.h
doop.o: handy.h
doop.o: hv.h
doop.o: op.h
doop.o: opcode.h
doop.o: perl.h
doop.o: pp.h
doop.o: proto.h
doop.o: regexp.h
doop.o: sv.h
doop.o: unixish.h
doop.o: util.h
doio.o: EXTERN.h
doio.o: av.h
doio.o: config.h
doio.o: cop.h
doio.o: doio.c
doio.o: embed.h
doio.o: form.h
doio.o: gv.h
doio.o: handy.h
doio.o: hv.h
doio.o: op.h
doio.o: opcode.h
doio.o: perl.h
doio.o: pp.h
doio.o: proto.h
doio.o: regexp.h
doio.o: sv.h
doio.o: unixish.h
doio.o: util.h
dump.o: EXTERN.h
dump.o: av.h
dump.o: config.h
dump.o: cop.h
dump.o: dump.c
dump.o: embed.h
dump.o: form.h
dump.o: gv.h
dump.o: handy.h
dump.o: hv.h
dump.o: op.h
dump.o: opcode.h
dump.o: perl.h
dump.o: pp.h
dump.o: proto.h
dump.o: regexp.h
dump.o: sv.h
dump.o: unixish.h
dump.o: util.h
eval.o: EXTERN.h
eval.o: av.h
eval.o: config.h
eval.o: cop.h
eval.o: embed.h
eval.o: eval.c
eval.o: form.h
eval.o: gv.h
eval.o: handy.h
eval.o: hv.h
eval.o: op.h
eval.o: opcode.h
eval.o: perl.h
eval.o: pp.h
eval.o: proto.h
eval.o: regexp.h
eval.o: sv.h
eval.o: unixish.h
eval.o: util.h
hv.o: EXTERN.h
hv.o: av.h
hv.o: config.h
hv.o: cop.h
hv.o: embed.h
hv.o: form.h
hv.o: gv.h
hv.o: handy.h
hv.o: hv.c
hv.o: hv.h
hv.o: op.h
hv.o: opcode.h
hv.o: perl.h
hv.o: pp.h
hv.o: proto.h
hv.o: regexp.h
hv.o: sv.h
hv.o: unixish.h
hv.o: util.h
main.o: INTERN.h
main.o: av.h
main.o: config.h
main.o: cop.h
main.o: embed.h
main.o: form.h
main.o: gv.h
main.o: handy.h
main.o: hv.h
main.o: main.c
main.o: op.h
main.o: opcode.h
main.o: perl.h
main.o: pp.h
main.o: proto.h
main.o: regexp.h
main.o: sv.h
main.o: unixish.h
main.o: util.h
malloc.o: EXTERN.h
malloc.o: av.h
malloc.o: config.h
malloc.o: cop.h
malloc.o: embed.h
malloc.o: form.h
malloc.o: gv.h
malloc.o: handy.h
malloc.o: hv.h
malloc.o: malloc.c
malloc.o: op.h
malloc.o: opcode.h
malloc.o: perl.h
malloc.o: pp.h
malloc.o: proto.h
malloc.o: regexp.h
malloc.o: sv.h
malloc.o: unixish.h
malloc.o: util.h
perl.o: EXTERN.h
perl.o: av.h
perl.o: config.h
perl.o: cop.h
perl.o: embed.h
perl.o: form.h
perl.o: gv.h
perl.o: handy.h
perl.o: hv.h
perl.o: op.h
perl.o: opcode.h
perl.o: patchlevel.h
perl.o: perl.c
perl.o: perl.h
perl.o: perly.h
perl.o: pp.h
perl.o: proto.h
perl.o: regexp.h
perl.o: sv.h
perl.o: unixish.h
perl.o: util.h
pp.o: EXTERN.h
pp.o: av.h
pp.o: config.h
pp.o: cop.h
pp.o: embed.h
pp.o: form.h
pp.o: gv.h
pp.o: handy.h
pp.o: hv.h
pp.o: op.h
pp.o: opcode.h
pp.o: perl.h
pp.o: pp.c
pp.o: pp.h
pp.o: proto.h
pp.o: regexp.h
pp.o: sv.h
pp.o: unixish.h
pp.o: util.h
regcomp.o: EXTERN.h
regcomp.o: INTERN.h
regcomp.o: av.h
regcomp.o: config.h
regcomp.o: cop.h
regcomp.o: embed.h
regcomp.o: form.h
regcomp.o: gv.h
regcomp.o: handy.h
regcomp.o: hv.h
regcomp.o: op.h
regcomp.o: opcode.h
regcomp.o: perl.h
regcomp.o: pp.h
regcomp.o: proto.h
regcomp.o: regcomp.c
regcomp.o: regcomp.h
regcomp.o: regexp.h
regcomp.o: sv.h
regcomp.o: unixish.h
regcomp.o: util.h
regexec.o: EXTERN.h
regexec.o: av.h
regexec.o: config.h
regexec.o: cop.h
regexec.o: embed.h
regexec.o: form.h
regexec.o: gv.h
regexec.o: handy.h
regexec.o: hv.h
regexec.o: op.h
regexec.o: opcode.h
regexec.o: perl.h
regexec.o: pp.h
regexec.o: proto.h
regexec.o: regcomp.h
regexec.o: regexec.c
regexec.o: regexp.h
regexec.o: sv.h
regexec.o: unixish.h
regexec.o: util.h
gv.o: EXTERN.h
gv.o: av.h
gv.o: config.h
gv.o: cop.h
gv.o: embed.h
gv.o: form.h
gv.o: gv.c
gv.o: gv.h
gv.o: handy.h
gv.o: hv.h
gv.o: op.h
gv.o: opcode.h
gv.o: perl.h
gv.o: pp.h
gv.o: proto.h
gv.o: regexp.h
gv.o: sv.h
gv.o: unixish.h
gv.o: util.h
sv.o: EXTERN.h
sv.o: av.h
sv.o: config.h
sv.o: cop.h
sv.o: embed.h
sv.o: form.h
sv.o: gv.h
sv.o: handy.h
sv.o: hv.h
sv.o: op.h
sv.o: opcode.h
sv.o: perl.h
sv.o: perly.h
sv.o: pp.h
sv.o: proto.h
sv.o: regexp.h
sv.o: sv.c
sv.o: sv.h
sv.o: unixish.h
sv.o: util.h
toke.o: EXTERN.h
toke.o: av.h
toke.o: config.h
toke.o: cop.h
toke.o: embed.h
toke.o: form.h
toke.o: gv.h
toke.o: handy.h
toke.o: hv.h
toke.o: keywords.h
toke.o: op.h
toke.o: opcode.h
toke.o: perl.h
toke.o: perly.h
toke.o: pp.h
toke.o: proto.h
toke.o: regexp.h
toke.o: sv.h
toke.o: toke.c
toke.o: unixish.h
toke.o: util.h
util.o: EXTERN.h
util.o: av.h
util.o: config.h
util.o: cop.h
util.o: embed.h
util.o: form.h
util.o: gv.h
util.o: handy.h
util.o: hv.h
util.o: op.h
util.o: opcode.h
util.o: perl.h
util.o: pp.h
util.o: proto.h
util.o: regexp.h
util.o: sv.h
util.o: unixish.h
util.o: util.c
util.o: util.h
usersub.o: EXTERN.h
usersub.o: av.h
usersub.o: config.h
usersub.o: cop.h
usersub.o: embed.h
usersub.o: form.h
usersub.o: gv.h
usersub.o: handy.h
usersub.o: hv.h
usersub.o: op.h
usersub.o: opcode.h
usersub.o: perl.h
usersub.o: pp.h
usersub.o: proto.h
usersub.o: regexp.h
usersub.o: sv.h
usersub.o: unixish.h
usersub.o: usersub.c
usersub.o: util.h
mg.o: EXTERN.h
mg.o: av.h
mg.o: config.h
mg.o: cop.h
mg.o: embed.h
mg.o: form.h
mg.o: gv.h
mg.o: handy.h
mg.o: mg.c
mg.o: hv.h
mg.o: op.h
mg.o: opcode.h
mg.o: perl.h
mg.o: pp.h
mg.o: proto.h
mg.o: regexp.h
mg.o: sv.h
mg.o: unixish.h
mg.o: util.h
Makefile: Makefile.SH config.sh ; /bin/sh Makefile.SH
makedepend: makedepend.SH config.sh ; /bin/sh makedepend.SH
h2ph: h2ph.SH config.sh ; /bin/sh h2ph.SH
# WARNING: Put nothing here or make depend will gobble it up!
