ROOT=..
include $(ROOT)/Makefile.conf

PP = $(CAMLP4) -parser oq -parser op -parser pa_extend.cmo pr_dump.cmo
OCAMLINCLUDES += +camlp4
DOC_DIR = $(ROOT)/doc/html/
# Native code versions must be installed if and only if make opt was
# called previously (i.e. the files exist):
INSTALL_FILES = macro.mli pa_infix.mli delimited_overloading.mli std.mli \
  pa_do_nums.mli pa_infix.cmi pa_do.cmi pa_do_nums.cmi pa_do_top.cmi \
  pa_infix.cmo pa_do.cmo pa_do_nums.cmo pa_do_top.cma \
  $(wildcard pa_infix.cmx pa_do.cmx pa_do_nums.cmx)

.PHONY: all opt byte native
all: byte
opt: native
byte: pa_do.cmo pa_do_nums.cmo pa_infix.cmo pa_do_top.cma
native: pa_do.cmx pa_do_nums.cmx pa_infix.cmx

PA_DO_SOURCES = macro delimited_overloading std monad

$(PA_DO_SOURCES:=.cmi) $(PA_DO_SOURCES:=.cmo): OCAMLC_FLAGS += -for-pack Pa_do
$(PA_DO_SOURCES:=.cmx): OCAMLOPT_FLAGS += -for-pack Pa_do

pa_do.cmo: $(PA_DO_SOURCES:=.cmo)
	$(OCAMLC) -pack -o $@ $^

pa_do.cmx: $(PA_DO_SOURCES:=.cmx)
	$(OCAMLOPT) -pack -o $@ $^

.PHONY: doc
doc:
	echo if [ ! -d $(DOC_DIR) ]; then $(MKDIR) -p $(DOC_DIR)
	$(OCAMLDOC) -html -d $(DOC_DIR) $(OCAMLINCLUDES) $(wildcard *.mli)

META: META.in
	sed -e "s/@PACKAGE_VERSION@/$(VERSION)/" $< > $@

.PHONY: install uninstall
# TODO: copy HTML doc
install: META $(INSTALL_FILES)
	ocamlfind install $(PACKAGE) $^

uninstall:
	ocamlfind remove $(PACKAGE)

include $(ROOT)/Makefile.ocaml