XGRAMMAR_DIR ?= $(HOME)/git/xgrammar VENV := .venv PY := $(VENV)/bin/python SAMPLES ?= 4 TEMPERATURE ?= 1.5 .PHONY: run smoke setup xgrammar clean help help: @echo "make setup - create uv venv and install deps + local xgrammar (editable)" @echo "make run - run all scenarios and write report.md (constrained vs unconstrained)" @echo "make smoke - quick single-tool smoke test" @echo "make xgrammar - reinstall local xgrammar after C++/python changes" @echo "make clean - remove venv and report" $(VENV)/.stamp: uv venv --python 3.13 $(VENV) uv pip install --python $(PY) torch transformers accelerate jsonschema torchao uv pip install --python $(PY) -e $(XGRAMMAR_DIR) touch $@ setup: $(VENV)/.stamp xgrammar: $(VENV)/.stamp uv pip install --python $(PY) -e $(XGRAMMAR_DIR) run: $(VENV)/.stamp $(PY) test_gemma4_scenarios.py --samples $(SAMPLES) --temperature $(TEMPERATURE) --report report.md @echo "" @echo "==================== report.md ====================" @cat report.md smoke: $(VENV)/.stamp $(PY) test_gemma4_xgrammar.py clean: rm -rf $(VENV) report.md