.PHONY: build test clippy run launcher web serve-web signal hub cli-lockstep sprites help

help:
	@echo "make build | test | clippy | launcher | run ROM=path | web | serve-web | signal | hub ROM=path | sprites | cli-lockstep ROM=path FRAMES=n"

build:
	cargo build --workspace

test:
	cargo test --workspace

clippy:
	cargo clippy --workspace --all-targets

run:
	cargo run --release -p lttp-native -- --rom "$(ROM)"

launcher:
	cargo build --release -p lttp-native -p lttp-launcher -p lttp-signal -p lttp-server
	cargo run --release -p lttp-launcher

web:
	cd crates/lttp-web && ./build.sh

serve-web: web
	cd crates/lttp-web/site && python3 -m http.server 8080

signal:
	cargo run --release -p lttp-signal

# A local hub server (lttp-signal + lttp-server --hub --ice none); see docs/server.md "Hub mode".
hub:
	tools/hub.sh "$(ROM)"

cli-lockstep:
	cargo run --release -p lttp-cli -- lockstep --rom "$(ROM)" --frames $(or $(FRAMES),3600) --routines all

# Download the randomizer's player sprites (alttpr.com) into assets/sprites (gitignored).
sprites:
	python3 tools/sprites/sync.py
