include Makefile.config

PACKAGES = extlib,lwt,lwt.extra,ocsigenserver,eliom.server.duce,tyxml.duce,calendar,magic,textile,textile.html,polebrush,polebrush.html$(OPTPACKAGES)
FILES = duce_printer.ml utils.ml highlight.ml sitemap_schema.ml atom_schema.ml io.ml markup.ml parsercomb.ml vcs.ml sitemap.ml atom.ml cache.ml html.ml common.ml

NAME = gikia-common
VERSION := $(shell head -n 1 VERSION)
CAMLC   = ocamlducefind ocamlc -thread $(DEBUG) $(LIB)
CAMLOPT = ocamlducefind ocamlopt -thread $(DEBUG) $(LIB)
CAMLDOC = ocamlducefind ocamldoc $(LIB)
CAMLDEP = ocamlducefind ocamldep
LIB = -package $(PACKAGES)

OBJS    = $(FILES:.ml=.cmo)
OPTOBJS = $(FILES:.ml=.cmx)

CMA  = $(NAME).cma
CMXA = $(NAME).cmxa
CMXS = $(NAME).cmxs

all: byte native shared

META: META.in VERSION
	cp $< $@
	sed "s/_NAME_/$(NAME)/" -i $@
	sed "s/_VERSION_/$(VERSION)/" -i $@
	sed "s/_REQUIRES_/$(PACKAGES)/" -i $@
	sed "s/_BYTE_/$(CMA)/" -i $@
	sed "s/_NATIVE_/$(CMXA)/" -i $@
	sed "s/_SHARED_/$(CMXS)/" -i $@

byte:   depend META $(CMA)
native: depend META $(CMXA)
shared: depend META $(CMXS)

highlight.ml: highlight.in.ml highlight.stub.ml
ifeq "$(CAMLHIGHLIGHT)" "YES"
	ln -f highlight.in.ml $@
else
	ln -f highlight.stub.ml $@
endif

cache.ml: cache.in.ml cache.stub.ml
ifeq "$(MEMCACHE)" "YES"
	ln -f cache.in.ml $@
else
	ln -f cache.stub.ml $@
endif

$(CMA): $(OBJS)
	$(CAMLC) -a -o $@ $(OBJS)

$(CMXA): $(OPTOBJS)
	$(CAMLOPT) -a -o $@ $(OPTOBJS)

$(CMXS): $(OPTOBJS)
	$(CAMLOPT) -shared -o $@ $(OPTOBJS)

install:
	ocamlfind install $(NAME) META $(CMA) $(CMXA) $(CMXS) *.cmi *.cma *.a
	mkdir -p $(PREFIX)/share/$(NAME)
	install -m 644 share/* $(PREFIX)/share/$(NAME)/

uninstall:
	ocamlfind remove $(NAME)
	rm -rf $(PREFIX)/share/$(NAME)

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

.PHONY: doc

.ml.cmo:
	$(CAMLC) $(PP) -c $<
.mli.cmi:
	$(CAMLC) -c $<
.ml.cmx:
	$(CAMLOPT) $(PP) -c $<

doc:
	-mkdir -p doc
	$(CAMLDOC) -d doc -html *.mli

clean:
	-rm -f *.cm[ioxa] *.cmx[as] *.o *.a *~
	-rm -f .depend META
	-rm -rf doc
	-rm -f highlight.ml cache.ml

depend: .depend

.depend: $(FILES)
	$(CAMLDEP) $(PP) $(LIB) $(FILES:.ml=.mli) $(FILES) > .depend

FORCE:

-include .depend
