PP_SYNTAX = $(CAMLP4) -parser oq -parser op -parser pa_extend.cmo pr_dump.cmo
PP = $(PP_SYNTAX)
OCAMLDEPFLAGS += -pp "$(PP)"
OCAMLINCLUDES += +camlp4
OCAMLPPFLAGS = -pp "$(PP)"
DOC_DIR = ../doc/html/
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 \
  $(if $(NATIVE_ENABLED), pa_infix.cmxs pa_do.cmxs pa_do_nums.cmxs)

# Syntax extensions can only used when compiled to bytecode for now;
# make sure it is active
BYTE_ENABLED = true

PA_INFIX = pa_infix

PA_DO = pa_do

FILES[] =
  macro
  delimited_overloading
  std
  monad

PA_DO_NUMS = pa_do_nums

section
  OCAMLFLAGS = -for-pack Pa_do $(OCAMLFLAGS)
  foreach(f, $(FILES))
    $(f).cmi:
    $(f).cmo:
    $(f).cmx:
    $(f)$(EXT_OBJ):

all: $(OCamlPackage $(PA_DO), $(FILES)) \
  $(addsuffix .cmo, $(PA_DO_NUMS) $(PA_INFIX)) \
  $(if $(NATIVE_ENABLED), $(addsuffix .cmxs, $(PA_DO_NUMS) $(PA_INFIX))) \
  $(OCamlLibrary pa_do_top, pa_do_top)

.DEFAULT: all

doc:
  $(if not $(test -e $(DOC_DIR)), mkdir -p $(DOC_DIR))
  $(OCAMLDOC) -html -d $(DOC_DIR) $(PREFIXED_OCAMLINCLUDES) \
    $(glob *.mli)

META: META.in
  section
    stdout = $(fopen $"$@", w)
    fsubst($(fopen $<, r))
    case $"@PACKAGE_VERSION@" g
      value $(VERSION)

install: META $(INSTALL_FILES)
  ocamlfind install $(INSTALL_FLAGS) $(PA_DO) $^

uninstall:
  ocamlfind remove $(INSTALL_FLAGS) $(PA_DO)

clean:
  rm -f $(glob *~ *.annot *.cmi *.cmo *.cma *.cmx *.cmxs *.cmxa *.o *.a *.omc)
