Files
yellowjacket/Makefile
T
logan 2a3a79652c add dev-only profiling with pprof, runtime/trace, and operation timing
Wire up Go's standard profiling toolkit so it's automatically available
in dev builds and completely absent from production. The profiling
package uses build tags (dev/!dev) to eliminate all pprof, trace, and
timing code from release binaries with zero new dependencies.

- backend/profiling: pprof HTTP server on :6060, /debug/trace endpoint,
  block/mutex profiling, and TimeOp helper for structured operation timing
- scripts/profile.sh: interactive menu-driven script that auto-selects
  free ports (8080-8089) so multiple profiles can be open simultaneously
- Instrumented key operations: app init, database init, player load/restore,
  queue set/restore
- Makefile targets: profile, profile-cpu, profile-heap, profile-trace
- .gitignore: exclude trace-*.out and *.pprof artifacts
2026-02-20 18:27:25 -06:00

52 lines
1.4 KiB
Makefile

VERSION ?= dev
COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
LDFLAGS := -X 'main.version=$(VERSION)' -X 'main.commit=$(COMMIT)'
dev: setup generate clean
WEBKIT_DISABLE_DMABUF_RENDERER=1 go tool wails dev -tags webkit2_41 -loglevel Debug -v 2
build-dev: generate
go tool wails build -tags webkit2_41 -debug -clean -ldflags "$(LDFLAGS)"
build-prod: generate
go tool wails build -tags webkit2_41 -clean -obfuscated -upx -ldflags "-s -w $(LDFLAGS)"
build-frontend:
cd frontend && pnpm install && pnpm build
clean:
rm -rf frontend/dist
rm -rf frontend/node_modules
generate:
go generate ./...
lint:
go tool golangci-lint run
test:
go test -tags webkit2_41 -race -count=1 -timeout 120s ./...
vulncheck:
go tool govulncheck ./...
install: ## Install all development dependencies (Go tools, frontend packages)
go get -tool
cd frontend && pnpm install
setup: install ## Install dependencies and set up git hooks
go tool lefthook install
# Profiling (dev builds only — pprof server on :6060 starts automatically)
profile: ## Open interactive profiling menu (CPU, heap, trace, etc.)
@./scripts/profile.sh
profile-cpu: ## Capture CPU profile and open flame graph in browser
@./scripts/profile.sh cpu
profile-heap: ## Capture heap profile and open in browser
@./scripts/profile.sh heap
profile-trace: ## Capture execution trace and open trace viewer
@./scripts/profile.sh trace