# Makefile for Zebu

SHELL = /bin/sh
LISP = /lisp/700-non-kanji/non-kanji
# You may have to customize the variables LISP CLPATH CLDE Lisp-compiler Lisp-ae LATEX bin
CLPATH = $(LISP)

# Common Lisp development environment
CLDE = lucid-de

# Compiler
Lisp-compiler = $(CLPATH)/$(CLDE)

# Common Lisp application environment
Lisp-ae = $(CLPATH)/lucid-ae

LATEX = latex

cl-compile = $(CLPATH)/$(CLDE) -n \
	-l COMPILE-ZEBU.lisp -quit -f 

# this works in GNU make, and not in HPUX
# in HPUX use: bin = `./machine`bin
bin = `./machine`bin
# with gnu make use bin := `./machine`bin
B = binary/

lisp-obj = $(B)zebu-package.$(bin) $(B)zebu-aux.$(bin) $(B)zmg-dom.$(bin) $(B)zebu-regex.$(bin) $(B)zebu-loader.$(bin) $(B)zebu-driver.$(bin) $(B)zebu-actions.$(bin) $(B)zebu-oset.$(bin) $(B)zebu-g-symbol.$(bin) $(B)zebu-loadgram.$(bin) $(B)zebu-generator.$(bin) $(B)zebu-lr0-sets.$(bin) $(B)zebu-empty-st.$(bin) $(B)zebu-first.$(bin) $(B)zebu-follow.$(bin) $(B)zebu-tables.$(bin) $(B)zebu-slr.$(bin) $(B)zebu-closure.$(bin) $(B)zebu-lalr1.$(bin) $(B)zebu-dump.$(bin) $(B)zebu-compile.$(bin) $(B)zebu-printers.$(bin)

all: ZEBU-init.lisp $(lisp-obj) Zebu-Compiler Zebu-Parser Zebu_intro TAGS

$(B)zebu-package.$(bin): zebu-package.lisp
	$(cl-compile)

$(B)zebu-aux.$(bin): zebu-aux.lisp
	$(cl-compile)

$(B)zmg-dom.$(bin): zmg-dom.lisp
	$(cl-compile)

$(B)zebu-regex.$(bin): zebu-regex.lisp
	$(cl-compile)

$(B)zebu-loader.$(bin): zebu-loader.lisp
	$(cl-compile)

$(B)zebu-driver.$(bin): zebu-driver.lisp
	$(cl-compile)

$(B)zebu-actions.$(bin): zebu-actions.lisp
	$(cl-compile)

$(B)zebu-oset.$(bin): zebu-oset.lisp
	$(cl-compile)

$(B)zebu-g-symbol.$(bin): zebu-g-symbol.lisp
	$(cl-compile)

$(B)zebu-loadgram.$(bin): zebu-loadgram.lisp
	$(cl-compile)

$(B)zebu-generator.$(bin): zebu-generator.lisp
	$(cl-compile)

$(B)zebu-lr0-sets.$(bin): zebu-lr0-sets.lisp
	$(cl-compile)

$(B)zebu-empty-st.$(bin): zebu-empty-st.lisp
	$(cl-compile)

$(B)zebu-first.$(bin): zebu-first.lisp
	$(cl-compile)

$(B)zebu-follow.$(bin): zebu-follow.lisp
	$(cl-compile)

$(B)zebu-tables.$(bin): zebu-tables.lisp
	$(cl-compile)

$(B)zebu-slr.$(bin): zebu-slr.lisp
	$(cl-compile)

$(B)zebu-closure.$(bin): zebu-closure.lisp
	$(cl-compile)

$(B)zebu-lalr1.$(bin): zebu-lalr1.lisp
	$(cl-compile)

$(B)zebu-dump.$(bin): zebu-dump.lisp
	$(cl-compile)


$(B)zebu-compile.$(bin): zebu-compile.lisp
	$(cl-compile)

$(B)zebu-printers.$(bin): zebu-printers.lisp
	$(cl-compile)

Zebu-Compiler: $(lisp-obj) ZEBU-init.lisp
	@echo "Making the Zebu Compiler"
	$(Lisp-compiler) -n \
-l "ZEBU-init.lisp" \
-e '(progn (zb::zebu-compiler)(setq *enter-top-level-hook* (function zb::compile-from-command-line)) (discard-source-file-info) (disksave "./Zebu-Compiler" :FULL-GC T :WRITABLE T :VERBOSE T) (quit))'

Zebu-Parser: $(lisp-obj) ZEBU-init.lisp
	@echo "Making the Zebu Parser"
	$(Lisp-ae) -n \
-l "ZEBU-init.lisp" \
-e '(progn (in-package "CL-USER") (zb::zebu) (discard-source-file-info))' \
-e '(progn (disksave "./Zebu-Parser" :FULL-GC T :WRITABLE T :VERBOSE T :restart-function (function zb::load-from-command-line)) (quit))'

Zebu_intro: doc/Zebu_intro.tex
	cd doc; $(LATEX) Zebu_intro; makeindex Zebu_intro.idx;\
	$(LATEX) Zebu_intro;\
	dvips Zebu_intro.dvi -o Zebu_intro.ps

TRANSLATE = /usr/local/bin/latex2html
tohtml = $(TRANSLATE) -no_reuse -address laubsch@cup.hp.com -auto_navigation -contents_in_navigation -index_in_navigation 

html:	doc/Zebu_intro.html

doc/Zebu_intro.html:	doc/Zebu_intro.tex
	$(tohtml) doc/Zebu_intro.tex

.PHONY: distclean
distclean:
	make clean
	@echo Deleting tab files in directory test and test/binary
	chmod 777 ./test
	rm -rf ./test/*.tab
	@echo Deleting binary files in directory test/binary
	rm -f ./test/binary/*.$(bin) 
	@echo Deleting binary files in directory test/binary
	rm -f ./binary/*

.PHONY: clean
clean:
	@echo Deleting domain files 
	find .  \( -name '[0-9]*-dom*' -o -name '*~' \) -type f -print -exec rm {} \;
	find ./test  \( -name '[0-9]*.lisp' -o -name '*-dom*.lisp' -o -name '*~' \) -type f -print -exec rm {} \;

TAGS:   $(lisp-obj) 
	make clean; etags -o TAGS *.lisp

tar:
	./Tar-zebu

dos:
	./winzebu