forked from ocaml/opam
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
149 lines (120 loc) · 3.89 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
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
include Makefile.config
LOCAL_OCPBUILD=./ocp-build/ocp-build
OCPBUILD ?= $(LOCAL_OCPBUILD)
SRC_EXT=src_ext
TARGETS = opam opam-mk-repo
.PHONY: all
all: $(LOCAL_OCPBUILD) META
$(MAKE) clone
$(MAKE) compile
scan: $(LOCAL_OCPBUILD)
$(OCPBUILD) -scan
sanitize: $(LOCAL_OCPBUILD)
$(OCPBUILD) -sanitize
byte: $(LOCAL_OCPBUILD)
$(OCPBUILD) -byte
opt: $(LOCAL_OCPBUILD)
$(OCPBUILD) -asm
$(LOCAL_OCPBUILD): ocp-build/ocp-build.boot ocp-build/win32_c.c
$(MAKE) -C ocp-build
OCAMLFIND_DIR=$(shell ocamlfind printconf destdir)
prepare: depends.ocp.in
sed "s|%{lib}%|$(OCAMLFIND_DIR)|g" depends.ocp.in > depends.ocp
compile: $(LOCAL_OCPBUILD)
$(OCPBUILD) -init -scan -sanitize $(TARGET)
clone:
$(MAKE) -C $(SRC_EXT)
clean:
rm -rf _obuild
rm -f *.annot src/*.annot
rm -f ocp-build.*
$(MAKE) -C $(SRC_EXT) clean
$(MAKE) -C ocp-build clean
distclean: clean
$(MAKE) -C $(SRC_EXT) distclean
rm -f META Makefile.config src/core/opamVersion.ml config.log config.status
.PHONY: tests
tests:
$(MAKE) -C tests all
tests-local:
$(MAKE) -C tests local
tests-git:
$(MAKE) -C tests git
%-install:
@if [ -e _obuild/$*/$*.asm ]; then \
echo "install _obuild/$*/$*.asm" && \
cp _obuild/$*/$*.asm $(DESTDIR)$(prefix)/bin/$*; \
else \
echo "install _obuild/$*/$*.byte" && \
cp _obuild/$*/$*.byte $(DESTDIR)$(prefix)/bin/$*; \
fi
META: META.in
sed 's/@VERSION@/$(version)/g' < $< > $@
.PHONY: uninstall install
install:
mkdir -p $(DESTDIR)$(prefix)/bin
$(MAKE) $(TARGETS:%=%-install)
mkdir -p $(DESTDIR)$(mandir)/man1 && cp doc/man/* $(DESTDIR)$(mandir)/man1
uninstall:
rm -f $(prefix)/bin/opam*
rm -f $(mandir)/man1/opam*
CORE_LIB = opam-core
REPO_LIB = opam-repositories
SOLVER_LIB = opam-solver
CLIENT_LIB = opam-client
CORE_NOMLI = opamGlobals.ml
CORE_MLI = $(foreach i, $(shell find src/core -name "*.mli"), $(notdir $i))
REPO_MLI = $(foreach i, $(shell find src/repositories -name "*.mli"), $(notdir $i))
SOLVER_MLI = $(foreach i, $(shell find src/solver -name "*.mli"), $(notdir $i))
CLIENT_MLI = $(foreach i, $(shell find src/client -name "*.mli"), $(notdir $i))
CORE_FILES = $(CORE_LIB:%=%.a) $(CORE_LIB:%=%.cma) $(CORE_LIB:%=%.cmxa)\
$(CORE_MLI:%.mli=%.cmi) $(CORE_NOMLI:%.ml=%.cmi)
REPO_FILES = $(REPO_LIB:%=%.a) $(REPO_LIB:%=%.cma) $(REPO_LIB:%=%.cmxa)\
$(REPO_MLI:%.mli=%.cmi)
SOLVER_FILES = $(SOLVER_LIB:%=%.a) $(SOLVER_LIB:%=%.cma) $(SOLVER_LIB:%=%.cmxa)\
$(SOLVER_MLI:%.mli=%.cmi)
CLIENT_FILES = $(CLIENT_LIB:%=%.a) $(CLIENT_LIB:%=%.cma) $(CLIENT_LIB:%=%.cmxa)\
$(CLIENT_MLI:%.mli=%.cmi)
FILES = $(CORE_FILES:%=_obuild/opam-core/%)\
$(REPO_FILES:%=_obuild/opam-repositories/%)\
$(SOLVER_FILES:%=_obuild/opam-solver/%)\
$(CLIENT_FILES:%=_obuild/opam-client/%)
.PHONY: libuninstall libinstall
libinstall: META
ocamlfind install opam META $(FILES)
libuninstall:
ocamlfind remove opam
doc: compile
mkdir -p doc/html/
ocamldoc \
-I _obuild/opam-core -I _obuild/opam-solver \
-I _obuild/opam-repositories -I _obuild/opam-client \
-I _obuild/opam-lib -I _obuild/cudf -I _obuild/dose \
-I _obuild/re -I _obuild/unix -I _obuild/extlib \
-I _obuild/arg -I _obuild/graph \
src/**/*.mli -html -d doc/html/
$(MAKE) -C doc
trailing:
find src -name "*.ml*" -exec \
sed -i xxx -e :a -e "/^\n*$$/{$$d;N;ba" -e '}' {} \;
find src -name "*xxx" -exec rm {} \;
OPAM_FULL = opam-full-$(version)
OPAM_FILES = $(wildcard src_ext/*.tar.gz)\
$(wildcard src_ext/*.tbz)\
$(shell git ls-tree --name-only -r HEAD)
archive:
$(MAKE) -C src_ext distclean
$(MAKE) clone
rm -f $(OPAM_FULL) $(OPAM_FULL).tar.gz
ln -s . $(OPAM_FULL)
tar cz $(addprefix $(OPAM_FULL)/,$(OPAM_FILES)) > $(OPAM_FULL).tar.gz
rm -f $(OPAM_FULL)
upload: archive
read -p "Upload $(OPAM_FULL_TARGZ) [Y/n]?" choice;\
case x"$$choice" in \
x|xy|xY ) scp $(OPAM_FULL).tar.gz webmaster@ocamlpro.com:pub/;;\
* ) echo "Cancelled.";;\
esac
configure: configure.ac m4/*.m4
aclocal -I m4
autoconf