-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile
89 lines (67 loc) · 2.67 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
##########################################################################
# This file is part of BINSEC. #
# #
# Copyright (C) 2016-2019 #
# CEA (Commissariat à l'énergie atomique et aux énergies #
# alternatives) #
# #
# you can redistribute it and/or modify it under the terms of the GNU #
# Lesser General Public License as published by the Free Software #
# Foundation, version 2.1. #
# #
# It is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU Lesser General Public License for more details. #
# #
# See the GNU Lesser General Public License version 2.1 #
# for more details (enclosed in the file licenses/LGPLv2.1). #
# #
##########################################################################
default: binsec
ifneq (, $(shell which opam 2> /dev/null))
define install_deps
$(shell dune external-lib-deps --missing $(1) 2>&1 \
| grep -e "opam install")
endef
OCAML_COMPILER ?= $(shell opam switch list | grep -m 1 -oe "ocaml-system[^ ]*")
_opam:
opam switch create . $(OCAML_COMPILER) --no-install
opam install "yojson<2.0.0" tuareg merlin user-setup unisim_archisec mmap -y
opam user-setup install
opam pin add . -n
opam install binsec --deps-only --with-test --with-doc -y
switch: _opam
else
switch:
$(error "Please install opam.")
endif
ifeq (, $(shell which dune 2> /dev/null))
define check_dune
$(error "Please install dune or run 'make switch'.")
endef
else
define clean_build
dune clean
endef
endif
.PHONY: default switch install uninstall binsec test doc clean
binsec:
$(call check_dune)
$(call install_deps,@install)
dune build @install
install: binsec
dune install $(INSTALL_FLAGS)
uninstall:
$(call check_dune)
dune uninstall $(INSTALL_FLAGS)
test: binsec
$(call install_deps,@runtest)
dune build @runtest
doc:
$(call check_dune)
$(call install_deps,@doc)
dune build @doc
@echo "Documentation available @ _build/default/_doc/_html/"
clean::
$(call clean_build)