PROJECT_NAME := sec-cycle-scan
GO_VERSION := 1.20.4
GOOS ?= $(shell go env GOOS)
GOARCH ?= $(shell go env GOARCH)

OUTPUT_DIR ?= ./bin

# 定义编译时间和提交编号变量
BUILD_TIME := $(shell date -u '+%Y-%m-%d_%H:%M:%S')
COMMIT_SHA := $(shell git rev-parse --short HEAD)

# 定义编译选项
BUILD_FLAGS := -ldflags="-s -w \
	-X 'main.appName=$(PROJECT_NAME)' \
	-X 'main.buildTime=$(BUILD_TIME)' \
	-X 'main.commitID=$(COMMIT_SHA)'"

.PHONY: all build run clean build-linux build-m1

all: build

build:
	@echo "Building $(PROJECT_NAME) for $(GOOS)/$(GOARCH)..."
	GOOS=$(GOOS) GOARCH=$(GOARCH) go build $(BUILD_FLAGS) -o $(OUTPUT_DIR)/$(PROJECT_NAME)

build-linux:
	@echo "Building $(PROJECT_NAME) for linux/amd64..."
	GOOS=linux GOARCH=amd64 go build $(BUILD_FLAGS) -o $(OUTPUT_DIR)/$(PROJECT_NAME)-amd64

build-m1:
	@echo "Building $(PROJECT_NAME) for darwin/arm64..."
	GOOS=darwin GOARCH=arm64 go build $(BUILD_FLAGS) -o $(OUTPUT_DIR)/$(PROJECT_NAME)-arm64

run:
	@echo "Running $(PROJECT_NAME)..."
	$(OUTPUT_DIR)/$(PROJECT_NAME)

clean:
	@echo "Cleaning $(PROJECT_NAME)..."
	rm -rf $(OUTPUT_DIR)
