# TV-Wall - Bauen und Paketieren
#
#   make                 lokal bauen (build/tvwall)
#   make pi64            fuer Raspberry Pi OS 64 Bit (Pi 3/4/5)
#   make pi32            fuer Raspberry Pi OS 32 Bit (Pi 2/3/Zero 2)
#   make dist            fertiges Installationspaket bauen (dist/*.tar.gz)
#   make run             lokal starten (ohne mpv, Web auf :8080)

BINARY  := tvwall
VERSION ?= 1.0.0
LDFLAGS := -s -w -X main.version=$(VERSION)
PKG     := ./cmd/tvwall

.PHONY: all build pi64 pi32 dist clean run test fmt vet

all: build

build:
	@mkdir -p build
	go build -trimpath -ldflags "$(LDFLAGS)" -o build/$(BINARY) $(PKG)

pi64:
	@mkdir -p build
	GOOS=linux GOARCH=arm64 CGO_ENABLED=0 \
		go build -trimpath -ldflags "$(LDFLAGS)" -o build/$(BINARY)-linux-arm64 $(PKG)

pi32:
	@mkdir -p build
	GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 \
		go build -trimpath -ldflags "$(LDFLAGS)" -o build/$(BINARY)-linux-arm $(PKG)

# Paket zum Kopieren auf den Pi: Binaries + Installer + Konfiguration.
dist: pi64 pi32
	@rm -rf dist/$(BINARY)-$(VERSION)
	@mkdir -p dist/$(BINARY)-$(VERSION)/build
	cp build/$(BINARY)-linux-arm64 build/$(BINARY)-linux-arm dist/$(BINARY)-$(VERSION)/build/
	cp -r install.sh config systemd scripts README.md dist/$(BINARY)-$(VERSION)/
	chmod +x dist/$(BINARY)-$(VERSION)/install.sh dist/$(BINARY)-$(VERSION)/scripts/*
	cd dist && tar czf $(BINARY)-$(VERSION).tar.gz $(BINARY)-$(VERSION)
	@echo
	@echo "Fertig: dist/$(BINARY)-$(VERSION).tar.gz"

fmt:
	gofmt -w ./cmd ./internal

vet:
	go vet ./...

test:
	go test ./...

run: build
	./build/$(BINARY) -no-player -config /dev/null -state-dir ./.devstate -addr :8080

clean:
	rm -rf build dist
