OCAMLC=ocamlc
OCAMLOPT=ocamlopt
OCAMLDEP=ocamldep

INCLUDES=
OCAMLFLAGS=$(INCLUDES)
OCAMLOPTFLAGS=$(INCLUDES)

PROG1_OBJS=mod1.cmo mod2.cmo mod3.cmo

prog1: $(PROG1_OBJS)
	$(OCAMLC) -o prog1 $(OCAMLFLAGS) $(PROG1_OBJS)

PROG2_OBJS=mod4.cmx mod5.cmx

prog2: $(PROG2_OBJS)
	$(OCAMLOPT) -o prog2 $(OCAMLOPTFLAGS) $(PROG2_OBJS)

# common rules

.SUFFIXES: .ml .mli .cmo .cmi .cmx

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

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

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

# clean up

clean:
	rm -f prog1 prog2
	rm -f *.cm[iox]

# dependencies

depend:
	$(OCAMLDEP) $(INCLUDES) *.mli *.ml > .depend

include .depend