CAMLFLAGS = -I ../lib
CAMLOPTFLAGS = -I ../lib

%.cmi: %.mli
	ocamlc $(CAMLFLAGS) -c $<

%.cmx: %.ml %.cmi
	ocamlopt $(CAMLOPTFLAGS) -c $<

%.cmo: %.ml %.cmi
	ocamlc $(CAMLFLAGS) -c $<

%.o: %.c
	ocamlopt $(CAMLOPTFLAGS) -c $<

MLSRCS = movetable.ml board.ml features.ml othello.ml \
	 machine.ml ios.ml iosPlay.ml
CSRCS = client.c cios.c

CMI = $(MLSRCS:.ml=.cmi)
CMO = $(MLSRCS:.ml=.cmo)
CMX = $(MLSRCS:.ml=.cmx)
COBJS = $(CSRCS:.c=.o)

LIBCMO = xPrelude.cmo xArray.cmo xList.cmo pQueue.cmo 
LIBCMX = $(LIBCMO:.cmo=.cmx)



all: clean boardBench

boardBench: movetable.cmx board.cmx boardBench.cmx
	ocamlopt $(CAMLOPTFLAGS) -o $@ unix.cmxa $(LIBCMX) $^ -cclib -lunix

boardBenchc: movetable.cmo board.cmo boardBench.cmo
	ocamlc -custom $(CAMLFLAGS) -o $@ unix.cma $(LIBCMO) $^ -cclib -lunix

othello: $(COBJS) $(CMX) main.cmx
	ocamlopt $(CAMLOPTFLAGS) -o $@ unix.cmxa $(LIBCMX) $^ -cclib -lunix

othelloc: $(COBJS) $(CMO) main.cmo
	ocamlc -custom $(CAMLFLAGS) -o $@ unix.cma $(LIBCMO) $^ -cclib -lunix

boardtop: $(COBJS) $(CMO) boardBench.cmo
	ocamlmktop -custom $(CAMLFLAGS) -o $@ unix.cma $(LIBCMO) $^ -cclib -lunix


clean:
	rm -f *.cmx *.cmi *.cmo *.o a.out core

dep:
	ocamldep -I ../lib *.ml *.mli > .depend

ifeq (.depend,$(wildcard .depend))
include .depend
endif
