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