-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
123 lines (104 loc) · 3.68 KB
/
Makefile
File metadata and controls
123 lines (104 loc) · 3.68 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
# Makefile for sword-macro-ai
APP_NAME := SwordMacro
API_NAME := SwordAPI
VERSION := 2.0.0
BUILD_DIR := build
CMD_DIR := cmd/sword-macro
API_DIR := cmd/sword-api
# Go 설정
GO := go
GOFLAGS := -ldflags="-s -w"
# 플랫폼별 설정
DARWIN_AMD64 := GOOS=darwin GOARCH=amd64
DARWIN_ARM64 := GOOS=darwin GOARCH=arm64
WINDOWS_AMD64 := GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc
.PHONY: all clean build-mac build-mac-arm64 build-windows build-api deps
all: clean deps build-mac
# 의존성 설치
deps:
@echo "📦 의존성 설치 중..."
$(GO) mod tidy
$(GO) mod download
# macOS 빌드 (현재 아키텍처)
build-mac:
@echo "🔨 macOS 빌드 중..."
@mkdir -p $(BUILD_DIR)
$(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(APP_NAME) ./$(CMD_DIR)
@echo "✅ 빌드 완료: $(BUILD_DIR)/$(APP_NAME)"
@ls -lh $(BUILD_DIR)/$(APP_NAME)
# macOS ARM64 (Apple Silicon)
build-mac-arm64:
@echo "🔨 macOS ARM64 빌드 중..."
@mkdir -p $(BUILD_DIR)
$(DARWIN_ARM64) $(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-darwin-arm64 ./$(CMD_DIR)
@echo "✅ 빌드 완료: $(BUILD_DIR)/$(APP_NAME)-darwin-arm64"
# macOS AMD64 (Intel)
build-mac-amd64:
@echo "🔨 macOS AMD64 빌드 중..."
@mkdir -p $(BUILD_DIR)
$(DARWIN_AMD64) $(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-darwin-amd64 ./$(CMD_DIR)
@echo "✅ 빌드 완료: $(BUILD_DIR)/$(APP_NAME)-darwin-amd64"
# macOS Universal Binary
build-mac-universal: build-mac-arm64 build-mac-amd64
@echo "🔨 Universal Binary 생성 중..."
lipo -create -output $(BUILD_DIR)/$(APP_NAME)-darwin-universal \
$(BUILD_DIR)/$(APP_NAME)-darwin-arm64 \
$(BUILD_DIR)/$(APP_NAME)-darwin-amd64
@echo "✅ Universal Binary 완료: $(BUILD_DIR)/$(APP_NAME)-darwin-universal"
# Windows 빌드 (크로스 컴파일 - mingw 필요)
build-windows:
@echo "🔨 Windows 빌드 중..."
@echo "⚠️ Windows 빌드는 Windows에서 실행하거나 mingw-w64가 필요합니다."
@mkdir -p $(BUILD_DIR)
$(WINDOWS_AMD64) $(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(APP_NAME).exe ./$(CMD_DIR)
@echo "✅ 빌드 완료: $(BUILD_DIR)/$(APP_NAME).exe"
# API 서버 빌드
build-api:
@echo "🔨 API 서버 빌드 중..."
@mkdir -p $(BUILD_DIR)
$(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(API_NAME) ./$(API_DIR)
@echo "✅ 빌드 완료: $(BUILD_DIR)/$(API_NAME)"
@ls -lh $(BUILD_DIR)/$(API_NAME)
# API 서버 빌드 (Linux - Docker/서버용)
build-api-linux:
@echo "🔨 API 서버 Linux 빌드 중..."
@mkdir -p $(BUILD_DIR)
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 $(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(API_NAME)-linux ./$(API_DIR)
@echo "✅ 빌드 완료: $(BUILD_DIR)/$(API_NAME)-linux"
# 개발용 실행 (클라이언트)
run:
$(GO) run ./$(CMD_DIR)
# API 서버 실행
run-api:
$(GO) run ./$(API_DIR)
# 테스트
test:
$(GO) test -v ./...
# 정리
clean:
@echo "🗑️ 정리 중..."
rm -rf $(BUILD_DIR)
@echo "✅ 정리 완료"
# 크기 확인
size:
@echo "📊 빌드 크기:"
@ls -lh $(BUILD_DIR)/* 2>/dev/null || echo "빌드 파일 없음"
# 도움말
help:
@echo "사용법:"
@echo ""
@echo " 📦 클라이언트 (매크로)"
@echo " make deps - 의존성 설치"
@echo " make build-mac - macOS 빌드 (현재 아키텍처)"
@echo " make build-mac-universal - macOS Universal Binary"
@echo " make build-windows - Windows 빌드 (크로스 컴파일)"
@echo " make run - 개발 모드 실행"
@echo ""
@echo " 🌐 API 서버"
@echo " make build-api - API 서버 빌드"
@echo " make build-api-linux - API 서버 Linux 빌드"
@echo " make run-api - API 서버 실행"
@echo ""
@echo " 🛠️ 기타"
@echo " make clean - 빌드 정리"
@echo " make size - 빌드 크기 확인"