# CoCaml makefile
#
# targets are:
#
# all -- rebuild the project (default)
# clean -- remove all objects and executables

export SHELL = /bin/bash
export PATH = $$PATH:/bin:/usr/local/bin

SOURCES = util.ml ast.ml Types/ast_types.ml \
  Parser/parser.mli Parser/lexer.ml Parser/parser.ml \
  environment.ml eval.ml \
  Types/equations_types.ml Types/inference_types.ml \
  natives.ml repl.ml 

#.PHONY: all
all: cocaml.exe

#.PHONY: clean
clean:
	rm -f cocaml.exe cocaml.cma
	rm -f Parser/parser.ml Parser/parser.mli Parser/lexer.ml
	for X in . Parser Types; do \
      for Y in cmo cmi output; do \
        rm -f $$X/*.$$Y; \
      done; \
    done

cocaml.exe: $(SOURCES)
	ocamlc -a -o cocaml.cma -g -I Parser -I Types str.cma $(SOURCES)
	ocamlc -o cocaml.exe str.cma cocaml.cma cocaml.ml

Parser/parser.mli Parser/parser.ml: Parser/parser.mly
	ocamlyacc -v Parser/parser.mly

Parser/lexer.ml: Parser/lexer.mll Parser/parser.ml
	ocamllex Parser/lexer.mll
