PROFILES := baseline overflow metadata-sw metadata-hw

BUILD := $(addprefix build-,$(PROFILES))
BENCH := $(addsuffix .log,$(PROFILES))
CSV := $(addsuffix .csv,$(PROFILES))

.PHONY: all build bench $(BUILD)

all build: $(BUILD)
bench: $(BENCH)
csv: $(CSV)

export RUSTFLAGS
export RUSTC_OLD

build-overflow build-baseline: RUSTC_OLD := 1
build-baseline:
	cargo build $(TARGET) --profile=baseline

build-overflow:
	cargo build $(TARGET) --profile=overflow

build-metadata-sw: RUSTFLAGS += -Cllvm-args=--metadata-to-check -Cllvm-args=--vectorized-check
build-metadata-sw:
	cargo build $(TARGET) --profile=metadata-sw

build-metadata-hw:
	cargo build $(TARGET) --profile=metadata-hw

$(BENCH): %.log:
	cargo bench --profile=$* >/dev/null 2>&1 # warm up CPU
	cargo bench --profile=$* | tee $@

$(CSV): %.csv: %.log
	python3 process.py $< > $@
