| # |
| # SPDX-FileCopyrightText: © 2017-2025 Istari Digital, Inc. |
| # SPDX-License-Identifier: Apache-2.0 |
| # |
| |
| USER_ID := $(shell id -u) |
| HAS_JEMALLOC := $(shell test -f /usr/local/lib/libjemalloc.a && echo jemalloc) |
| JEMALLOC_VER := 5.3.1 |
| JEMALLOC_URL := https://github.com/jemalloc/jemalloc/releases/download/$(JEMALLOC_VER)/jemalloc-$(JEMALLOC_VER).tar.bz2 |
| |
| .PHONY: all badger test jemalloc dependency |
| |
| badger: jemalloc |
| @echo "Compiling Badger binary..." |
| @$(MAKE) -C badger badger |
| @echo "Badger binary located in badger directory." |
| |
| test: jemalloc |
| @echo "Running Badger tests..." |
| @./test.sh |
| |
| jemalloc: |
| @if [ -z "$(HAS_JEMALLOC)" ]; then \ |
| mkdir -p /tmp/jemalloc-temp && cd /tmp/jemalloc-temp; \ |
| echo "Downloading jemalloc..."; \ |
| curl -fsSL "$(JEMALLOC_URL)" -o jemalloc.tar.bz2; \ |
| tar xjf jemalloc.tar.bz2; \ |
| cd jemalloc-$(JEMALLOC_VER); \ |
| ./configure --with-jemalloc-prefix=je_ --with-malloc-conf=background_thread:true,metadata_thp:auto; \ |
| $(MAKE); \ |
| if [ "$(USER_ID)" -eq 0 ]; then \ |
| $(MAKE) install; \ |
| else \ |
| echo "==== Need sudo access to install jemalloc"; \ |
| sudo $(MAKE) install; \ |
| fi; \ |
| fi |
| |
| dependency: |
| @echo "Installing dependencies..." |
| @sudo apt-get update |
| @sudo apt-get -y install \ |
| ca-certificates \ |
| curl \ |
| gnupg \ |
| lsb-release \ |
| build-essential \ |
| protobuf-compiler |