#"C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
#OCAMLC=ocamlcp
OCAMLC=ocamlc
OCAMLOPT=ocamlopt
OCAMLDEP=ocamldep
INCLUDES=                # all relevant -I options here
OCAMLFLAGS=$(INCLUDES) #-thread 
OCAMLOPTFLAGS=$(INCLUDES) #-thread -p for profiling
OCAMLDEPFLAGS=$(INCLUDES)

PROG3_OBJS= typ.cmo env.cmo io.cmo value.cmo pattern.cmo action.cmo process.cmo subrecord.cmo substore.cmo choice.cmo species.cmo imap.cmo record.cmo store.cmo definition.cmo environment.cmo heap.cmo term.cmo simulator.cmo parser.ml lexer.ml main.cmo

PROG4_OBJS= typ.cmx env.cmx io.cmx value.cmx pattern.cmx action.cmx process.cmx subrecord.cmx substore.cmx choice.cmx  species.cmx imap.cmx record.cmx store.cmx definition.cmx environment.cmx heap.cmx term.cmx simulator.cmx parser.ml lexer.ml main.cmx

spimocaml: $(PROG3_OBJS)
	$(OCAMLC) -o spim.ocaml $(OCAMLFLAGS) $(PROG3_OBJS)

spim: $(PROG4_OBJS)
	$(OCAMLOPT) -o spim.exe $(OCAMLOPTFLAGS) $(PROG4_OBJS)

# Common rules
.SUFFIXES: .ml .mli .cmo .cmi .cmx .mly .mll

.mly.ml: 
	ocamlyacc $< 

.mll.ml: 
	ocamllex $<

.ml.cmo:
	$(OCAMLC) $(OCAMLFLAGS) -c $<

.mli.cmi:
	$(OCAMLC) $(OCAMLFLAGS) -c $<

.ml.cmx:
	$(OCAMLOPT) $(OCAMLOPTFLAGS) -c $<

# Visual Studio environment variables
vstudio:
	"C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"

# Clean up
clean:
	rm -f *.o
	rm -f *.obj
	rm -f *.cm[iox]

# Dependencies
depend:
	$(OCAMLDEP) $(OCAMLDEPFLAGS) -pp camlp4o *.mli *.ml > .depend
	ocamldot -fullgraph .depend > depend.dot
	ocamldot -fullgraph -r Simulator .depend > simulator.dot

include .depend

