# 姜十三论坛 Jiang13 Forum - Makefile
# Go 1.26 单二进制编译，与 Gitea 打包方式一致

APP_NAME    := jiang13
MAIN_PKG    := ./cmd/jiang13
BUILD_DIR   := dist
VERSION     := 1.0.0
LDFLAGS     := -s -w -X main.version=$(VERSION)

GO          := go
GOFLAGS     := -trimpath

.PHONY: all build build-windows build-linux build-darwin clean run dev tidy help frontend frontend-build

all: build

frontend-build:
	cd frontend && npm install && npm run build

## 编译当前平台二进制
build: frontend-build
	@mkdir -p $(BUILD_DIR)
	$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(APP_NAME) $(MAIN_PKG)
	@echo "✓ 编译完成: $(BUILD_DIR)/$(APP_NAME)"

## Windows amd64
build-windows:
	@mkdir -p $(BUILD_DIR)
	GOOS=windows GOARCH=amd64 $(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(APP_NAME).exe $(MAIN_PKG)
	@echo "✓ Windows: $(BUILD_DIR)/$(APP_NAME).exe"

## Linux amd64
build-linux:
	@mkdir -p $(BUILD_DIR)
	GOOS=linux GOARCH=amd64 $(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(APP_NAME)-linux-amd64 $(MAIN_PKG)
	@echo "✓ Linux: $(BUILD_DIR)/$(APP_NAME)-linux-amd64"

## macOS arm64 (Apple Silicon)
build-darwin:
	@mkdir -p $(BUILD_DIR)
	GOOS=darwin GOARCH=arm64 $(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(APP_NAME)-darwin-arm64 $(MAIN_PKG)
	@echo "✓ macOS: $(BUILD_DIR)/$(APP_NAME)-darwin-arm64"

## 跨平台全量编译
build-all: build-windows build-linux build-darwin build
	@echo "✓ 全平台编译完成"

## 整理依赖
tidy:
	$(GO) mod tidy

## 本地运行（仅后端，使用已 embed 的前端）
run:
	$(GO) run $(MAIN_PKG) --port 3000 --data ./data

## 前端热更新开发（后端 :3000 + Vite :5173，Ctrl+C 同时退出）
dev:
	@echo "前端热更新: http://localhost:5173"
	@echo "后端 API  : http://localhost:3000"
	@trap 'kill 0' INT; \
	$(GO) run $(MAIN_PKG) --port 3000 --data ./data & \
	cd frontend && (test -d node_modules || npm install) && npm run dev

## 清理编译产物
clean:
	rm -rf $(BUILD_DIR)

help:
	@echo "姜十三论坛编译命令:"
	@echo "  make build          - 编译当前平台"
	@echo "  make build-windows  - 编译 Windows"
	@echo "  make build-linux    - 编译 Linux"
	@echo "  make build-darwin   - 编译 macOS"
	@echo "  make build-all      - 编译全部平台"
	@echo "  make run            - 仅启动后端（:3000）"
	@echo "  make dev            - 前端热更新开发（:5173 + :3000）"
