# Makefile for SimpleRemoter Go Server # Compatible with GnuWin32 make on Windows cmd # Binary name BINARY_NAME=server # Build directory BUILD_DIR=build # Main package path MAIN_PACKAGE=./cmd # Go build flags (strip debug info for smaller binary) LDFLAGS=-ldflags "-s -w" # Windows commands MKDIR=if not exist $(BUILD_DIR) mkdir $(BUILD_DIR) RMDIR=if exist $(BUILD_DIR) rmdir /s /q $(BUILD_DIR) .PHONY: all clean windows linux build help windows-386 linux-arm64 all-platforms test fmt deps sync # Default target all: clean windows linux # Sync web assets from server/web/ into web/assets/ for //go:embed. # Single source of truth is server/web/index.html; this just keeps a vendored copy. sync: @echo Syncing web assets from ../web/... @if not exist web\assets mkdir web\assets @copy /Y ..\web\index.html web\assets\index.html >nul @echo Done # Build for current platform build: sync @echo Building for current platform... @$(MKDIR) go build $(LDFLAGS) -o $(BUILD_DIR)\$(BINARY_NAME).exe $(MAIN_PACKAGE) @echo Done # Build for Windows (amd64) windows: sync @echo Building for Windows amd64... @$(MKDIR) set GOOS=windows&& set GOARCH=amd64&& go build $(LDFLAGS) -o $(BUILD_DIR)\$(BINARY_NAME)_windows_amd64.exe $(MAIN_PACKAGE) @echo Done: $(BUILD_DIR)\$(BINARY_NAME)_windows_amd64.exe # Build for Windows (386) windows-386: sync @echo Building for Windows 386... @$(MKDIR) set GOOS=windows&& set GOARCH=386&& go build $(LDFLAGS) -o $(BUILD_DIR)\$(BINARY_NAME)_windows_386.exe $(MAIN_PACKAGE) @echo Done: $(BUILD_DIR)\$(BINARY_NAME)_windows_386.exe # Build for Linux (amd64) linux: sync @echo Building for Linux amd64... @$(MKDIR) set GOOS=linux&& set GOARCH=amd64&& go build $(LDFLAGS) -o $(BUILD_DIR)\$(BINARY_NAME)_linux_amd64 $(MAIN_PACKAGE) @echo Done: $(BUILD_DIR)\$(BINARY_NAME)_linux_amd64 # Build for Linux (arm64) linux-arm64: sync @echo Building for Linux arm64... @$(MKDIR) set GOOS=linux&& set GOARCH=arm64&& go build $(LDFLAGS) -o $(BUILD_DIR)\$(BINARY_NAME)_linux_arm64 $(MAIN_PACKAGE) @echo Done: $(BUILD_DIR)\$(BINARY_NAME)_linux_arm64 # Build all platforms all-platforms: windows windows-386 linux linux-arm64 # Clean build artifacts clean: @echo Cleaning... @$(RMDIR) @echo Done # Run tests test: go test -v ./... # Format code fmt: go fmt ./... # Download dependencies deps: go mod download go mod tidy # Show help help: @echo Available targets: @echo all - Build for Windows and Linux amd64 @echo build - Build for current platform @echo windows - Build for Windows amd64 @echo windows-386 - Build for Windows 386 @echo linux - Build for Linux amd64 @echo linux-arm64 - Build for Linux arm64 @echo all-platforms - Build for all platforms @echo sync - Sync web assets from ../web/ for //go:embed @echo clean - Clean build directory @echo test - Run tests @echo fmt - Format code @echo deps - Download dependencies