Initial commit
This commit is contained in:
55
Makefile
Normal file
55
Makefile
Normal file
@@ -0,0 +1,55 @@
|
||||
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/
|
||||
Reference in New Issue
Block a user