2019-05-31 00:20:20 +02:00
|
|
|
.POSIX:
|
|
|
|
.SUFFIXES:
|
|
|
|
.SUFFIXES: .1 .5 .7 .1.scd .5.scd .7.scd
|
2019-06-18 15:42:41 +02:00
|
|
|
|
2022-09-01 10:08:54 +02:00
|
|
|
VERSION!=git describe --long --abbrev=12 --tags --dirty 2>/dev/null || echo 0.12.0
|
2019-05-31 00:20:20 +02:00
|
|
|
VPATH=doc
|
2019-05-22 18:35:44 +02:00
|
|
|
PREFIX?=/usr/local
|
2020-06-28 20:36:22 +02:00
|
|
|
BINDIR?=$(PREFIX)/bin
|
|
|
|
SHAREDIR?=$(PREFIX)/share/aerc
|
|
|
|
MANDIR?=$(PREFIX)/share/man
|
2019-07-20 11:29:31 +02:00
|
|
|
GO?=go
|
2019-05-22 18:23:24 +02:00
|
|
|
GOFLAGS?=
|
2022-06-22 12:11:58 +02:00
|
|
|
BUILD_OPTS?=-trimpath
|
2022-08-22 20:23:16 +02:00
|
|
|
flags!=echo -- $(GOFLAGS) | base64 | tr -d '\n'
|
2022-03-28 14:33:17 +02:00
|
|
|
# ignore environment variable
|
|
|
|
GO_LDFLAGS:=
|
|
|
|
GO_LDFLAGS+=-X main.Version=$(VERSION)
|
2022-08-22 20:23:16 +02:00
|
|
|
GO_LDFLAGS+=-X main.Flags=$(flags)
|
2022-03-28 14:33:17 +02:00
|
|
|
GO_LDFLAGS+=-X git.sr.ht/~rjarry/aerc/config.shareDir=$(SHAREDIR)
|
|
|
|
GO_LDFLAGS+=$(GO_EXTRA_LDFLAGS)
|
2019-05-22 18:23:24 +02:00
|
|
|
|
2022-02-23 20:17:19 +01:00
|
|
|
GOSRC!=find * -name '*.go'
|
2019-05-29 20:57:17 +02:00
|
|
|
GOSRC+=go.mod go.sum
|
2019-05-26 16:27:22 +02:00
|
|
|
|
2022-01-21 20:56:24 +01:00
|
|
|
DOCS := \
|
|
|
|
aerc.1 \
|
|
|
|
aerc-search.1 \
|
|
|
|
aerc-config.5 \
|
|
|
|
aerc-imap.5 \
|
|
|
|
aerc-maildir.5 \
|
|
|
|
aerc-sendmail.5 \
|
|
|
|
aerc-notmuch.5 \
|
|
|
|
aerc-smtp.5 \
|
|
|
|
aerc-tutorial.7 \
|
|
|
|
aerc-templates.7 \
|
|
|
|
aerc-stylesets.7
|
|
|
|
|
2022-02-19 14:06:57 +01:00
|
|
|
all: aerc $(DOCS)
|
2022-01-21 20:56:24 +01:00
|
|
|
|
2022-06-22 12:11:58 +02:00
|
|
|
build_cmd:=$(GO) build $(BUILD_OPTS) $(GOFLAGS) -ldflags "$(GO_LDFLAGS)" -o aerc
|
2022-02-23 20:27:09 +01:00
|
|
|
|
|
|
|
# the following command outputs nothing, we only want to execute it once
|
|
|
|
# and force .aerc.d to be regenerated when build_cmd has changed
|
2022-04-14 21:47:06 +02:00
|
|
|
_!=grep -sqFx '$(build_cmd)' .aerc.d || rm -f .aerc.d
|
2022-02-23 20:27:09 +01:00
|
|
|
|
|
|
|
.aerc.d:
|
2022-09-20 11:37:22 +02:00
|
|
|
@echo 'GOFLAGS have changed, recompiling'
|
2022-02-23 20:27:09 +01:00
|
|
|
@echo '$(build_cmd)' > $@
|
|
|
|
|
|
|
|
aerc: $(GOSRC) .aerc.d
|
|
|
|
$(build_cmd)
|
2019-05-17 19:45:20 +02:00
|
|
|
|
2022-06-22 12:12:00 +02:00
|
|
|
.PHONY: dev
|
|
|
|
dev:
|
|
|
|
$(MAKE) aerc BUILD_OPTS="-trimpath -race"
|
|
|
|
GORACE="log_path=race.log strip_path_prefix=git.sr.ht/~rjarry/aerc/" ./aerc
|
|
|
|
|
2021-12-11 22:03:25 +01:00
|
|
|
.PHONY: fmt
|
|
|
|
fmt:
|
2022-07-31 22:16:39 +02:00
|
|
|
$(GO) run mvdan.cc/gofumpt -w .
|
2021-12-11 22:03:25 +01:00
|
|
|
|
2022-06-24 21:46:51 +02:00
|
|
|
.PHONY: lint
|
|
|
|
lint:
|
2022-07-31 22:16:39 +02:00
|
|
|
@$(GO) run mvdan.cc/gofumpt -l . | grep ^ \
|
|
|
|
&& echo The above files need to be formatted, please run make fmt && exit 1 \
|
|
|
|
|| echo all files formatted.
|
2022-07-30 13:00:37 +02:00
|
|
|
$(GO) run github.com/golangci/golangci-lint/cmd/golangci-lint run
|
2022-09-14 18:25:11 +02:00
|
|
|
$(GO) run golang.org/x/vuln/cmd/govulncheck@latest ./...
|
2022-06-22 12:25:57 +02:00
|
|
|
|
2022-05-10 09:58:54 +02:00
|
|
|
.PHONY: tests
|
|
|
|
tests:
|
|
|
|
$(GO) test $(GOFLAGS) -v ./...
|
|
|
|
|
2022-02-02 20:44:29 +01:00
|
|
|
.PHONY: debug
|
|
|
|
debug: aerc.debug
|
|
|
|
@echo 'Run `./aerc.debug` and use this command in another terminal to attach a debugger:'
|
|
|
|
@echo ' dlv attach $$(pidof aerc.debug)'
|
|
|
|
|
|
|
|
aerc.debug: $(GOSRC)
|
2022-03-28 14:33:17 +02:00
|
|
|
$(GO) build $(GOFLAGS) -gcflags=*=-N -gcflags=*=-l -ldflags="$(GO_LDFLAGS)" -o aerc.debug
|
2020-11-12 09:00:07 +01:00
|
|
|
|
2019-05-31 00:20:20 +02:00
|
|
|
.1.scd.1:
|
|
|
|
scdoc < $< > $@
|
|
|
|
|
|
|
|
.5.scd.5:
|
|
|
|
scdoc < $< > $@
|
|
|
|
|
|
|
|
.7.scd.7:
|
|
|
|
scdoc < $< > $@
|
|
|
|
|
2019-05-22 18:35:44 +02:00
|
|
|
doc: $(DOCS)
|
|
|
|
|
2019-05-31 00:20:20 +02:00
|
|
|
# Exists in GNUMake but not in NetBSD make and others.
|
|
|
|
RM?=rm -f
|
|
|
|
|
2019-05-17 19:45:20 +02:00
|
|
|
clean:
|
2022-02-19 14:06:57 +01:00
|
|
|
$(RM) $(DOCS) aerc
|
2019-05-17 19:45:20 +02:00
|
|
|
|
2022-02-19 14:06:57 +01:00
|
|
|
install: $(DOCS) aerc
|
2022-01-21 21:38:01 +01:00
|
|
|
mkdir -m755 -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(MANDIR)/man1 $(DESTDIR)$(MANDIR)/man5 $(DESTDIR)$(MANDIR)/man7 \
|
2022-02-17 11:54:14 +01:00
|
|
|
$(DESTDIR)$(SHAREDIR) $(DESTDIR)$(SHAREDIR)/filters $(DESTDIR)$(SHAREDIR)/templates $(DESTDIR)$(SHAREDIR)/stylesets \
|
2022-02-19 22:28:46 +01:00
|
|
|
$(DESTDIR)$(PREFIX)/share/applications
|
2022-01-21 21:38:01 +01:00
|
|
|
install -m755 aerc $(DESTDIR)$(BINDIR)/aerc
|
|
|
|
install -m644 aerc.1 $(DESTDIR)$(MANDIR)/man1/aerc.1
|
|
|
|
install -m644 aerc-search.1 $(DESTDIR)$(MANDIR)/man1/aerc-search.1
|
|
|
|
install -m644 aerc-config.5 $(DESTDIR)$(MANDIR)/man5/aerc-config.5
|
|
|
|
install -m644 aerc-imap.5 $(DESTDIR)$(MANDIR)/man5/aerc-imap.5
|
|
|
|
install -m644 aerc-maildir.5 $(DESTDIR)$(MANDIR)/man5/aerc-maildir.5
|
|
|
|
install -m644 aerc-sendmail.5 $(DESTDIR)$(MANDIR)/man5/aerc-sendmail.5
|
|
|
|
install -m644 aerc-notmuch.5 $(DESTDIR)$(MANDIR)/man5/aerc-notmuch.5
|
|
|
|
install -m644 aerc-smtp.5 $(DESTDIR)$(MANDIR)/man5/aerc-smtp.5
|
|
|
|
install -m644 aerc-tutorial.7 $(DESTDIR)$(MANDIR)/man7/aerc-tutorial.7
|
|
|
|
install -m644 aerc-templates.7 $(DESTDIR)$(MANDIR)/man7/aerc-templates.7
|
|
|
|
install -m644 aerc-stylesets.7 $(DESTDIR)$(MANDIR)/man7/aerc-stylesets.7
|
|
|
|
install -m644 config/accounts.conf $(DESTDIR)$(SHAREDIR)/accounts.conf
|
2022-02-19 14:06:57 +01:00
|
|
|
install -m644 config/aerc.conf $(DESTDIR)$(SHAREDIR)/aerc.conf
|
2022-01-21 21:38:01 +01:00
|
|
|
install -m644 config/binds.conf $(DESTDIR)$(SHAREDIR)/binds.conf
|
2022-05-24 07:36:05 +02:00
|
|
|
install -m755 filters/calendar $(DESTDIR)$(SHAREDIR)/filters/calendar
|
2022-02-20 23:36:02 +01:00
|
|
|
install -m755 filters/colorize $(DESTDIR)$(SHAREDIR)/filters/colorize
|
2022-01-21 21:38:01 +01:00
|
|
|
install -m755 filters/hldiff $(DESTDIR)$(SHAREDIR)/filters/hldiff
|
|
|
|
install -m755 filters/html $(DESTDIR)$(SHAREDIR)/filters/html
|
2022-04-16 17:40:31 +02:00
|
|
|
install -m755 filters/html-unsafe $(DESTDIR)$(SHAREDIR)/filters/html-unsafe
|
2022-02-20 23:37:34 +01:00
|
|
|
install -m755 filters/plaintext $(DESTDIR)$(SHAREDIR)/filters/plaintext
|
2022-03-22 14:18:09 +01:00
|
|
|
install -m755 filters/show-ics-details.py $(DESTDIR)$(SHAREDIR)/filters/show-ics-details.py
|
2022-01-21 21:38:01 +01:00
|
|
|
install -m644 templates/new_message $(DESTDIR)$(SHAREDIR)/templates/new_message
|
|
|
|
install -m644 templates/quoted_reply $(DESTDIR)$(SHAREDIR)/templates/quoted_reply
|
|
|
|
install -m644 templates/forward_as_body $(DESTDIR)$(SHAREDIR)/templates/forward_as_body
|
|
|
|
install -m644 config/default_styleset $(DESTDIR)$(SHAREDIR)/stylesets/default
|
2022-02-19 22:28:46 +01:00
|
|
|
install -m644 contrib/aerc.desktop $(DESTDIR)$(PREFIX)/share/applications/aerc.desktop
|
2019-05-17 19:45:20 +02:00
|
|
|
|
2022-01-22 17:57:57 +01:00
|
|
|
.PHONY: checkinstall
|
|
|
|
checkinstall:
|
|
|
|
$(DESTDIR)$(BINDIR)/aerc -v
|
|
|
|
test -e $(DESTDIR)$(MANDIR)/man1/aerc.1
|
|
|
|
test -e $(DESTDIR)$(MANDIR)/man5/aerc-config.5
|
|
|
|
test -e $(DESTDIR)$(MANDIR)/man5/aerc-imap.5
|
|
|
|
test -e $(DESTDIR)$(MANDIR)/man5/aerc-notmuch.5
|
|
|
|
test -e $(DESTDIR)$(MANDIR)/man5/aerc-sendmail.5
|
|
|
|
test -e $(DESTDIR)$(MANDIR)/man5/aerc-smtp.5
|
|
|
|
test -e $(DESTDIR)$(MANDIR)/man7/aerc-tutorial.7
|
|
|
|
test -e $(DESTDIR)$(MANDIR)/man7/aerc-templates.7
|
|
|
|
|
2022-01-21 20:57:42 +01:00
|
|
|
RMDIR_IF_EMPTY:=sh -c '! [ -d $$0 ] || ls -1qA $$0 | grep -q . || rmdir $$0'
|
2019-06-11 21:11:15 +02:00
|
|
|
|
|
|
|
uninstall:
|
2020-06-28 20:36:22 +02:00
|
|
|
$(RM) $(DESTDIR)$(BINDIR)/aerc
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man1/aerc.1
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man1/aerc-search.1
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man5/aerc-config.5
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man5/aerc-imap.5
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man5/aerc-maildir.5
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man5/aerc-sendmail.5
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man5/aerc-notmuch.5
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man5/aerc-smtp.5
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man7/aerc-tutorial.7
|
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man7/aerc-templates.7
|
2020-09-27 15:35:04 +02:00
|
|
|
$(RM) $(DESTDIR)$(MANDIR)/man7/aerc-stylesets.7
|
2020-06-28 20:36:22 +02:00
|
|
|
$(RM) -r $(DESTDIR)$(SHAREDIR)
|
|
|
|
${RMDIR_IF_EMPTY} $(DESTDIR)$(BINDIR)
|
|
|
|
$(RMDIR_IF_EMPTY) $(DESTDIR)$(MANDIR)/man1
|
|
|
|
$(RMDIR_IF_EMPTY) $(DESTDIR)$(MANDIR)/man5
|
|
|
|
$(RMDIR_IF_EMPTY) $(DESTDIR)$(MANDIR)/man7
|
|
|
|
$(RMDIR_IF_EMPTY) $(DESTDIR)$(MANDIR)
|
2022-02-19 22:28:46 +01:00
|
|
|
$(RM) $(DESTDIR)$(PREFIX)/share/applications/aerc.desktop
|
|
|
|
$(RMDIR_IF_EMPTY) $(DESTDIR)$(PREFIX)/share/applications
|
2019-06-11 21:11:15 +02:00
|
|
|
|
2020-11-12 09:00:07 +01:00
|
|
|
.PHONY: all doc clean install uninstall debug
|