#
# 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
