From e7e22aba60cec373f48ebe21aa6d4898f31f8c66 Mon Sep 17 00:00:00 2001 From: Robin Jarry Date: Wed, 23 Feb 2022 20:27:09 +0100 Subject: [PATCH] mk: rebuild if goflags or ldflags have changed Running make with different values for GOFLAGS or VERSION does not cause aerc to be rebuilt whereas it should. Write the go build command line into a file and force aerc to be rebuilt if the command line has changed. Use the BSD make compatible != operator to run the command. This operator is also available in GNU make since version 4.0. Link: https://git.savannah.gnu.org/cgit/make.git/commit/?id=b34438bee83ee Signed-off-by: Robin Jarry Tested-by: Koni Marti --- .gitignore | 1 + Makefile | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index b4af105..746aaf5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /aerc2 /aerc /aerc.debug +/.aerc.d log raw.log *.1 diff --git a/Makefile b/Makefile index 58ffc16..df8a0c0 100644 --- a/Makefile +++ b/Makefile @@ -30,8 +30,19 @@ DOCS := \ all: aerc $(DOCS) -aerc: $(GOSRC) - $(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $@ +build_cmd:=$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o aerc + +# the following command outputs nothing, we only want to execute it once +# and force .aerc.d to be regenerated when build_cmd has changed +_!=echo '$(build_cmd)' > .aerc.tmp; \ + cmp -s .aerc.d .aerc.tmp || rm -f .aerc.d; \ + rm -f .aerc.tmp + +.aerc.d: + @echo '$(build_cmd)' > $@ + +aerc: $(GOSRC) .aerc.d + $(build_cmd) .PHONY: fmt fmt: