SHELL := /usr/bin/env bash GO ?= go GOFMT ?= gofmt INSTALL ?= install PREFIX ?= $(HOME)/.local BINDIR ?= $(PREFIX)/bin DESTDIR ?= BINARIES := banger bangerd GO_SOURCES := $(shell find cmd internal -type f -name '*.go' | sort) .DEFAULT_GOAL := help .PHONY: help build banger bangerd test fmt tidy clean rootfs install help: @printf '%s\n' \ 'Targets:' \ ' make build Build ./banger and ./bangerd' \ ' make install Build and install binaries into $(DESTDIR)$(BINDIR)' \ ' make test Run go test ./...' \ ' make fmt Format Go sources under cmd/ and internal/' \ ' make tidy Run go mod tidy' \ ' make clean Remove built Go binaries' \ ' make rootfs Run ./make-rootfs.sh' build: $(BINARIES) banger: $(GO_SOURCES) go.mod go.sum $(GO) build -o ./banger ./cmd/banger bangerd: $(GO_SOURCES) go.mod go.sum $(GO) build -o ./bangerd ./cmd/bangerd test: $(GO) test ./... fmt: $(GOFMT) -w $(GO_SOURCES) tidy: $(GO) mod tidy clean: rm -f ./banger ./bangerd install: build mkdir -p "$(DESTDIR)$(BINDIR)" $(INSTALL) -m 0755 ./banger "$(DESTDIR)$(BINDIR)/banger" $(INSTALL) -m 0755 ./bangerd "$(DESTDIR)$(BINDIR)/bangerd" rootfs: ./make-rootfs.sh