LECTIO := lectio LECTIO_UI := lectio-ui LECTIO_WEB := lectio-web PREFIX ?= $(HOME)/.local BINDIR := $(PREFIX)/bin .PHONY: help build install uninstall test vet fmt clean cross help: ## show this help @grep -hE '^[a-z-]+:.*##' $(MAKEFILE_LIST) | sed -E 's/:.*## /\t/' | sort build: ## build ./lectio, ./lectio-ui and ./lectio-web go build -o $(LECTIO) ./cmd/lectio go build -o $(LECTIO_UI) ./cmd/lectio-ui go build -o $(LECTIO_WEB) ./cmd/lectio-web install: ## build and install all three to $(BINDIR) @mkdir -p $(BINDIR) go build -o $(BINDIR)/$(LECTIO) ./cmd/lectio go build -o $(BINDIR)/$(LECTIO_UI) ./cmd/lectio-ui go build -o $(BINDIR)/$(LECTIO_WEB) ./cmd/lectio-web @echo "installed $(BINDIR)/$(LECTIO), $(BINDIR)/$(LECTIO_UI) and $(BINDIR)/$(LECTIO_WEB)" uninstall: ## remove installed binaries rm -f $(BINDIR)/$(LECTIO) $(BINDIR)/$(LECTIO_UI) $(BINDIR)/$(LECTIO_WEB) test: ## run tests go test ./... vet: ## go vet go vet ./... fmt: ## gofmt the tree gofmt -w . clean: ## remove build artifacts rm -f $(LECTIO) $(LECTIO_UI) $(LECTIO_WEB); rm -rf dist cross: ## cross-compile into dist/ @mkdir -p dist @for t in linux/amd64 linux/arm64 darwin/arm64 darwin/amd64 windows/amd64; do \ os=$${t%/*}; arch=$${t#*/}; ext=; [ $$os = windows ] && ext=.exe; \ echo " $$os/$$arch"; \ GOOS=$$os GOARCH=$$arch go build -o dist/$(LECTIO)-$$os-$$arch$$ext ./cmd/lectio; \ GOOS=$$os GOARCH=$$arch go build -o dist/$(LECTIO_UI)-$$os-$$arch$$ext ./cmd/lectio-ui; \ GOOS=$$os GOARCH=$$arch go build -o dist/$(LECTIO_WEB)-$$os-$$arch$$ext ./cmd/lectio-web; \ done