VERSION := $(shell git describe --tags --abbrev=0 2>/dev/null || echo "dev") COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown") BUILD_TIME := $(shell date "+%Y-%m-%d %H:%M:%S") LDFLAGS := -X 'gosvc.setVersionNumber=$(VERSION)' \ -X 'gosvc.setVersionRelease=$(BRANCH)' \ -X 'gosvc.setVersionBuildTime=$(BUILD_TIME)' \ -X 'gosvc.setVersionDescription=RobotFS Service (commit: $(COMMIT))' UNAME_S := $(shell uname -s) BINARY_NAME := robotfs BINARY_MAC := $(BINARY_NAME)-darwin BINARY_LINUX := $(BINARY_NAME)-linux .PHONY: all all: build .PHONY: build build: ifeq ($(UNAME_S),Darwin) @echo "Building for MacOS..." GOOS=darwin GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o $(BINARY_MAC) ./ else @echo "Building for Linux..." GOOS=linux GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o $(BINARY_LINUX) ./ endif .PHONY: clean clean: rm -f $(BINARY_NAME) $(BINARY_MAC) $(BINARY_LINUX) .PHONY: help help: @echo "Available targets:" @echo " all - Build for current platform (default)" @echo " build - Build for current platform" @echo " clean - Remove built binaries"