release 0.9.0
[ocaml-event.git] / Makefile
blobab0d5114c0636b2624e89d55048a605859315488
3 VERSION=0.9.0
5 EVENT_LIBS:=$(shell pkg-config --libs libevent || printf "%s" "-levent")
6 EVENT_CFLAGS:=$(shell pkg-config --cflags libevent)
8 NAME=liboevent
9 OBJECTS=libevent.cmo
10 XOBJECTS=$(OBJECTS:.cmo=.cmx)
11 C_OBJECTS=event_stubs.o
13 ARCHIVE=$(NAME).cma
14 XARCHIVE=$(ARCHIVE:.cma=.cmxa)
15 CARCHIVE_NAME=mloevent
16 CARCHIVE=lib$(CARCHIVE_NAME).a
18 # Flags for the C compiler.
19 CFLAGS:=$(CFLAGS) -Wall $(EVENT_CFLAGS)
21 OCAMLC=ocamlfind ocamlc -package unix
22 OCAMLOPT=ocamlfind ocamlopt -package unix
23 OCAMLDEP=ocamldep
24 OCAMLMKLIB=ocamlmklib
25 OCAMLDOC=ocamldoc
26 OCAMLFIND=ocamlfind
28 .PHONY: build
29 build: all allopt
31 .PHONY: all
32 all: $(ARCHIVE)
33 .PHONY: allopt
34 allopt: $(XARCHIVE)
36 depend: *.c *.ml *.mli
37 gcc -I $(shell $(OCAMLFIND) query stdlib) -MM *.c > depend
38 $(OCAMLDEP) *.mli *.ml >> depend
40 ## Library creation
41 $(CARCHIVE): $(C_OBJECTS)
42 $(OCAMLMKLIB) -oc $(CARCHIVE_NAME) $(C_OBJECTS) $(EVENT_LIBS)
43 $(ARCHIVE): $(CARCHIVE) $(OBJECTS)
44 $(OCAMLMKLIB) -o $(NAME) $(OBJECTS) -oc $(CARCHIVE_NAME) $(EVENT_LIBS)
45 $(XARCHIVE): $(CARCHIVE) $(XOBJECTS)
46 $(OCAMLMKLIB) -o $(NAME) $(XOBJECTS) -oc $(CARCHIVE_NAME) $(EVENT_LIBS)
48 ## Installation
49 .PHONY: install
50 install:
51 { test ! -f $(XARCHIVE) || extra="$(XARCHIVE) $(OBJECTS:.cmo=.cmx) $(NAME).a"; }; \
52 $(OCAMLFIND) install libevent -patch-version $(VERSION) META $(OBJECTS:.cmo=.cmi) $(OBJECTS:.cmo=.mli) $(ARCHIVE) \
53 dll$(CARCHIVE_NAME).so lib$(CARCHIVE_NAME).a $$extra
55 .PHONY: uninstall
56 uninstall:
57 $(OCAMLFIND) remove libevent
59 ## Documentation
60 .PHONY: doc
61 doc: FORCE
62 cd doc; $(OCAMLDOC) -html -I .. ../*.mli
64 ## Testing
65 .PHONY: test
66 test: testbyte testopt
67 .PHONY: testbyte
68 testbyte: unittest
69 ./unittest
70 .PHONY: testopt
71 testopt: unittest.opt
72 ./unittest.opt
73 unittest: all unittest.ml
74 $(OCAMLFIND) ocamlc -dllpath . -o unittest -package oUnit -cclib -L. -linkpkg \
75 $(ARCHIVE) unittest.ml
76 unittest.opt: allopt unittest.ml
77 $(OCAMLFIND) ocamlopt -o unittest.opt -package oUnit -cclib -L. -linkpkg \
78 $(XARCHIVE) unittest.ml
80 ## Cleaning up
81 .PHONY: clean
82 clean::
83 rm -f *~ *.cm* *.o *.a *.so doc/*.html doc/*.css depend \
84 unittest unittest.opt
86 FORCE:
88 .SUFFIXES: .ml .mli .cmo .cmi .cmx
90 .mli.cmi:
91 $(OCAMLC) -c $(COMPFLAGS) $<
92 .ml.cmo:
93 $(OCAMLC) -c $(COMPLAGS) -nolabels $<
94 .ml.cmx:
95 $(OCAMLOPT) -c $(COMPFLAGS) -nolabels $<
96 .c.o:
97 $(OCAMLC) -c -ccopt "$(CFLAGS)" $<
99 include depend
101 FULLNAME=ocaml-libevent-$(VERSION)
103 .PHONY: release
104 release:
105 git tag -a -m $(VERSION) v$(VERSION)
106 git archive --prefix=$(FULLNAME)/ v$(VERSION) | gzip > $(FULLNAME).tar.gz
107 gpg -a -b $(FULLNAME).tar.gz > $(FULLNAME).tar.gz.asc