# Makefile for building the Go project

# Project settings
BINARY_NAME=p4ork
LINUX_BINARY=$(BINARY_NAME)
WINDOWS_BINARY=$(BINARY_NAME).exe

# Go related variables.
GOBASE=$(shell pwd)
GOPATH="$(GOBASE)/vendor:$(GOBASE)"
GOBIN=$(GOBASE)/bin
GOFILES=$(wildcard *.go)

# Go commands
GOCMD=go
GOBUILD=$(GOCMD) build
GOCLEAN=$(GOCMD) clean
GORUN=$(GOCMD) run

# Build targets
.PHONY: all build-linux build-windows clean run

all: build-linux build-windows

build-linux:
	@echo "Building for Linux..."
	@GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(GOBIN)/$(LINUX_BINARY) $(GOFILES)

build-windows:
	@echo "Building for Windows..."
	@GOOS=windows GOARCH=amd64 $(GOBUILD) -o $(GOBIN)/$(WINDOWS_BINARY) $(GOFILES)

clean:
	@$(GOCLEAN)
	@rm -f $(GOBIN)/$(LINUX_BINARY)
	@rm -f $(GOBIN)/$(WINDOWS_BINARY)

run:
	@$(GORUN) $(GOFILES)