build:
	go build -ldflags="-s -w" -o bin/mcp-api ./cmd/mcp-api

# Production build — fully obfuscated (requires: go install mvdan.cc/garble@latest)
build-prod:
	garble -seed=random build -ldflags="-s -w" -o bin/mcp-api ./cmd/mcp-api

# Cross-compile targets
build-linux:
	GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o bin/mcp-api-linux-amd64 ./cmd/mcp-api

build-windows:
	GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o bin/mcp-api.exe ./cmd/mcp-api

build-darwin-arm:
	GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o bin/mcp-api-mac-arm ./cmd/mcp-api

build-darwin-x64:
	GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o bin/mcp-api-mac-x64 ./cmd/mcp-api

build-all: build-linux build-windows build-darwin-arm build-darwin-x64

# Install garble obfuscator
install-garble:
	go install mvdan.cc/garble@latest

deps:
	go mod tidy && go mod download

# encode a new credential
encode:
	@go run ./gen/main.go -key "$(KEY)" -name "$(NAME)"

# run in dev mode (stdio)
run:
	go run ./cmd/mcp-api -transport stdio -v

# run as SSE server
run-sse:
	go run ./cmd/mcp-api -transport sse -addr :8765 -v

.PHONY: build build-prod build-linux build-windows build-darwin-arm build-darwin-x64 build-all install-garble deps encode run run-sse

clean:
	rm -rf bin/

.PHONY: clean
