.DEFAULT_GOAL := help
RTL_ARTIFACTS_DIR ?= /opt/rtl-artifacts
REQUIRED_RTL_ARTIFACTS := picorv32_test_vcd.fst scr1_max_axi_coremark.fst
SCHEMA_PATH := schema/wavepeek.json
require-container:
@if [ "$${WAVEPEEK_IN_CONTAINER:-0}" != "1" ]; then \
printf '%s\n' "error: container: this target must run inside the wavepeek devcontainer/CI image (set WAVEPEEK_IN_CONTAINER=1)" >&2; \
exit 1; \
fi
check-rtl-artifacts: require-container
@for fixture in $(REQUIRED_RTL_ARTIFACTS); do \
if [ ! -f "$(RTL_ARTIFACTS_DIR)/$$fixture" ]; then \
printf '%s\n' "error: file: required fixture missing at $(RTL_ARTIFACTS_DIR)/$$fixture" >&2; \
exit 1; \
fi; \
done
update-schema: require-container
@mkdir -p schema
@tmp_file="$$(mktemp)"; trap 'rm -f "$$tmp_file"' EXIT; \
cargo run --quiet -- schema > "$$tmp_file"; \
mv "$$tmp_file" "$(SCHEMA_PATH)"
check-schema: require-container
@python3 scripts/check_schema_contract.py "$(SCHEMA_PATH)"
bootstrap: require-container
rustup show >/dev/null
cargo --version
cargo fmt --version
cargo clippy --version
gtkwave --version
surfer --version
pre-commit install --hook-type commit-msg --hook-type pre-commit
format: require-container
cargo fmt
format-check: require-container
cargo fmt -- --check
lint: require-container
cargo clippy --all-targets --all-features -- -D warnings
lint-fix: require-container
cargo clippy --all-targets --all-features --fix --allow-dirty --allow-staged -- -D warnings
check-build: require-container
cargo check
test: require-container check-rtl-artifacts
cargo test -q
pre-commit: require-container check-rtl-artifacts
pre-commit run --all-files
check-commit: require-container
cz check --commit-msg-file "$$(git rev-parse --git-path COMMIT_EDITMSG)"
check: format-check lint check-schema check-build check-commit
ci: format-check lint check-schema test check-build
fix: format lint-fix update-schema
clean: require-container
cargo clean
help: require-container
@awk 'BEGIN{tabstop=8;targetcol=32} /^##/{desc=$$0;sub(/^##[ ]*/,"",desc);next} /^[a-zA-Z0-9_-]+:/{name=$$1;sub(/:.*/,"",name);col=length(name);pos=col;ntabs=0;while(pos<targetcol){ntabs++;pos=int(pos/tabstop+1)*tabstop}printf "%s",name;for(i=0;i<ntabs;i++)printf "\t";printf "%s\n",desc;desc=""}' Makefile