fix memory leak
[ocaml-event.git] / Makefile
blob8ab9aa407495470389a5a8feba6ed497151edf50
3 VERSION=0.7.0
5 # Change this to match your libevent installation.
6 EVENT_LIB=-levent
7 EVENT_LIBDIR=/usr/local/lib
8 EVENT_INCDIR=/usr/local/include
10 NAME=liboevent
11 OBJECTS=libevent.cmo
12 XOBJECTS=$(OBJECTS:.cmo=.cmx)
13 C_OBJECTS=event_stubs.o
15 ARCHIVE=$(NAME).cma
16 XARCHIVE=$(ARCHIVE:.cma=.cmxa)
17 CARCHIVE_NAME=mloevent
18 CARCHIVE=lib$(CARCHIVE_NAME).a
20 # Flags for the C compiler.
21 CFLAGS=-DFULL_UNROLL -Wall -O2 -I$(EVENT_INCDIR)
23 OCAMLC=ocamlc
24 OCAMLOPT=ocamlopt
25 OCAMLDEP=ocamldep
26 OCAMLMKLIB=ocamlmklib
27 OCAMLDOC=ocamldoc
28 OCAMLFIND=ocamlfind
30 .PHONY: build
31 build: all allopt
33 .PHONY: all
34 all: $(ARCHIVE)
35 .PHONY: allopt
36 allopt: $(XARCHIVE)
38 depend: *.c *.ml *.mli
39 gcc -MM *.c > depend
40 $(OCAMLDEP) *.mli *.ml >> depend
42 ## Library creation
43 $(CARCHIVE): $(C_OBJECTS)
44 $(OCAMLMKLIB) -oc $(CARCHIVE_NAME) $(C_OBJECTS) \
45 -L$(EVENT_LIBDIR) $(EVENT_LIB)
46 $(ARCHIVE): $(CARCHIVE) $(OBJECTS)
47 $(OCAMLMKLIB) -o $(NAME) $(OBJECTS) -oc $(CARCHIVE_NAME) \
48 -L$(EVENT_LIBDIR) $(EVENT_LIB)
49 $(XARCHIVE): $(CARCHIVE) $(XOBJECTS)
50 $(OCAMLMKLIB) -o $(NAME) $(XOBJECTS) -oc $(CARCHIVE_NAME) \
51 -L$(EVENT_LIBDIR) $(EVENT_LIB)
53 ## Installation
54 .PHONY: install
55 install:
56 { test ! -f $(XARCHIVE) || extra="$(XARCHIVE) $(OBJECTS:.cmo=.cmx) $(NAME).a"; }; \
57 $(OCAMLFIND) install libevent -patch-version $(VERSION) META $(OBJECTS:.cmo=.cmi) $(OBJECTS:.cmo=.mli) $(ARCHIVE) \
58 dll$(CARCHIVE_NAME).so lib$(CARCHIVE_NAME).a $$extra
60 .PHONY: uninstall
61 uninstall:
62 $(OCAMLFIND) remove libevent
64 ## Documentation
65 .PHONY: doc
66 doc: FORCE
67 cd doc; $(OCAMLDOC) -html -I .. ../*.mli
69 ## Testing
70 .PHONY: test
71 test: testbyte testopt
72 .PHONY: testbyte
73 testbyte: unittest
74 ./unittest
75 .PHONY: testopt
76 testopt: unittest.opt
77 ./unittest.opt
78 unittest: all unittest.ml
79 $(OCAMLFIND) ocamlc -dllpath . -o unittest -package oUnit -cclib -L. -linkpkg \
80 $(ARCHIVE) unittest.ml
81 unittest.opt: allopt unittest.ml
82 $(OCAMLFIND) ocamlopt -o unittest.opt -package oUnit -cclib -L. -linkpkg \
83 $(XARCHIVE) unittest.ml
85 ## Cleaning up
86 .PHONY: clean
87 clean::
88 rm -f *~ *.cm* *.o *.a *.so doc/*.html doc/*.css depend \
89 unittest unittest.opt
91 FORCE:
93 .SUFFIXES: .ml .mli .cmo .cmi .cmx
95 .mli.cmi:
96 $(OCAMLC) -c $(COMPFLAGS) $<
97 .ml.cmo:
98 $(OCAMLC) -c $(COMPLAGS) -nolabels $<
99 .ml.cmx:
100 $(OCAMLOPT) -c $(COMPFLAGS) -nolabels $<
101 .c.o:
102 $(OCAMLC) -c -ccopt "$(CFLAGS)" $<
104 include depend
106 FULLNAME=ocaml-libevent-$(VERSION)
108 .PHONY: release
109 release:
110 git tag -a -m $(VERSION) v$(VERSION)
111 git archive --prefix=$(FULLNAME)/ v$(VERSION) | gzip > $(FULLNAME).tar.gz
112 gpg -a -b $(FULLNAME).tar.gz