Bumped version for release and prepared and fixed documentation.
[ocaml-csv.git] / Makefile
1 # $Id: Makefile,v 1.7 2005-11-25 14:08:46 rich Exp $
2
3 PACKAGE         := ocaml-csv
4 VERSION         := 1.1.0
5
6 OCAMLC          := ocamlc
7 OCAMLCINCS      :=
8 OCAMLCFLAGS     := -w s -g
9 OCAMLCLIBS      :=
10
11 OCAMLOPT        := ocamlopt
12 OCAMLOPTINCS    := $(OCAMLCINCS)
13 OCAMLOPTFLAGS   := -w s
14 OCAMLOPTLIBS    :=
15
16 OBJS            := csv.cmo
17 XOBJS           := $(OBJS:.cmo=.cmx)
18
19 OCAMLDOCFLAGS := -html -stars -sort $(OCAMLCINCS)
20
21 all: csv.cma csv.cmxa example csvtool
22
23 csv.cma: $(OBJS)
24         $(OCAMLC) $(OCAMLCFLAGS) -a -o $@ $^
25
26 csv.cmxa: $(XOBJS)
27         $(OCAMLOPT) $(OCAMLOPTFLAGS) -a -o $@ $^
28
29 example: csv.cma example.ml
30         $(OCAMLC) $^ -o $@
31
32 test:   csv.cma test.ml
33         $(OCAMLC) $^ -o $@
34         ./test
35
36 csvtool: csv.cmxa csvtool.ml
37         $(OCAMLOPT) $^ -o $@
38
39 # Common rules for building OCaml objects.
40
41 .mli.cmi:
42         $(OCAMLC) $(OCAMLCFLAGS) $(OCAMLCINCS) -c $<
43 .ml.cmo:
44         $(OCAMLC) $(OCAMLCFLAGS) $(OCAMLCINCS) -c $<
45 .ml.cmx:
46         $(OCAMLOPT) $(OCAMLOPTFLAGS) $(OCAMLOPTINCS) -c $<
47
48 .SUFFIXES:      .cmo .cmi .cmx .ml .mli
49
50 # Clean.
51
52 clean:
53         rm -f *.cmi *.cmo *.cmx *.cma *.cmxa *.o *.a *~ core csvtool example
54
55 # Dependencies.
56
57 depend: .depend
58
59 .depend: $(wildcard *.mli) $(wildcard *.ml)
60         rm -f .depend
61         ocamldep $^ > $@
62
63 ifeq ($(wildcard .depend),.depend)
64 include .depend
65 endif
66
67 # Build a distribution.
68
69 dist:
70         $(MAKE) check-manifest
71         rm -rf $(PACKAGE)-$(VERSION)
72         mkdir $(PACKAGE)-$(VERSION)
73         tar -cf - -T MANIFEST | tar -C $(PACKAGE)-$(VERSION) -xf -
74         tar zcf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
75         rm -rf $(PACKAGE)-$(VERSION)
76         ls -l $(PACKAGE)-$(VERSION).tar.gz
77
78 check-manifest:
79         @for d in `find -type d -name CVS | grep -v '^\./debian/'`; \
80         do \
81         b=`dirname $$d`/; \
82         awk -F/ '$$1 != "D" {print $$2}' $$d/Entries | \
83         sed -e "s|^|$$b|" -e "s|^\./||"; \
84         done | sort > .check-manifest; \
85         sort MANIFEST > .orig-manifest; \
86         diff -u .orig-manifest .check-manifest; rv=$$?; \
87         rm -f .orig-manifest .check-manifest; \
88         exit $$rv
89
90 # Developer documentation (in html/ subdirectory).
91
92 doc:
93         rm -rf html
94         mkdir html
95         -ocamlfind ocamldoc $(OCAMLDOCFLAGS) -d html csv.ml{i,}
96
97 .PHONY: depend dist check-manifest doc