-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.tail
106 lines (77 loc) · 2.08 KB
/
Makefile.tail
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Development rules
_all: _subdirs_all $(_ALL)
_subdirs_all:
@for d in $(SUBDIRS); do cd $$d; $(MAKE) all; cd ..; done
clean: _clean _subdirs_clean
_clean:
rm -rf .dep $(_CLEAN)
_subdirs_clean:
@for d in $(SUBDIRS); do cd $$d; $(MAKE) clean; cd ..; done
distclean: _clean _subdirs_distclean
ifneq ($(_DISTCLEAN),)
rm -rf $(_DIST_CLEAN)
endif
_subdirs_distclean:
@for d in $(SUBDIRS); do cd $$d; $(MAKE) distclean; cd ..; done
ifneq ('$(_DEPS)','')
-include $(_DEPS)
endif
$(DEP_DIR): $(_PRE_DEPS)
@mkdir -p $@
# Distribution rules
DIST_NAME=$(PROJECT)-$(VERSION)
ifdef RELEASE
ifneq ('$(RELEASE)','1')
DIST_NAME=$(PROJECT)-$(VERSION)-$(RELEASE)
endif
endif
_DIST_DIR = $(DIST_NAME)
dist: _subdirs_dist
cp Makefile.head Makefile.tail $(_DIST_DIR)
tar cvfz "$(DIST_NAME).tgz" $(_DIST_DIR)
@rm -rf $(DIST_NAME)
_subdirs_dist:
@mkdir $(_DIST_DIR)
@cp -R $(DIST) $(_DIST) $(_DIST_DIR)
ifdef SUBDIRS
@for d in $(SUBDIRS); do \
cd $$d; \
$(MAKE) _subdirs_dist _DIST_DIR=../$(_DIST_DIR)/$$d; \
cd ..; \
done
endif
# Install rules
install: all $(INSTALL_BEFORE) _subdirs_install $(_INSTALL) $(INSTALL_AFTER)
_subdirs_install:
ifdef SUBDIRS
@for d in $(SUBDIRS); do \
cd $$d; \
$(MAKE) install; \
cd ..; \
done
endif
$(BIN_DIR):
install -d $(BIN_DIR)
$(DATA_DIR):
install -d $(DATA_DIR)
# OCAML Rules
OCAMLC_CFLAGS += $(patsubst %,-I %,$(OCAMLC_INC) $(OCAML_INC))
OCAMLOPT_CFLAGS += $(patsubst %,-I %,$(OCAMLOPT_INC) $(OCAML_INC))
OCAMLC_LDFLAGS += $(patsubst %,%.cma,$(OCAMLC_LIB) $(OCAML_LIB))
OCAMLOPT_LDFLAGS += $(patsubst %,%.cmxa,$(OCAMLOPT_LIB) $(OCAML_LIB))
%.cmi: %.mli
$(OCAMLC) $(OCAMLC_CFLAGS) -o $@ -c $<
%.cmo %.cmi: %.ml
$(OCAMLC) $(OCAMLC_CFLAGS) -o $@ -c $<
%.ml %.mli: %.mly
$(OCAMLYACC) $(OCAMLYACC_FLAGS) $<
%.ml: %.mll
$(OCAMLLEX) $(OCAMLLEX_FLAGS) -o $@ $<
%.cmx: %.ml %.cmi
$(OCAMLOPT) $(OCAMLOPT_CFLAGS) -o $@ -c $<
$(DEP_DIR)/%.mli.d: %.mli $(DEP_DIR)
@$(OCAMLDEP) $< | sed -e 's/^\(.*\)\.cmx:\(.*\).cmx/\1.cmx:\2.cmi/g' > $@
$(DEP_DIR)/%.d: %.ml $(DEP_DIR)
@$(OCAMLDEP) $< | sed -e 's/^\(.*\)\.cmx:\(.*\).cmx/\1.cmx:\2.cmi/g' > $@
test:
@echo $(_DEPS)