# Makefile for GoAIDB - Multi-architecture build support

BINARY_NAME=goaidb
BUILD_DIR=build
GOOS ?= $(shell go env GOOS)
GOARCH ?= $(shell go env GOARCH)

.PHONY: all build clean run

all: linux-amd64 linux-arm64 darwin-amd64 darwin-arm64 windows-amd64

$(BUILD_DIR)/%:
	mkdir -p $@

linux-amd64: | $(BUILD_DIR)/linux-amd64
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $(BUILD_DIR)/linux-amd64/$(BINARY_NAME)

linux-arm64: | $(BUILD_DIR)/linux-arm64
	CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o $(BUILD_DIR)/linux-arm64/$(BINARY_NAME)

darwin-amd64: | $(BUILD_DIR)/darwin-amd64
	CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o $(BUILD_DIR)/darwin-amd64/$(BINARY_NAME)

darwin-arm64: | $(BUILD_DIR)/darwin-arm64
	CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o $(BUILD_DIR)/darwin-arm64/$(BINARY_NAME)

windows-amd64: | $(BUILD_DIR)/windows-amd64
	CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o $(BUILD_DIR)/windows-amd64/$(BINARY_NAME).exe

build:
	go build -o $(BINARY_NAME)

clean:
	rm -rf $(BUILD_DIR)/* $(BINARY_NAME) $(BINARY_NAME).exe

run:
	./$(BINARY_NAME)