-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile
74 lines (54 loc) · 1.68 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# OCaml programs for compiling
OCAMLDEP = ocamldep
OCAMLC = ocamlc
OCAMLOPT = ocamlopt
OCAMLFIND = ocamlfind
OCAMLDOC = ocamldoc
# Libs to link with
REQUIRES = unix str
# Include dirs
INCLUDES = -I lib
# Install prefix for client
PREFIX = /usr/local
# Sources
LIBSRC = lib/fcall.ml lib/o9pc.ml
CLSRC = src/client.ml
# The output to create
CLIENT = o9pc
LIB = o9p.cma
LIBX = o9p.cmxa
NAME=o9p
# Automagic stuff below
LIBOBJ = $(patsubst %.ml,%.cmo,$(LIBSRC))
LIBXOBJ = $(patsubst %.ml,%.cmx,$(LIBSRC))
CLOBJ = $(patsubst %.ml,%.cmx,$(CLSRC))
LIBCMI = $(patsubst %.ml,%.cmi,$(LIBSRC))
LIBMLI = $(patsubst %.ml,%.mli,$(LIBSRC))
all: $(LIB) $(LIBX) $(CLIENT)
.PHONY: install
install: all
$(OCAMLFIND) install $(NAME) $(LIB) $(LIBCMI) $(NAME).a $(LIBX) META
install -d $(DESTDIR)$(PREFIX)/bin/
install $(CLIENT) $(DESTDIR)$(PREFIX)/bin/$(CLIENT)
.PHONY: uninstall
uninstall:
$(OCAMLFIND) remove $(NAME)
rm -f $(DESTDIR)$(PREFIX)/bin/$(CLIENT)
$(LIB): $(LIBCMI) $(LIBOBJ)
$(OCAMLFIND) $(OCAMLC) -a -o $@ -package "$(REQUIRES)" -linkpkg $(LIBOBJ)
$(LIBX): $(LIBCMI) $(LIBXOBJ)
$(OCAMLFIND) $(OCAMLOPT) -a -o $@ -package "$(REQUIRES)" $(LIBXOBJ)
$(CLIENT): $(CLOBJ)
$(OCAMLFIND) $(OCAMLOPT) -package "$(REQUIRES)" -linkpkg -o $@ $(LIBX) $^
%.cmo: %.ml
$(OCAMLFIND) $(OCAMLC) -c $(INCLUDES) -package "$(REQUIRES)" $<
%.cmi: %.mli
$(OCAMLFIND) $(OCAMLC) -c $(INCLUDES) -package "$(REQUIRES)" $<
%.cmx: %.ml
$(OCAMLFIND) $(OCAMLOPT) -c $(INCLUDES) -package "$(REQUIRES)" $<
htdoc: $(LIBCMI) $(LIBMLI)
$(OCAMLDOC) -html -I lib -d doc $(LIBMLI)
.PHONY: clean
clean:
rm -f lib/*.cmo lib/*.cmx lib/*.cmi lib/*.o src/*.cmx src/*.cmi src/*.o \
$(LIB) $(LIBX) $(patsubst %.cmxa,%.a,$(LIBX)) $(CLIENT) doc/*