diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..77e485a --- /dev/null +++ b/Makefile @@ -0,0 +1,86 @@ +.PHONY: build run dev clean test + +# Build variables +VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev") +COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "none") +DATE ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ") +LDFLAGS := -ldflags "-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.date=$(DATE)" + +# Default target +all: build + +# Build the binary +build: + go build $(LDFLAGS) -o kaze ./cmd/kaze + +# Build for production (smaller binary) +build-prod: + CGO_ENABLED=0 go build $(LDFLAGS) -o kaze ./cmd/kaze + +# Run the application +run: build + ./kaze + +# Run with debug logging +dev: build + ./kaze --debug + +# Clean build artifacts +clean: + rm -f kaze + rm -f *.db *.db-shm *.db-wal + +# Run tests +test: + go test -v ./... + +# Run tests with coverage +test-cover: + go test -v -coverprofile=coverage.out ./... + go tool cover -html=coverage.out -o coverage.html + +# Format code +fmt: + go fmt ./... + +# Lint code +lint: + go vet ./... + +# Tidy dependencies +tidy: + go mod tidy + +# Build for multiple platforms +build-all: build-linux build-darwin build-windows + +build-linux: + GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-linux-amd64 ./cmd/kaze + GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-linux-arm64 ./cmd/kaze + +build-darwin: + GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-darwin-amd64 ./cmd/kaze + GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-darwin-arm64 ./cmd/kaze + +build-windows: + GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-windows-amd64.exe ./cmd/kaze + +# Docker build +docker: + docker build -t kaze:$(VERSION) . + +# Help +help: + @echo "Available targets:" + @echo " build - Build the binary" + @echo " build-prod - Build optimized production binary" + @echo " run - Build and run" + @echo " dev - Build and run with debug logging" + @echo " clean - Remove build artifacts and databases" + @echo " test - Run tests" + @echo " test-cover - Run tests with coverage report" + @echo " fmt - Format code" + @echo " lint - Lint code" + @echo " tidy - Tidy dependencies" + @echo " build-all - Build for all platforms" + @echo " docker - Build Docker image" |