diff --git a/.gitignore b/.gitignore index 71b2ceb..0b209db 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore # # Binaries for programs and plugins +lambda *.exe *.exe~ *.dll diff --git a/Makefile b/Makefile index fa74ef9..45742d2 100644 --- a/Makefile +++ b/Makefile @@ -1,27 +1,43 @@ -BINARY_NAME=lambda.exe - -.PHONY: it run profile explain graph docs - -it: - @ go build -o ${BINARY_NAME} ./cmd/lambda - @ chmod +x ${BINARY_NAME} - +BINARY_NAME=lambda TEST=simple -run: it - @ ./lambda.exe - < ./samples/$(TEST).txt > program.out +.PHONY: help build run profile explain graph docs clean +.DEFAULT_GOAL := help +.SILENT: -profile: it - @ ./lambda.exe -p profile/cpu.prof - < ./samples/$(TEST).txt > program.out +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" -explain: it - @ ./lambda.exe -x -p profile/cpu.prof - < ./samples/$(TEST).txt > program.out +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 + go tool pprof -raw -output=profile/cpu.raw profile/cpu.prof + go tool pprof -svg profile/cpu.prof > profile/cpu.svg + echo ">>> View at 'file://$(PWD)/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 + 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/