DEBUG = 1

include config.make

OCAML_LIB_OBJ  = nano \
                 nanoLex \
                 nanoParse 
OCAML_EXE_OBJ  = $(OCAML_LIB_OBJ) main
OCAML_EXE      = nanoml

MODULES        = $(OCAML_EXE_OBJ) 
MLYS           = nanoParse.mly 
MLLS           = nanoLex.mll 

#TODO           = $(OCAML_EXE).top $(OCAML_EXE).byte $(OCAML_EXE).opt
TODO           = $(OCAML_EXE).top $(OCAML_EXE).byte

all:: $(TODO)

mactop: $(OCAML_EXE).byte
	ocamlmktop -o nanoml.top -custom nano.cmo nanoLex.cmo nanoParse.cmo main.cmo

clean: default-clean

distclean: clean
	rm -f *.cmi *.annot $(TODO) $(MLYS:%.mly=%.mli) $(MLYS:%.mly=%.ml) \
	$(MLLS:%.mll=%.ml)

turnin: distclean
	zip pa4-soln.zip *
	turnin -c cs130s -p pa4 pa4-soln.zip

.SECONDARY: $(MLYS:%.mly=%.mli) $(MLYS:%.mly=%.ml) $(MLLS:%.mll=%.ml)

.PHONY : all clean distclean

# Implicit rules

include rules.make

# Dependencies

-include $(MODULES:%=.%.ml.depend) $(MODULES:%=.%.mli.depend)
