# Lazy speculation and Staged future
#
# $Id$

OCAMLC=ocamlc
OCAMLOPT=ocamlopt

.SUFFIXES: .ml .mli .cmi .cmo .cmx .cmxa .dvi .pdf .ps .tex .eps .jpg .png .bbl

LIB=config.cmo server_comm.cmo wire.cmo fact.cmo album.cmo
LIBI=$(LIB:.cmo=.cmi) rpc_t.cmi

LIBCLIENT=future.cmo rpc_dsl.cmo
LIBCLIENTI=$(LIBCLIENT:.cmo=.cmi)


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

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

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


clean::
	rm -f *.cm[iox] *.[oa] *~ *.aux *.vrb

server : $(LIB) $(LIBI) server.ml
	$(OCAMLC) unix.cma $(LIB) -o $@ server.ml

clean::
	rm -f server

.PHONY: client_lib
client_lib : $(LIB) $(LIBI) $(LIBCLIENTI) $(LIBCLIENT)

fact_client: client_lib fact_client.ml
	$(OCAMLC) unix.cma $(LIB) $(LIBCLIENT) -o $@ $@.ml
	./$@

clean::
	rm -f fact_client

album_client: client_lib album_client.ml
	$(OCAMLC) unix.cma $(LIB) $(LIBCLIENT) -o $@ $@.ml
	./$@

clean::
	rm -f album_client


# Dependencies
rpc_t.cmi   : wire.cmi
future.cmi  : wire.cmi rpc_t.cmi
rpc_dsl.cmi : wire.cmi future.cmi

# Local rules
fact.cmo    : wire.cmi fact.ml
	$(OCAMLC) -c $(filter-out %.cmi,$^)
album.cmo    : wire.cmi album.ml
	$(OCAMLC) -c $(filter-out %.cmi,$^)
config.cmo    : config.ml
	$(OCAMLC) -c $(filter-out %.cmi,$^)




export BIBTEX := bibtex -min-crossrefs=9999

.tex.dvi:
# rm -f $(patsubst %.dvi,%.aux,$@)
	texi2dvi -b $< # && killall -USR1 xdvi.bin

.tex.pdf:
	texi2dvi -b --pdf $<

.pdf.ps:
	pdftops $< $@
