-
Notifications
You must be signed in to change notification settings - Fork 55
Expand file tree
/
Copy pathMakefile
More file actions
127 lines (98 loc) · 3.83 KB
/
Makefile
File metadata and controls
127 lines (98 loc) · 3.83 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
VERSION := 2.2.0
BUILD := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
PROJECTNAME := lsbot
GOBASE := $(shell pwd)
GOBIN := $(GOBASE)/dist
GOARCH ?= $(shell go env GOARCH)
GOOS ?= $(shell go env GOOS)
LDFLAGS=-ldflags "-X github.com/pltanton/lsbot/internal/mcp.ServerVersion=$(VERSION) -X main.Build=$(BUILD) -w -s"
LDFLAGS_DEBUG=-ldflags "-X github.com/pltanton/lsbot/internal/mcp.ServerVersion=$(VERSION) -X main.Build=$(BUILD) -X github.com/pltanton/lsbot/internal/debug.enabled=true"
GOBUILD=go build $(LDFLAGS)
GOBUILD_DEBUG=go build $(LDFLAGS_DEBUG)
.PHONY: all build build-debug clean install uninstall test darwin-all darwin-arm64 darwin-amd64 darwin-universal linux-all linux-amd64 linux-arm64 windows-all windows-amd64 windows-arm64 ios-framework android-lib
# Default: build for current platform
build:
$(GOBUILD) -o $(GOBIN)/$(PROJECTNAME) .
# Debug build with verbose logging
build-debug:
$(GOBUILD_DEBUG) -o $(GOBIN)/$(PROJECTNAME)-debug .
# Build all platforms
all: darwin-all linux-all windows-all
darwin-all: darwin-amd64 darwin-arm64
# macOS builds
darwin-amd64:
CGO_ENABLED=0 GOARCH=amd64 GOOS=darwin $(GOBUILD) -o $(GOBIN)/$(PROJECTNAME)-$(VERSION)-darwin-amd64 .
darwin-arm64:
CGO_ENABLED=0 GOARCH=arm64 GOOS=darwin $(GOBUILD) -o $(GOBIN)/$(PROJECTNAME)-$(VERSION)-darwin-arm64 .
darwin-universal: darwin-amd64 darwin-arm64
lipo -create -output $(GOBIN)/$(PROJECTNAME)-$(VERSION)-darwin-universal \
$(GOBIN)/$(PROJECTNAME)-$(VERSION)-darwin-amd64 \
$(GOBIN)/$(PROJECTNAME)-$(VERSION)-darwin-arm64
# Linux builds
linux-amd64:
CGO_ENABLED=0 GOARCH=amd64 GOOS=linux $(GOBUILD) -o $(GOBIN)/$(PROJECTNAME)-$(VERSION)-linux-amd64 .
linux-arm64:
CGO_ENABLED=0 GOARCH=arm64 GOOS=linux $(GOBUILD) -o $(GOBIN)/$(PROJECTNAME)-$(VERSION)-linux-arm64 .
linux-all: linux-amd64 linux-arm64
# Windows builds
windows-amd64:
CGO_ENABLED=0 GOARCH=amd64 GOOS=windows $(GOBUILD) -o $(GOBIN)/$(PROJECTNAME)-$(VERSION)-windows-amd64.exe .
windows-arm64:
CGO_ENABLED=0 GOARCH=arm64 GOOS=windows $(GOBUILD) -o $(GOBIN)/$(PROJECTNAME)-$(VERSION)-windows-arm64.exe .
windows-all: windows-amd64 windows-arm64
# Mobile framework builds (requires: go install golang.org/x/mobile/cmd/gomobile@latest && gomobile init)
ios-framework:
mkdir -p $(GOBIN)
gomobile bind -target ios -o $(GOBIN)/lsbot.xcframework \
-ldflags "-X github.com/ruilisi/lsbot/internal/mcp.ServerVersion=$(VERSION)" \
./mobile/
cd $(GOBIN) && zip -r lsbot-$(VERSION)-ios.xcframework.zip lsbot.xcframework
@echo "iOS XCFramework: $(GOBIN)/lsbot-$(VERSION)-ios.xcframework.zip"
android-lib:
mkdir -p $(GOBIN)
gomobile bind -target android -o $(GOBIN)/lsbot.aar \
-ldflags "-X github.com/ruilisi/lsbot/internal/mcp.ServerVersion=$(VERSION)" \
./mobile/
@echo "Android AAR: $(GOBIN)/lsbot.aar"
# Code signing (macOS)
codesign:
codesign --verbose --force --deep -o runtime --sign "Developer ID Application: Suzhou Ruilisi Technology Co.,Ltd. (ACK44BB9HY)" $(GOBIN)/$(PROJECTNAME)-$(VERSION)-darwin-universal
# Install as system service
install: build
@echo "Installing $(PROJECTNAME)..."
$(GOBIN)/$(PROJECTNAME) service install
# Uninstall system service
uninstall:
@echo "Uninstalling $(PROJECTNAME)..."
$(GOBIN)/$(PROJECTNAME) service uninstall
# Start service
start:
$(GOBIN)/$(PROJECTNAME) service start
# Stop service
stop:
$(GOBIN)/$(PROJECTNAME) service stop
# Service status
status:
$(GOBIN)/$(PROJECTNAME) service status
# Run tests
test:
go test -race -count=1 ./...
# Clean build artifacts
clean:
rm -rf $(GOBIN)
rm -f $(PROJECTNAME)
# Format code
fmt:
go fmt ./...
# Lint code
lint:
golangci-lint run
# Run locally (for development)
run:
go run . serve
# relay-debug: dev mode with verbose logging and live reload on code changes
relay-debug:
$(shell go env GOPATH)/bin/air -- relay --log debug
# Show version
version:
@echo "$(PROJECTNAME) $(VERSION) ($(BUILD))"