Makefile raw
1 #
2 # SPDX-FileCopyrightText: © Hypermode Inc. <hello@hypermode.com>
3 # SPDX-License-Identifier: Apache-2.0
4 #
5
6 USER_ID = $(shell id -u)
7 HAS_JEMALLOC = $(shell test -f /usr/local/lib/libjemalloc.a && echo "jemalloc")
8 JEMALLOC_URL = "https://github.com/jemalloc/jemalloc/releases/download/5.3.0/jemalloc-5.3.0.tar.bz2"
9
10
11 .PHONY: all badger test jemalloc dependency
12
13 badger: jemalloc
14 @echo "Compiling Badger binary..."
15 @$(MAKE) -C badger badger
16 @echo "Badger binary located in badger directory."
17
18 test: jemalloc
19 @echo "Running Badger tests..."
20 @./test.sh
21
22 jemalloc:
23 @if [ -z "$(HAS_JEMALLOC)" ] ; then \
24 mkdir -p /tmp/jemalloc-temp && cd /tmp/jemalloc-temp ; \
25 echo "Downloading jemalloc..." ; \
26 curl -s -L ${JEMALLOC_URL} -o jemalloc.tar.bz2 ; \
27 tar xjf ./jemalloc.tar.bz2 ; \
28 cd jemalloc-5.3.0 ; \
29 ./configure --with-jemalloc-prefix='je_' --with-malloc-conf='background_thread:true,metadata_thp:auto'; \
30 make ; \
31 if [ "$(USER_ID)" -eq "0" ]; then \
32 make install ; \
33 else \
34 echo "==== Need sudo access to install jemalloc" ; \
35 sudo make install ; \
36 fi \
37 fi
38
39 dependency:
40 @echo "Installing dependencies..."
41 @sudo apt-get update
42 @sudo apt-get -y install \
43 ca-certificates \
44 curl \
45 gnupg \
46 lsb-release \
47 build-essential \
48 protobuf-compiler \
49