From 35757bced85cfe870d62590d73bdbcb5035efbba Mon Sep 17 00:00:00 2001 From: Dirk Engling Date: Mon, 2 Nov 2026 02:16:24 +0100 Subject: Force rebuilds on the tracker when feature flags change --- .gitignore | 1 + Makefile | 31 ++++++++++++++++++++----------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 3e469ff..5a9567f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ proxy.debug tests/runner tests/runner.poll tests/runner.sanitize +.buildstamp diff --git a/Makefile b/Makefile index bf4883e..45c0f29 100644 --- a/Makefile +++ b/Makefile @@ -67,6 +67,15 @@ LDFLAGS+=-pthread CFLAGS_libowfat=-I$(LIBOWFAT_HEADERS) LDFLAGS_libowfat=-L$(LIBOWFAT_LIBRARY) -lowfat +# Record feature flags as a dep to allow rebuild when they change +BUILDSTAMP=.buildstamp +BUILDDEPS=Makefile $(BUILDSTAMP) + +$(BUILDSTAMP): FORCE + @echo "$(CFLAGS) $(FEATURES) $(LDFLAGS)" | cmp -s - $@ 2>/dev/null || echo "$(CFLAGS) $(FEATURES) $(LDFLAGS)" > $@ + +FORCE: + BINARY =opentracker HEADERS=trackerlogic.h ot_urlencoded.h ot_batch.h ot_buf.h ot_event.h ot_fdstate.h ot_fmt.h ot_hex.h ot_ip.h ot_config.h ot_scan.h ot_socket.h ot_tcp.h ot_worker.h ot_workqueue.h ot_mutex.h ot_random.h ot_stats.h ot_vector.h ot_clean.h ot_udp.h ot_iovec.h ot_fullscrape.h ot_accesslist.h ot_http.h ot_livesync.h ot_rijndael.h SOURCES=opentracker.c trackerlogic.c ot_urlencoded.c ot_batch.c ot_buf.c ot_event.c ot_fdstate.c ot_fmt.c ot_hex.c ot_ip.c ot_config.c ot_scan.c ot_socket.c ot_tcp.c ot_worker.c ot_workqueue.c ot_mutex.c ot_random.c ot_stats.c ot_vector.c ot_clean.c ot_udp.c ot_iovec.c ot_fullscrape.c ot_accesslist.c ot_http.c ot_livesync.c ot_rijndael.c @@ -80,14 +89,14 @@ CFLAGS_debug = $(CFLAGS) $(OPTS_debug) $(FEATURES) CFLAGS_proxy = $(CFLAGS_production) $(CFLAGS_libowfat) -DWANT_SYNC_LIVE CFLAGS_proxy_debug = $(CFLAGS_debug) $(CFLAGS_libowfat) -DWANT_SYNC_LIVE -$(BINARY): $(SOURCES) $(HEADERS) +$(BINARY): $(SOURCES) $(HEADERS) $(BUILDDEPS) $(CC) -o $@ $(CFLAGS_production) $(SOURCES) $(LDFLAGS) $(STRIP) $@ -$(BINARY).debug: $(SOURCES) $(HEADERS) +$(BINARY).debug: $(SOURCES) $(HEADERS) $(BUILDDEPS) $(CC) -o $@ $(CFLAGS_debug) $(SOURCES) $(LDFLAGS) -proxy: $(SOURCES_proxy) $(HEADERS) +proxy: $(SOURCES_proxy) $(HEADERS) $(BUILDDEPS) $(CC) -o $@ $(CFLAGS_proxy) $(SOURCES_proxy) $(LDFLAGS) $(LDFLAGS_libowfat) -proxy.debug: $(SOURCES_proxy) $(HEADERS) +proxy.debug: $(SOURCES_proxy) $(HEADERS) $(BUILDDEPS) $(CC) -o $@ $(CFLAGS_proxy_debug) $(SOURCES_proxy) $(LDFLAGS) $(LDFLAGS_libowfat) # Unit tests. The modules under test are compiled straight into the test @@ -103,13 +112,13 @@ TEST_HEADERS=tests/test.h $(HEADERS) FEATURES_test=$(FEATURES) -DWANT_ACCESSLIST_BLACK -DWANT_SYNC_LIVE CFLAGS_test = $(CFLAGS) -I. -g -O1 $(FEATURES_test) -$(TESTBIN): $(TEST_SOURCES) $(TEST_UNITS) $(TEST_HEADERS) +$(TESTBIN): $(TEST_SOURCES) $(TEST_UNITS) $(TEST_HEADERS) $(BUILDDEPS) $(CC) -o $@ $(CFLAGS_test) $(TEST_SOURCES) $(TEST_UNITS) check: $(TESTBIN) $(BINARY) ./$(TESTBIN) -$(TESTBIN).poll: $(TEST_SOURCES) $(TEST_UNITS) $(TEST_HEADERS) +$(TESTBIN).poll: $(TEST_SOURCES) $(TEST_UNITS) $(TEST_HEADERS) $(BUILDDEPS) $(CC) -o $@ $(CFLAGS_test) -DOT_EVENT_FORCE_POLL $(TEST_SOURCES) $(TEST_UNITS) check-poll: $(TESTBIN).poll @@ -122,7 +131,7 @@ CC_sanitize?=clang CFLAGS_sanitize=$(CFLAGS_test) -fsanitize=address,undefined -fno-omit-frame-pointer LDFLAGS_sanitize=$(LDFLAGS) -fsanitize=address,undefined -$(TESTBIN).sanitize: $(TEST_SOURCES) $(TEST_UNITS) $(TEST_HEADERS) +$(TESTBIN).sanitize: $(TEST_SOURCES) $(TEST_UNITS) $(TEST_HEADERS) $(BUILDDEPS) $(CC_sanitize) -o $@ $(CFLAGS_sanitize) $(TEST_SOURCES) $(TEST_UNITS) $(LDFLAGS_sanitize) check-sanitize: $(TESTBIN).sanitize @@ -139,7 +148,7 @@ FEATURES_integration=$(FEATURES) -DWANT_IP_FROM_QUERY_STRING -DWANT_ACCESSLIST_B CFLAGS_integration=$(CFLAGS) $(OPTS_debug) $(FEATURES_integration) -fsanitize=address,undefined -fno-omit-frame-pointer LDFLAGS_integration=$(LDFLAGS) -fsanitize=address,undefined -opentracker.integration: $(SOURCES) $(HEADERS) +opentracker.integration: $(SOURCES) $(HEADERS) $(BUILDDEPS) $(CC) -o $@ $(CFLAGS_integration) $(SOURCES) $(LDFLAGS_integration) check-integration: opentracker.integration @@ -149,7 +158,7 @@ check-integration: opentracker.integration CFLAGS_tsan=$(CFLAGS) $(OPTS_debug) $(FEATURES_integration) -fsanitize=thread -fno-omit-frame-pointer LDFLAGS_tsan=$(LDFLAGS) -fsanitize=thread -opentracker.tsan: $(SOURCES) $(HEADERS) +opentracker.tsan: $(SOURCES) $(HEADERS) $(BUILDDEPS) $(CC) -o $@ $(CFLAGS_tsan) $(SOURCES) $(LDFLAGS_tsan) check-tsan: opentracker.tsan @@ -163,12 +172,12 @@ check-all: $(MAKE) check-integration $(MAKE) check-tsan -.PHONY: all check check-poll check-sanitize check-integration check-tsan check-all clean install +.PHONY: all FORCE check check-poll check-sanitize check-integration check-tsan check-all clean install BINARIES=opentracker opentracker.debug opentracker.integration opentracker.tsan proxy proxy.debug $(TESTBIN) $(TESTBIN).sanitize $(TESTBIN).poll clean: - rm -rf $(BINARIES) $(BINARIES:=.dSYM) *.o *~ + rm -rf $(BINARIES) $(BINARIES:=.dSYM) $(BUILDSTAMP) *.o *~ install: install -m 755 opentracker $(DESTDIR)$(BINDIR) -- cgit v1.3