summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2022-02-23 20:27:09 +0100
committerRobin Jarry <robin@jarry.cc>2022-02-27 21:11:31 +0100
commite7e22aba60cec373f48ebe21aa6d4898f31f8c66 (patch)
tree2da39dc23fa02527bdbfd917e9b309f95ee51cd4 /Makefile
parent115dabb6346383c88525586c2ec75d60df6f25d3 (diff)
downloadaerc-e7e22aba60cec373f48ebe21aa6d4898f31f8c66.zip
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 <robin@jarry.cc> Tested-by: Koni Marti <koni.marti@gmail.com>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile15
1 files changed, 13 insertions, 2 deletions
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: