Add .gitignore file for git.
[ocaml-csv.git] / Makefile
1 # $Id: Makefile,v 1.11 2007-05-14 16:20:10 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 install:
73         ocamlfind install csv csv.{cmi,a,cmxa,cma,cmx} META
74
75 dist:
76         $(MAKE) check-manifest
77         rm -rf $(PACKAGE)-$(VERSION)
78         mkdir $(PACKAGE)-$(VERSION)
79         tar -cf - -T MANIFEST | tar -C $(PACKAGE)-$(VERSION) -xf -
80         tar zcf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
81         rm -rf $(PACKAGE)-$(VERSION)
82         ls -l $(PACKAGE)-$(VERSION).tar.gz
83
84 check-manifest:
85         @for d in `find -type d -name CVS | grep -v '^\./debian/'`; \
86         do \
87         b=`dirname $$d`/; \
88         awk -F/ '$$1 != "D" {print $$2}' $$d/Entries | \
89         sed -e "s|^|$$b|" -e "s|^\./||"; \
90         done | sort > .check-manifest; \
91         sort MANIFEST > .orig-manifest; \
92         diff -u .orig-manifest .check-manifest; rv=$$?; \
93         rm -f .orig-manifest .check-manifest; \
94         exit $$rv
95
96 # Developer documentation (in html/ subdirectory).
97
98 doc:
99         rm -rf html
100         mkdir html
101         -ocamlfind ocamldoc $(OCAMLDOCFLAGS) -d html csv.ml{i,}
102
103 .PHONY: depend dist check-manifest doc