.PHONY: help build build-linux build-windows build-all clean APP_NAME := luxtools-client DIST_DIR := dist NATIVE_GOOS := $(shell go env GOOS) NATIVE_GOARCH := $(shell go env GOARCH) NATIVE_EXT := $(if $(filter windows,$(NATIVE_GOOS)),.exe,) WINDOWS_GUI_LDFLAGS := $(if $(filter windows,$(NATIVE_GOOS)),-ldflags "-H=windowsgui",) # Native (current platform) NATIVE_EXE := $(APP_NAME)$(if $(filter windows,$(OS)),.exe,) help: @echo "Targets:" @echo " make build Build for current platform -> $(DIST_DIR)/$(APP_NAME)$(NATIVE_EXT) ($(NATIVE_GOOS)/$(NATIVE_GOARCH))" @echo " make build-linux Cross-compile -> $(DIST_DIR)/$(APP_NAME)-linux-amd64" @echo " make build-windows Cross-compile -> $(DIST_DIR)/$(APP_NAME)-windows-amd64.exe" @echo " make build-all Build linux + windows artifacts" @echo " make clean Remove $(DIST_DIR)/" $(DIST_DIR): @mkdir -p $(DIST_DIR) build: $(DIST_DIR) @echo "Building $(APP_NAME) for current platform..." go build -trimpath $(WINDOWS_GUI_LDFLAGS) -o $(DIST_DIR)/$(APP_NAME)$(NATIVE_EXT) . build-linux: $(DIST_DIR) @echo "Cross-compiling $(APP_NAME) for linux/amd64..." GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -o $(DIST_DIR)/$(APP_NAME)-linux-amd64 . build-windows: $(DIST_DIR) @echo "Cross-compiling $(APP_NAME) for windows/amd64..." GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags "-H=windowsgui" -o $(DIST_DIR)/$(APP_NAME)-windows-amd64.exe . build-all: build-linux build-windows clean: @rm -rf $(DIST_DIR)