KVCS_C_DIR    ?= ../../C
KVCS_EFC_DIR  ?= ../../../kvcs-efc
PKG_CONFIG_PATH := $(abspath $(KVCS_C_DIR)):$(PKG_CONFIG_PATH)
PATH := $(HOME)/.cargo/bin:$(PATH)
EFC_BUILD_DIR  := $(abspath $(KVCS_EFC_DIR)/build)
export PKG_CONFIG_PATH PATH

E2E_COMPOSE ?= ../../../kvcs-test/runtimes/data-plane-e2e/docker-compose.yaml
BENCH_ARGS  ?= --low-level --duration 10 --batches 4 --batch-size 32

.PHONY: build test run run-docker clean help

build: ## Build kvcs-bench binary
	cargo build --release

test: ## Run bench unit tests
	cargo test

run: build ## Build and run bench on the host (physical machine)
	LD_LIBRARY_PATH=$(EFC_BUILD_DIR):$$LD_LIBRARY_PATH \
		./target/release/kvcs-bench $(BENCH_ARGS)

run-docker: build ## Build and run bench inside EFC container (for CI)
	docker compose -f $(E2E_COMPOSE) exec kvcs-efc-1 \
		/kvcs-efc-rt/kvcs-sdk/rust/bench/target/release/kvcs-bench \
		$(BENCH_ARGS)

clean: ## Remove build artifacts
	cargo clean

help: ## Show this help
	@grep -E '^[a-z].*:.*##' $(MAKEFILE_LIST) | sed 's/:.*## /\t/' | sort
