summaryrefslogtreecommitdiff
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
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>
-rw-r--r--.gitignore1
-rw-r--r--Makefile15
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: