BINARY := lazyntfy PREFIX ?= $(HOME)/.local BINDIR ?= $(PREFIX)/bin MANDIR ?= $(PREFIX)/share/man/man1 DOCDIR ?= $(PREFIX)/share/doc/$(BINARY) DESTDIR ?= VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null | sed 's/^v//' | grep . || echo 0.1.0) TOPIC ?= alerts GO ?= go GOFLAGS ?= -trimpath LDFLAGS := -X main.version=$(VERSION) .PHONY: all build install uninstall man test vet fmt run deb arch clean all: build build: $(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BINARY) ./cmd/lazyntfy # System-wide install: sudo make install PREFIX=/usr/local # Staged install: make install DESTDIR=/tmp/pkg PREFIX=/usr install: build install -Dm755 $(BINARY) "$(DESTDIR)$(BINDIR)/$(BINARY)" install -Dm644 man/lazyntfy.1 "$(DESTDIR)$(MANDIR)/lazyntfy.1" install -Dm644 LICENSE "$(DESTDIR)$(DOCDIR)/copyright" install -Dm644 README.md "$(DESTDIR)$(DOCDIR)/README.md" uninstall: rm -f "$(DESTDIR)$(BINDIR)/$(BINARY)" "$(DESTDIR)$(MANDIR)/lazyntfy.1" rm -rf "$(DESTDIR)$(DOCDIR)" man: install -Dm644 man/lazyntfy.1 "$(DESTDIR)$(MANDIR)/lazyntfy.1" test: $(GO) test ./... vet: $(GO) vet ./... fmt: gofmt -w . run: build ./$(BINARY) $(TOPIC) # Build a Debian/Ubuntu package. -d skips build-dependency checks so the # package can also be built on a machine without golang-go installed as a # distro package. deb: dpkg-buildpackage -us -uc -b -d mkdir -p dist mv -f ../$(BINARY)_*_*.deb ../$(BINARY)_*_*.changes ../$(BINARY)_*_*.buildinfo dist/ 2>/dev/null || true @echo " packages written to dist/" arch: cd packaging/archlinux && makepkg -f clean: rm -f $(BINARY) rm -rf dist -$(MAKE) -f debian/rules clean