# ============================================================
#  quic_ecs_dt — top-level Makefile
#  Targets:
#    make render      — build the paper PDF
#    make preview     — live-reload preview in browser
#    make build       — cargo build --release (native)
#    make build-cm5   — cargo build --release (aarch64 cross)
#    make clean       — remove generated outputs
# ============================================================

.PHONY: render preview build build-cm5 clean

VENV        := $(HOME)/.venv/quic_ecs
PYTHON      := $(VENV)/bin/python
CM5_HOST    ?= 192.168.1.x
CM5_USER    ?= pi
CM5_BIN_DIR ?= /home/pi/quic_ecs_dt

# Paper
render:
	cd paper && quarto render index.qmd

preview:
	cd paper && quarto preview index.qmd --port 4848 --no-browser

# Rust build
build:
	cargo build --release

build-cm5:
	CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
	cargo build --release --target aarch64-unknown-linux-gnu

# Deploy binary to CM5
deploy-cm5: build-cm5
	ssh $(CM5_USER)@$(CM5_HOST) "mkdir -p $(CM5_BIN_DIR)"
	scp target/aarch64-unknown-linux-gnu/release/quic_ecs_dt \
	    $(CM5_USER)@$(CM5_HOST):$(CM5_BIN_DIR)/

# Clean
clean:
	cargo clean
	rm -rf paper/_output paper/.quarto paper/index.tex \
	       paper/figures/*.pdf paper/figures/*.png \
	       data/loopback/*.csv data/two_machine/*.csv