BINARY  := meshgo
GOOS    := linux
GOARCH  := amd64
OUT     := ./build/$(BINARY)

.PHONY: all build build-linux build-win install clean

all: build

## 本机编译（Windows CGO）
build:
	@mkdir -p build
	CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o $(OUT) .
	@echo ">>> 已生成: $(OUT)"

## Linux 交叉编译（需要目标机器有 gcc，可选）
## 若遇 sqlite3 链接错误，请在 Linux 服务器上直接编译：
##   make build-linux-native
build-linux:
	@mkdir -p build
	CGO_ENABLED=1 GOOS=$(GOOS) GOARCH=$(GOARCH) CC=x86_64-linux-gnu-gcc \
		go build -trimpath -ldflags="-s -w" -o $(OUT) .
	@echo ">>> 已生成 Linux $(GOARCH) 二进制: $(OUT)"

## Linux 服务器上原生编译（推荐生产环境使用）
build-linux-native:
	@mkdir -p build
	CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o $(OUT) .
	@echo ">>> 已生成: $(OUT)"

## 部署到目标机器（需要 SSH_HOST 环境变量，如 make install SSH_HOST=root@192.168.1.10）
install: build
	@test -n "$(SSH_HOST)" || (echo "请设置 SSH_HOST，例如: make install SSH_HOST=root@192.168.1.10" && exit 1)
	scp $(OUT) $(SSH_HOST):/usr/local/bin/$(BINARY)
	scp meshgo.service $(SSH_HOST):/etc/systemd/system/$(BINARY).service
	ssh $(SSH_HOST) "systemctl daemon-reload && systemctl enable $(BINARY) && systemctl restart $(BINARY)"
	@echo ">>> 部署完成"

clean:
	rm -rf build/
