-REQUIRES = http gdome2 gdome2-xslt threads pcre
+VERSION = 0.0.1
+DISTDIR = uwobo-$(VERSION)
+REQUIRES = http gdome2 gdome2-xslt pcre unix
COMMONOPTS = -package "$(REQUIRES)" -pp camlp4o
-OCAMLC = ocamlfind ocamlc $(COMMONOPTS) -thread
-OCAMLOPT = ocamlfind ocamlopt $(COMMONOPTS) -thread
-OCAMLDEP = ocamlfind ocamldep $(COMMONOPTS)
-MODULES = uwobo_styles uwobo_logger uwobo_engine uwobo
+OCAMLFIND = ocamlfind
+OCAMLC = $(OCAMLFIND) ocamlc $(COMMONOPTS)
+OCAMLOPT = $(OCAMLFIND) ocamlopt $(COMMONOPTS)
+OCAMLDEP = $(OCAMLFIND) ocamldep $(COMMONOPTS)
+OCAMLDOC = \
+ ocamldoc \
+ $(shell $(OCAMLFIND) query -i-format http) \
+ $(shell $(OCAMLFIND) query -i-format gdome2) \
+ $(shell $(OCAMLFIND) query -i-format gdome2-xslt) \
+ $(shell $(OCAMLFIND) query -i-format pcre) \
+ $(shell $(OCAMLFIND) query -i-format unix)
+MODULES = uwobo_common uwobo_styles uwobo_logger uwobo_engine
OBJS = $(patsubst %,%.cmo,$(MODULES))
OBJSOPT = $(patsubst %,%.cmx,$(MODULES))
-all: opt
+all: byte
byte: uwobo
opt: uwobo.opt
world: byte opt
$(OCAMLC) -c $<
uwobo.cmx: uwobo.ml
$(OCAMLOPT) -c $<
-uwobo: $(OBJS)
+uwobo: $(OBJS) uwobo.ml
$(OCAMLC) -linkpkg -o $@ $^
-uwobo.opt: $(OBJSOPT)
+uwobo.opt: $(OBJSOPT) uwobo.ml
$(OCAMLOPT) -linkpkg -o $@ $^
+uwobo.dot: *.ml *.mli
+ $(OCAMLDOC) -dot -o $@ $^
+
+distclean: clean
clean:
- rm -f *.cm[aiox] *.o uwobo{,.opt}
+ rm -f *.cm[aiox] *.o uwobo{,.opt,.dot}
+dist: distclean depend
+ mkdir $(DISTDIR)/
+ cp \
+ $(patsubst %, %.ml, $(MODULES)) \
+ $(patsubst %, %.mli, $(MODULES)) \
+ uwobo.ml \
+ Makefile .depend \
+ $(DISTDIR)/
+ tar cvzf $(DISTDIR).tar.gz $(DISTDIR)/
+ rm -rf $(DISTDIR)/
.PHONY: all byte opt world depend clean