GO ?= go RM ?= rm GOFLAGS ?= -v -ldflags "-w -X `${GO} list`.Version=$(VERSION) -X `${GO} list`.Build=$(BUILD)" PREFIX ?= /usr/local BINDIR ?= bin MANDIR ?= share/man MKDIR ?= mkdir CP ?= cp SYSCONFDIR ?= /etc VERSION = 0.5.0 BUILD = `date +%Y.%m.%d-%H:%M:%S` all: help build: ## Compile suika (IRC bouncer) and its associated executables ${GO} build ${GOFLAGS} -trimpath -v ./cmd/... @strip -s suika suikadb suika-znc-import clean: ## Remove all compiled executables $(RM) -f suika suikadb suikactl suika-znc-import docs: ## Generate manual pages with AsciiDoc (optional) asciidoctor -b manpage doc/suika.adoc -o doc/suika.1 asciidoctor -b manpage doc/suikadb.adoc -o doc/suikadb.1 asciidoctor -b manpage doc/suika-config.adoc -o doc/suika-config.5 asciidoctor -b manpage doc/suika-bouncerserv.adoc -o doc/suika-bouncerserv.7 help: @echo "Available targets" @awk 'BEGIN {FS = ":.*## "}; /^[a-zA-Z0-9_.%-]+:.*## / {printf " %-12s%s\n", $$1, $$2}' ${MAKEFILE} install: ## Install suika alongside its documentation and configuration files $(MKDIR) -p $(DESTDIR)$(PREFIX)/$(BINDIR) $(MKDIR) -p $(DESTDIR)$(PREFIX)/$(MANDIR)/man1 $(MKDIR) -p $(DESTDIR)$(PREFIX)/$(MANDIR)/man5 $(MKDIR) -p $(DESTDIR)$(PREFIX)/$(MANDIR)/man7 $(MKDIR) -p $(DESTDIR)${SYSCONFDIR}/suika $(MKDIR) -p $(DESTDIR)/var/lib/suika $(CP) -f suika suikadb suika-znc-import $(DESTDIR)$(PREFIX)/$(BINDIR) $(CP) -f doc/suika.1 $(DESTDIR)$(PREFIX)/$(MANDIR)/man1 $(CP) -f doc/suikadb.1 $(DESTDIR)$(PREFIX)/$(MANDIR)/man1 $(CP) -f doc/suika-znc-import.1 $(DESTDIR)/$(MANDIR)/man1 $(CP) -f doc/suika-config.5 $(DESTDIR)$(PREFIX)/$(MANDIR)/man5 $(CP) -f doc/suika-bouncerserv.7 $(DESTDIR)$(PREFIX)/$(MANDIR)/man7 [ -f $(DESTDIR)${SYSCONFDIR}/suika/config ] || $(CP) -f config.in $(DESTDIR)${SYSCONFDIR}/suika/config test: ## Run test suite ${GO} test vendor: ## Vendor dependencies listed in go.mod ${GO} mod vendor .PHONY: build clean install