BINARY := speedport-exporter VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev") COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "none") DATE := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ") LDFLAGS := -s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.date=$(DATE) GOFLAGS := -trimpath PLATFORMS := linux/amd64 linux/arm64 linux/arm .PHONY: all build run test clean docker cross all: build build: go build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BINARY) . run-status: build ./$(BINARY) status run-serve: build ./$(BINARY) serve test: go test -v ./... clean: rm -f $(BINARY) $(BINARY)-* # Cross-compile for common platforms (Pi, NAS, etc.) cross: @for platform in $(PLATFORMS); do \ os=$${platform%/*}; \ arch=$${platform#*/}; \ output=$(BINARY)-$${os}-$${arch}; \ echo "Building $$output..."; \ GOOS=$$os GOARCH=$$arch CGO_ENABLED=0 \ go build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $$output . ; \ done # Build for Raspberry Pi specifically (ARMv7 + ARM64) pi: GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 \ go build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BINARY)-linux-armv7 . GOOS=linux GOARCH=arm64 CGO_ENABLED=0 \ go build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BINARY)-linux-arm64 . docker: docker build \ --build-arg VERSION=$(VERSION) \ --build-arg COMMIT=$(COMMIT) \ --build-arg DATE=$(DATE) \ -t $(BINARY):$(VERSION) . install: build install -m 755 $(BINARY) /usr/local/bin/