VERSION=2.4b
GHC = ghc
GHC_OPTS = #-Wall

GHC_OPTS += -iformats -iformats/haskell2 -iformats/haskell-gadt -iformats/xml -iformats/profile -iformats/java -iformats/java1.5 -iformats/cpp -iformats/c  -iformats/oz -iformats/ocaml -iformats/f-sharp -iformats/cpp_stl -iformats/c-sharp

#GHC_OPTS += -package util

GHCI = ghci

HUGS = hugs

BNFC = bnfc
BNFC_OPTS = -alex2

all: ParBNF.hs LexBNF.hs
	$(GHC) $(GHC_OPTS) --make CFTop -o bnfc
	strip bnfc
ghci:
	$(GHCI) $(GHC_OPTS) CFTop
hugs:
	$(HUGS) -P.:for-hugs:formats:formats/haskell2:formats/haskell-gadt:formats/java:formats/java1.5:formats/cpp:formats/c:: CFTop

%.hs : %.y
	happy -agc $<

%.hs : %.x
	alex -g $<

Par%.y Lex%.x : %.cf
	bnfc $<

frontend:
	$(BNFC) $(BNFC_OPTS) -m BNF.cf ; $(MAKE) -f makefile ; rm makefile

distr:
	rm -fr BNFC_$(VERSION)
	mkdir BNFC_$(VERSION)
	cvs export -d BNFC_$(VERSION) -rHEAD BNFC
	rm -rf BNFC_$(VERSION)/doc/* ; cp doc/LBNF-report.tex BNFC_$(VERSION)/doc/
	tar cvfz BNFC_$(VERSION).tgz BNFC_$(VERSION)

clean: 
	rm -f *.hi *.o *.y *.aux *.log *~ formats/haskell2/*.hi formats/haskell2/*.o formats/haskell2/*~ formats/*.hi formats/*.o formats/*~ formats/java/*.hi formats/java/*.o formats/java/*~ formats/java1.5/*.hi formats/java1.5/*.o formats/java1.5/*~ formats/cpp/*.hi formats/cpp/*.o formats/cpp/*~formats/cpp_stl/*.hi formats/cpp_stl/*.o formats/cpp_stl/*~ formats/c/*.hi formats/c/*.o formats/c/*~