BINARY_NAME=lambda TEST=simple .PHONY: help build run profile explain graph docs clean .DEFAULT_GOAL := help .SILENT: help: echo "Available targets:" echo " build - Build the lambda executable" echo " run - Build and run the lambda interpreter (use TEST= to specify sample)" echo " profile - Build and run with CPU profiling enabled" echo " explain - Build and run with explanation mode and profiling" echo " graph - Generate and open CPU profile visualization" echo " docs - Start local godoc server on port 6060" echo " clean - Remove all build artifacts" build: go build -o ${BINARY_NAME} ./cmd/lambda chmod +x ${BINARY_NAME} run: build ./${BINARY_NAME} - < ./samples/$(TEST).txt > program.out profile: build ./${BINARY_NAME} -p profile/cpu.prof - < ./samples/$(TEST).txt > program.out explain: build ./${BINARY_NAME} -x -p profile/cpu.prof - < ./samples/$(TEST).txt > program.out graph: go tool pprof -raw -output=profile/cpu.raw profile/cpu.prof go tool pprof -svg profile/cpu.prof > profile/cpu.svg open profile/cpu.svg docs: echo ">>> View at 'http://localhost:6060/pkg/git.maximhutz.com/max/lambda/'" go run golang.org/x/tools/cmd/godoc@latest -http=:6060 clean: rm -f ${BINARY_NAME} rm -f program.out rm -rf profile/