From 986a206965da3f5bf6fd11d3285b5e19b6e066d1 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 28 Oct 2020 10:01:30 -0400 Subject: Makefile: Rebuild whenever the build flags change This removes the need to do make clean before rebuilding with a new build type. --- .gitignore | 1 + Makefile | 6 +++++- README.md | 1 - flags.sh | 11 +++++++++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100755 flags.sh diff --git a/.gitignore b/.gitignore index 3356bfa..1424907 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.flags *.o *.d *.gcda diff --git a/Makefile b/Makefile index 3dd263f..77fad91 100644 --- a/Makefile +++ b/Makefile @@ -105,6 +105,10 @@ ALL_CFLAGS = $(ALL_CPPFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) $(DEPFLAGS) ALL_LDFLAGS = $(ALL_CFLAGS) $(LOCAL_LDFLAGS) $(LDFLAGS) ALL_LDLIBS = $(LOCAL_LDLIBS) $(LDLIBS) +# Save the full set of flags to rebuild everything when they change +ALL_FLAGS := $(CC) : $(ALL_CFLAGS) : $(ALL_LDFLAGS) : $(ALL_LDLIBS) +$(shell ./flags.sh $(ALL_FLAGS)) + default: bfs all: bfs tests/mksock tests/trie tests/xtimegm @@ -154,7 +158,7 @@ tests/trie: trie.o tests/trie.o tests/xtimegm: time.o tests/xtimegm.o $(CC) $(ALL_LDFLAGS) $^ -o $@ -%.o: %.c +%.o: %.c .flags $(CC) $(ALL_CFLAGS) -c $< -o $@ check: check-trie check-xtimegm check-bfs check-dfs check-ids check-eds diff --git a/README.md b/README.md index bf38169..c33b02c 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,6 @@ You can test it out: If you're interested in speed, you may want to build the release version instead: - $ make clean $ make release Finally, if you want to install it globally, run diff --git a/flags.sh b/flags.sh new file mode 100755 index 0000000..8180eb4 --- /dev/null +++ b/flags.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +echo "$@" >.newflags + +if [ -e .flags ] && cmp -s .flags .newflags; then + rm .newflags +else + mv .newflags .flags +fi -- cgit v1.2.3