#  Copyright     Digital Equipment Corporation & INRIA     1988, 1989
#  Last modified_on Fri Apr 28 18:52:55 GMT+2:00 1989 by herve
#  Assembly code for RS/6000 and SPARC added August 31, 1990, Hans-J. Boehm, Xerox PARC

CC = cc
LIB = BigNum.a
OBJECT = o/bn.o o/KerN.o o/bzf.o o/bz.o 
KERNH = h/BigNum.h 
CFLAGS = -c `cat .Version` -I./h -O #-g -pg
LKFLAGS = -O #-g

SENDMAIL=/usr/lib/sendmail
SENDMAILFLAGS=

# extra entries:
# all     - make all the staff
# tidy    - cleanup directories
# scratch - start from scratch

all: testKerN bztest bzbench newbzbench
	echo All is done !

tidy:
	-rm -f ,* .,* *~ *# .emacs_[0-9]* core a.out c/,* h/,* c/*# h/*# c/*~ h/*~
	-rm -f doc/,* doc/*~ doc/*# 
	-rm -f *.BAK c/*.BAK h/*.BAK doc/*.BAK *.CKP c/*.CKP h/*.CKP doc/*.CKP

scratch:tidy 
	-rm -f o/*.o

# build the BigNum library
$(LIB): o $(OBJECT)
	-rm -f $(LIB)
	ar cr $(LIB) $(OBJECT)
	ranlib $(LIB)

# build the directory o if doesn't already exist
o:
	mkdir o

# How to choose the machine dependante version. All produce KerN.o
o/KerN.o: c/KerN.c Makefile o
	echo "The Default is KerN written in C with digits on 32 bits"
	echo "-DDIGITon32BITS" >.Version
	make C32 CC=$(CC) CFLAGS="$(CFLAGS)"

C16: o scratch
	echo "-DDIGITon16BITS" >.Version
	$(CC) $(CFLAGS) c/KerN.c
	mv KerN.o o
	make CC=$(CC) CFLAGS="$(CFLAGS)"

C32: o scratch
	echo "-DDIGITon32BITS" >.Version
	$(CC) $(CFLAGS) c/KerN.c
	mv KerN.o o
	make CC=$(CC) CFLAGS="$(CFLAGS)"

68K: o scratch
	echo "-DDIGITon32BITS" >.Version
	as s/68KerN.s -o o/KerN.o
	make CC=$(CC) CFLAGS="$(CFLAGS)"
	
sparc: o scratch
	echo "-DDIGITon32BITS" >.Version
	$(CC) $(CFLAGS) -DASM_MULT_STEP c/KerN.c
	as -P -o sparcKerNassist.o s/sparcKerNassist.s
	ld -r -o o/KerN.o KerN.o sparcKerNassist.o
	rm KerN.o sparcKerNassist.o
	make CC=$(CC) CFLAGS="$(CFLAGS)"

rs6000: o scratch
	echo "-DDIGITon32BITS" >.Version
	$(CC) $(CFLAGS) -DASM_MULT_STEP c/KerN.c
	as -o rs6000KerNassist.o s/rs6000KerNassist.s
	ld -r -o o/KerN.o KerN.o rs6000KerNassist.o
	rm KerN.o rs6000KerNassist.o
	make CC=$(CC) CFLAGS="$(CFLAGS)"

vax: o scratch
	echo "-DDIGITon32BITS" >.Version
	as s/vaxKerN.s -o o/KerN.o
	make CC=$(CC) CFLAGS="$(CFLAGS)"

ns: o scratch
	echo "-DDIGITon32BITS" >.Version
	as s/nsKerN.s -o o/KerN.o
	make CC=$(CC) CFLAGS="$(CFLAGS)"

mips: o scratch
	echo "-DDIGITon32BITS" >.Version
	as s/mipsKerN.s -o o/KerN.o
	make CC=$(CC) CFLAGS="$(CFLAGS)"

# Level N
o/bn.o: c/bn.c $(KERNH) o
	$(CC) $(CFLAGS) c/bn.c
	mv bn.o o

# Level Z
o/bz.o: c/bz.c h/BigZ.h $(KERNH) o
	$(CC) $(CFLAGS) c/bz.c
	mv bz.o o

# Some functions build with BigZ
o/bzf.o: c/bzf.c h/BigZ.h $(KERNH) o
	$(CC) $(CFLAGS) c/bzf.c
	mv bzf.o o

# Tests Of KerN
testKerN: Makefile o/KerN.o o/testKerN.o
	$(CC) o/testKerN.o o/KerN.o $(LKFLAGS) -o testKerN

o/testKerN.o: c/testKerN.c $(KERNH) h/BntoBnn.h o
	$(CC) $(CFLAGS) c/testKerN.c
	mv testKerN.o o

# Tests Of BigZ
bztest: o/bztest.o $(LIB)
	$(CC) o/bztest.o $(LIB) $(LKFLAGS) -o bztest

o/bztest.o: c/bztest.c h/BigZ.h $(KERNH) o
	$(CC) $(CFLAGS) c/bztest.c
	mv bztest.o o

# bench tools
bzbench: o/bzbench.o $(LIB)
	$(CC) o/bzbench.o $(LIB) $(LKFLAGS) -o bzbench

o/bzbench.o: .Version c/bzbench.c h/BigZ.h $(KERNH) h/BntoBnn.h o
	$(CC) $(CFLAGS) c/bzbench.c
	mv bzbench.o o

newbzbench: o/newbzbench.o $(LIB)
	$(CC) o/newbzbench.o $(LIB) $(LKFLAGS) -o newbzbench

o/newbzbench.o: .Version c/newbzbench.c h/BigZ.h $(KERNH) h/BntoBnn.h o
	$(CC) $(CFLAGS) c/newbzbench.c
	mv newbzbench.o o

# documentation
doc: doc/bn.ps doc/bnf.ps 
docprl: doc/bnprl.ps

doc/bn.dvi: doc/bn.tex doc/bnbody.tex
	cd doc;\
	latex bn;\
	makeindex bn;\
	sed -e "s/\\item Bz/\\newpage \\Bz/g" < bn.ind > bn.index;\
	mv bn.index bn.ind;\
	latex bn;\
	cd ..

doc/bn.ps: doc/bn.dvi
	cd doc;\
	aptex -noprint bn;\
	mv aptex*.ps bn.ps;\
	cd ..

doc/bnf.dvi: doc/bnf.tex
	cd doc;\
	latex bnf;\
	cd ..

doc/bnf.ps: doc/bnf.dvi
	cd doc;\
	aptex -noprint bnf;\
	mv aptex*.ps bnf.ps;\
	cd ..

doc/bnprl.dvi: doc/bnprl.tex doc/bnbody.tex
	cd doc;\
	latex bnprl;\
	makeindex bnprl;\
	sed -e "s/\\item Bz/\\newpage \\Bz/g" < bnprl.ind > bnprl.index;\
	mv bnprl.index bnprl.ind;\
	latex bnprl;\
	cd ..

doc/bnprl.ps: doc/bnprl.dvi
	cd doc;\
	aptex -noprint bnprl;\
	mv aptex*.ps bnprl.ps;\
	cd ..

# build shell archives
shar: bignum01

bignum01: README Makefile \
      doc/bn.tex doc/bnbody.tex doc/bnf.tex doc/intro\
      c/KerN.c c/bn.c c/bz.c c/bzf.c \
      c/bzbench.c c/newbzbench.c c/bztest.c c/testKerN.c \
      h/BigNum.h h/BigZ.h h/BntoBnn.h \
      s/vaxKerN.s s/68KerN.s s/nsKerN.s s/68KerN.mot.s
	makekit -s90k -nbignum -t"Now do 'mkdir o; make'" \
            README Makefile\
            doc doc/bn.tex doc/bnbody.tex doc/bnf.tex doc/intro \
            c c/KerN.c c/bn.c c/bz.c c/bzf.c \
            c/bzbench.c c/newbzbench.c c/bztest.c c/testKerN.c \
            h h/BigNum.h h/BigZ.h h/BntoBnn.h \
            s s/vaxKerN.s s/68KerN.s s/nsKerN.s s/68KerN.mot.s

# send shell archives
USER=herve@decprl.dec.com
mail: bignum01 Makefile
	echo "From: herve@decprl.dec.com (Jean-Claude Herve)" >sendmail_header
	echo To: $(USER) >>sendmail_header
	cp sendmail_header tosend
	echo "Subject: BigNum package from Digital PRL" >>tosend
	sed -e "s/modified_on/modified_on/g" <doc/intro >>tosend
	$(SENDMAIL) $(SENDMAILFLAGS) $(USER) <tosend
	cp sendmail_header tosend
	echo "Subject: BigNum - Part 1" >>tosend
	echo "# Remove all text above and including this line." >>tosend 
	sed -e "s/modified_on/modified_on/g" <bignum01 >>tosend
	$(SENDMAIL) $(SENDMAILFLAGS) $(USER) <tosend
	cp sendmail_header tosend
	echo "Subject: BigNum - Part 2" >>tosend
	echo "# Remove all text above and including this line." >>tosend 
	sed -e "s/modified_on/modified_on/g" <bignum02 >>tosend
	$(SENDMAIL) $(SENDMAILFLAGS) $(USER) <tosend
	cp sendmail_header tosend
	echo "Subject: BigNum - Part 3 - end" >>tosend
	echo "# Remove all text above and including this line." >>tosend 
	sed -e "s/modified_on/modified_on/g" <bignum03 >>tosend
	$(SENDMAIL) $(SENDMAILFLAGS) $(USER) <tosend
	rm -f sendmail_header tosend bignum01 bignum02 bignum03

