Staging
v0.5.0
opam+https://opam.ocaml.org/packages/binsec/
Raw File
Makefile
##########################################################################
#  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 tuareg merlin ocp-indent user-setup -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)
back to top