-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
83 lines (64 loc) · 2.22 KB
/
Makefile
File metadata and controls
83 lines (64 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Logdump Makefile
BINARY_NAME=logdump
VERSION=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
COMMIT=$(shell git rev-parse --short HEAD 2>/dev/null || echo "none")
BUILD_TIME=$(shell date -u '+%Y-%m-%d_%H:%M:%S')
LDFLAGS=-ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT)"
# Apple code signing (set APPLE_DEVELOPER_ID env var to enable)
# Example: APPLE_DEVELOPER_ID=YOUR_CERT_HASH make build-signed
.PHONY: all build build-signed clean install test lint
all: build
build:
@echo "Building $(BINARY_NAME)..."
go build $(LDFLAGS) -o $(BINARY_NAME) .
build-signed: build
@if [ "$$(uname)" = "Darwin" ] && [ -n "$(APPLE_DEVELOPER_ID)" ]; then \
echo "Signing binary..."; \
codesign --force --options runtime --sign "$(APPLE_DEVELOPER_ID)" $(BINARY_NAME); \
echo "Binary signed successfully"; \
elif [ "$$(uname)" = "Darwin" ]; then \
echo "Skipping code signing (set APPLE_DEVELOPER_ID to enable)"; \
else \
echo "Skipping code signing (not macOS)"; \
fi
install: build
@echo "Installing to ~/.local/bin..."
@mkdir -p ~/.local/bin
@cp $(BINARY_NAME) ~/.local/bin/$(BINARY_NAME)
@chmod +x ~/.local/bin/$(BINARY_NAME)
@echo "Installed to ~/.local/bin/$(BINARY_NAME)"
uninstall:
@rm -f ~/.local/bin/$(BINARY_NAME)
@echo "Uninstalled $(BINARY_NAME)"
test:
go test -v ./...
lint:
@if command -v golangci-lint >/dev/null 2>&1; then \
golangci-lint run; \
else \
echo "golangci-lint not installed, skipping"; \
fi
clean:
@rm -f $(BINARY_NAME)
@rm -rf dist/
@echo "Cleaned"
# Cross-compilation targets
build-linux:
GOOS=linux GOARCH=amd64 go build $(LDFLAGS) -o $(BINARY_NAME)-linux-amd64 .
GOOS=linux GOARCH=arm64 go build $(LDFLAGS) -o $(BINARY_NAME)-linux-arm64 .
build-darwin:
GOOS=darwin GOARCH=amd64 go build $(LDFLAGS) -o $(BINARY_NAME)-darwin-amd64 .
GOOS=darwin GOARCH=arm64 go build $(LDFLAGS) -o $(BINARY_NAME)-darwin-arm64 .
build-windows:
GOOS=windows GOARCH=amd64 go build $(LDFLAGS) -o $(BINARY_NAME)-windows-amd64.exe .
build-all: build-linux build-darwin build-windows
# Release with goreleaser
release:
goreleaser release --clean
release-snapshot:
goreleaser release --snapshot --clean
# Development
dev: build
./$(BINARY_NAME)
dev-mcp: build
./$(BINARY_NAME) -mcp