# Makefile for JACAL: Symbolic Mathematics System.
# Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Aubrey Jaffer.
# See the file "COPYING" for terms applying to this program

SHELL = /bin/sh
intro:
	@echo
	@echo "Welcome to JACAL.  To install, unpack this directory"
	@echo "where it will eventually reside.  You will also need"
	@echo "to install SLIB and have a Scheme Implementation"
	@echo "(both of which are available from the same vendor or"
	@echo "site as JACAL)."
	@echo
	@echo "Read \"README\" and \"jacal.info\" (or \"jacal.texi\")"
	@echo "to learn how to run and use JACAL."
	@echo
	@echo
	-make jacal.info
	echo scm -iql`pwd`/math.scm -ie"\"(math)\"" > jacal
	chmod +x jacal

VERSION = 1b0

include srcdir.mk
srcdir.mk: .. Makefile
	echo -e "srcdir = `pwd`/\n" > srcdir.mk
#Note: Used to make into "($dvidir)jacal.dvi" and "($dvidir)ratint.dvi"
#srcdir=$(HOME)/jacal/

prefix = /usr/local/
infodir = $(prefix)info/

jacal$(VERSION).info:	version.txi jacal.texi
	makeinfo jacal.texi --no-split -o jacal.info
	mv jacal.info jacal$(VERSION).info
jacal.info:	jacal/jacal.info jacal$(VERSION).info
	infobar jacal/jacal.info jacal$(VERSION).info jacal.info
info:	installinfo
installinfo:	$(infodir)jacal.info
$(infodir)jacal.info:	jacal.info
	cp -a jacal.info $(infodir)jacal.info
	install-info $(infodir)jacal.info $(infodir)dir
	-rm $(infodir)jacal.info.gz
infoz:	installinfoz
installinfoz:	$(infodir)jacal.info.gz
$(infodir)jacal.info.gz:	$(infodir)jacal.info
	gzip -f $(infodir)jacal.info

dvidir=../dvi/
dvi:	$(dvidir)jacal.dvi
$(dvidir)jacal.dvi:	version.txi jacal.texi $(dvidir)jacal.fn
#	cd $(dvidir);export TEXINPUTS=$(srcdir):;texi2dvi $(srcdir)jacal.texi
	-(cd $(dvidir);export TEXINPUTS=$(srcdir):;texindex jacal.??)
	cd $(dvidir);export TEXINPUTS=$(srcdir):;tex $(srcdir)jacal.texi
$(dvidir)jacal.fn:
	cd $(dvidir);export TEXINPUTS=$(srcdir):;tex $(srcdir)jacal.texi
xdvi:	$(dvidir)jacal.dvi
	xdvi -s 6 $(dvidir)jacal.dvi

htmldir=../public_html/
jacal_toc.html:	version.txi jacal.texi
	texi2html -split -verbose jacal.texi

jacal/jacal_toc.html:
#	cd jacal;make jacal_toc.html
	cd jacal;texi2html -split -verbose jacal.texi

html:	$(htmldir)jacal_toc.html
$(htmldir)jacal_toc.html:	jacal/jacal_toc.html jacal_toc.html Makefile
	hitch jacal/jacal_\*.html jacal_\*.html $(htmldir)

DOCdir=$(srcdir)/DOC/
dvis:	dvi ratint.dvi
ratint.dvi:	$(dvidir)ratint.dvi
$(dvidir)eqalign.sty:	$(DOCdir)eqalign.sty
	-ln -s $(DOCdir)eqalign.sty $(dvidir)eqalign.sty
$(dvidir)ratint.aux:	$(DOCdir)ratint.tex $(dvidir)eqalign.sty
	cd $(dvidir);latex $(DOCdir)ratint.tex
$(dvidir)ratint.dvi:	$(DOCdir)ratint.tex $(dvidir)eqalign.sty \
		$(dvidir)ratint.aux
	cd $(dvidir);latex $(DOCdir)ratint.tex

#### Stuff for maintaining JACAL below ####

ver = $(VERSION)
version.txi:	Makefile
	echo @set JACALVERSION $(VERSION) > version.txi
	echo @set JACALDATE `date +"%B %Y"` >> version.txi

cfiles = scl.scm math.scm modeinit.scm debug.scm view.scm toploads.scm
sfiles = types.scm func.scm poly.scm elim.scm \
	vect.scm ext.scm norm.scm hist.scm sexp.scm \
	grammar.scm unparse.scm builtin.scm info.scm \
	tensor.scm ff.scm combin.scm hensel.scm # parse.scm
gfiles = English.scm
mfiles = ANNOUNCE README COPYING HELP Makefile ChangeLog \
	demo test.math rw.math
allfiles = $(mfiles) $(sfiles) $(cfiles) $(gfiles) jacal.texi jacal.info
#dfiles Document internals of Jacal.
dfiles = algdenom grammar history lambda ratint.tex # eqalign.sty
# Common Lisp not currently supported.
lfiles = scl.lisp math.lisp compilem.lisp

lint:	$(cfiles) $(sfiles) $(gfiles)
	sclint $(cfiles) $(sfiles) $(gfiles)

makedev = make -f $(HOME)/makefile.dev
CHPAT=$(HOME)/bin/chpat
dest = $(HOME)/dist/
temp/jacal:	$(allfiles)
	-rm -rf temp
	mkdir temp
	mkdir temp/jacal
	ln  $(allfiles) temp/jacal
	mkdir temp/jacal/DOC
	cd DOC; ln $(dfiles) ../temp/jacal/DOC

infotemp/jacal:	jacal.info
	-rm -rf infotemp
	mkdir infotemp
	mkdir infotemp/jacal
	ln jacal.info jacal.info-* infotemp/jacal
#For change-barred HTML.
jacal:
	unzip -a $(dest)jacal*.zip

distinfo:	$(dest)jacal.info.zip
$(dest)jacal.info.zip:	infotemp/jacal
	$(makedev) TEMP=infotemp/ DEST=$(dest) PROD=jacal ver=.info zip
	rm -rf infotemp

release:	dist
	cp $(srcdir)ANNOUNCE $(htmldir)JACAL_ANNOUNCE
	rsync -v $(htmldir)JACAL.html $(htmldir)JACAL_ANNOUNCE martigny.ai.mit.edu:public_html/
	rsync -v $(dest)README $(dest)jacal$(VERSION).zip martigny.ai.mit.edu:dist/
#	upload $(dest)README $(dest)jacal$(VERSION).zip ftp.gnu.org:gnu/jacal/
#	$(MAKE) indiana
indiana:
	upload $(dest)jacal$(VERSION).zip ftp@ftp.cs.indiana.edu:/pub/scheme-repository/incoming
	echo -e \
	'I have uploaded jacal$(VERSION).zip to ftp.cs.indiana.edu:/pub/scheme-repository/incoming\n' \
	'for placement into ftp.cs.indiana.edu:/pub/scheme-repository/code/num/' \
	 | mail -s 'JACAL upload' -b jaffer scheme-repository-request@cs.indiana.edu

postnews:
	echo -e "Newsgroups: sci.math.symbolic,comp.lang.scheme\n" \
	| cat - ANNOUNCE | inews -h -O -S -D \
	-f "announce@docupress.com (Aubrey Jaffer)" \
	 -t "JACAL$(VERSION) Released" -d world

upzip:	$(HOME)/pub/jacal.zip
	rsync -v $(HOME)/pub/jacal.zip martigny.ai.mit.edu:pub/

dist:	$(dest)jacal$(VERSION).zip
$(dest)jacal$(VERSION).zip:	temp/jacal
	$(makedev) DEST=$(dest) PROD=jacal ver=$(VERSION) zip
	cvs tag -F jacal$(VERSION)
shar:	jacal.shar
jacal.shar:	temp/jacal
	$(makedev) PROD=jacal shar
dclshar:	jacal.com
com:	jacal.com
jacal.com:	temp/jacal
	$(makedev) PROD=jacal com
zip:	jacal.zip
jacal.zip:	temp/jacal
	$(makedev) PROD=jacal zip
doszip:	/c/scm/dist/jacal$(VERSION).zip
/c/scm/dist/jacal$(VERSION).zip:	temp/jacal
	$(makedev) DEST=/c/scm/dist/ PROD=jacal ver=$(VERSION) zip
	zip -d /c/scm/dist/jacal$(VERSION).zip jacal/jacal.info
pubzip:	temp/jacal
	$(makedev) DEST=$(HOME)/pub/ PROD=jacal zip

diffs:	pubdiffs
pubdiffs:	temp/jacal
	$(makedev) DEST=$(HOME)/pub/ PROD=jacal pubdiffs
distdiffs:	temp/jacal
	$(makedev) DEST=$(dest) PROD=jacal ver=$(ver) distdiffs

new:
	echo `date` \ Aubrey Jaffer \ \<`whoami`@`hostname`\>> change
	echo>> change
	echo \	\* toploads.scm \(*jacal-version*\): Bumped from $(VERSION) to $(ver).>>change
	echo>> change
	cat ChangeLog >> change
	mv -f change ChangeLog
	$(CHPAT) jacal$(VERSION) jacal$(ver) ANNOUNCE ../scm/ANNOUNCE \
		$(htmldir)README.html ../dist/README \
		/c/scm/dist/install.bat /c/scm/dist/makefile \
		/c/scm/dist/mkdisk.bat
	$(CHPAT) $(VERSION) $(ver) README toploads.scm Makefile \
		$(htmldir)JACAL.html
	cvs commit -m '(*jacal-version*): Bumped from $(VERSION) to $(ver).'
	cvs tag -F jacal$(ver)

tags:	$(allfiles)
	etags $(sfiles) $(cfiles) $(gfiles) jacal.texi $(mfiles)

clean:
	-rm -f *~ *.bak *.orig *.rej core a.out *.o \#*
	-rm -rf *temp
distclean:	realclean
realclean:
	-rm -f *~ *.bak *.orig *.rej TAGS core a.out *.o \#*
	-rm -f jacal.info*
	-rm -rf *temp
realempty:	temp/jacal
	-rm -f $(allfiles)
	cd DOC; rm -f $(dfiles)
