VERSION = 2.11
ARCH = `bash -c ./getarch.sh`
DATE = `date`

INSTALL = install

ifeq ($(OSTYPE),cygwin)
 EXT = .exe
else
 EXT = 
endif

.EXPORT_ALL_VARIABLES:

prefix = /usr/local
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
datadir = ${prefix}/share
magdir = ${datadir}/mag
docdir = ${datadir}/doc/mag

all: bin/magdcalc$(EXT) doc/manual.dvi doc/manual.ps doc/manual.pdf
profile: bin/magdcalcp$(EXT)

FORCE: 

src/Version.hs: FORCE
	echo "module Version(versionstr,archstr,datestr) where" > src/Version.hs
	echo "versionstr = \"$(VERSION)\"" >> src/Version.hs
	echo "archstr = \"$(ARCH)\"" >> src/Version.hs
	echo "datestr = \"$(DATE)\"" >> src/Version.hs	

doc/version.tex: FORCE
	echo "\def\magversion{$(VERSION)}" > doc/version.tex
	echo "\def\magarch{$(ARCH)}" >> doc/version.tex
	echo "\def\magdate{$(DATE)}" >> doc/version.tex

src/magdcalc$(EXT) src/magdcalcp$(EXT): src/%: FORCE
	+cd src && make $*

bin/magdcalc$(EXT) bin/magdcalcp$(EXT): bin/%: src/%
	cp src/$* bin/
	strip bin/$*

doc/manual.dvi doc/manual.ps doc/manual.pdf: doc/%: FORCE
	cd doc && make $*

install: all
	$(INSTALL) -d $(bindir)
	$(INSTALL) -d $(datadir)
	$(INSTALL) -d $(magdir)
	$(INSTALL) bin/magdcalc$(EXT) $(bindir)
	$(INSTALL) bin/mag $(bindir)
	$(INSTALL) examples/* $(magdir)
	$(INSTALL) doc

tests: bin/magdcalc$(EXT)
	cd bin && ./test abstracts fastabstracts
	cd bin && ./test alphabeta fastflipeval
	cd bin && ./test atiguous fastmas
	cd bin && ./test decorate fastdec
	cd bin && ./test fib fastfib
	cd bin && ./test horner fasthorner
	cd bin && ./test llp fastllp1 fastllp2
	cd bin && ./test mindepth fastmd
	cd bin && ./test mss fastmss
	cd bin && ./test postorder fastpost
	cd bin && ./test reverse fastrev
	cd bin && ./test steep faststeep
	cd bin && ./test sumsq fastsumsq

update-tests: bin/magdcalc$(EXT)
	cd bin && ./updatetest abstracts fastabstracts
	cd bin && ./updatetest alphabeta fastflipeval
	cd bin && ./updatetest atiguous fastmas
	cd bin && ./updatetest decorate fastdec
	cd bin && ./updatetest fib fastfib
	cd bin && ./updatetest horner fasthorner
	cd bin && ./updatetest llp fastllp1 fastllp2
	cd bin && ./updatetest mindepth fastmd
	cd bin && ./updatetest mss fastmss
	cd bin && ./updatetest postorder fastpost
	cd bin && ./updatetest reverse fastrev
	cd bin && ./updatetest steep faststeep
	cd bin && ./updatetest sumsq fastsumsq

clean:
	rm -f *~ src.tar 
	cd src ; make clean ; cd ..
	cd doc ; make clean ; cd ..
	rm -f bin/magdcalc$(EXT) bin/magdcalcp$(EXT)
	rm -rf mag-$(VERSION)

distclean: clean
	rm -rf dists

srcdir:
	if [ ! -d dists ]; then mkdir dists; fi
	mkdir mag-$(VERSION)
	mkdir mag-$(VERSION)/src
	cd src ; make srccopy ; cd ..
	cp Makefile mag-$(VERSION)/
	cp getarch.sh mag-$(VERSION)/
	cp README mag-$(VERSION)/
	cp LICENSE mag-$(VERSION)/
	mkdir mag-$(VERSION)/bin
	cp bin/mag mag-$(VERSION)/bin/
	cp bin/runtest mag-$(VERSION)/bin/
	cp bin/updatetest mag-$(VERSION)/bin/
	cp bin/test mag-$(VERSION)/bin/
	mkdir mag-$(VERSION)/examples
	cp -R examples/*.p mag-$(VERSION)/examples/
	cp -R examples/*.output mag-$(VERSION)/examples/
	mkdir mag-$(VERSION)/doc
	cp doc/manual.tex mag-$(VERSION)/doc/
	cp doc/mag.bib mag-$(VERSION)/doc/
	cp doc/Makefile mag-$(VERSION)/doc/
	cp doc/version.tex mag-$(VERSION)/doc/

srctargz:
	tar -cvf - mag-$(VERSION) | gzip > dists/mag-$(VERSION)-src.tar.gz

bintargz:
	cp bin/magdcalc$(EXT) mag-$(VERSION)/bin/
	cp doc/manual.dvi mag-$(VERSION)/doc/
	cp doc/manual.pdf mag-$(VERSION)/doc/
	cp doc/manual.ps mag-$(VERSION)/doc/
	tar -cvf - mag-$(VERSION) | gzip > dists/mag-$(VERSION)-$(ARCH).tar.gz
	

rmsrcdir:
	rm -rf mag-$(VERSION)	

srcdist: srcdir srctargz rmsrcdir

bindist: all srcdir bintargz rmsrcdir

dist: all srcdir srctargz bintargz rmsrcdir 

