56 lines
1.5 KiB
Makefile
56 lines
1.5 KiB
Makefile
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/
|