diff options
author | Christopher Haster <geky@geky.net> | 2023-10-24 19:58:44 +0300 |
---|---|---|
committer | Christopher Haster <geky@geky.net> | 2023-10-24 20:04:54 +0300 |
commit | 8f3f32d1f31e9b233a22eafa04257b5c9a073160 (patch) | |
tree | 140ae5f5312fcaf3bf74bcd19310b768d4f1fd03 | |
parent | 92fc780f7122de409b0d734c519f28e1d81f0fa4 (diff) |
Added -Wmissing-prototypes
This warning is useful for catching the easy mistake of missing the
keyword static on functions intended to be internal-only.
Missing the static keyword risks symbol polution and misses potential
compiler optimizations.
This is an interesting warning, while useful for libraries such as
littlefs, it's perfectly valid C to not predeclare all functions, and
common in final application binaries.
Relatedly, this warning is re-disabled for the test/bench runner. There
may be a better way to organize the CFLAGS, maybe into separate
LIB/RUNNER CFLAGS, but I'll leave this to future work if our CFLAGS grow
more complicated.
This was motivated by non-static internal-only functions leaking into a
release. Found and fixed by DvdGiessen.
-rw-r--r-- | Makefile | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -63,6 +63,7 @@ CFLAGS += -fcallgraph-info=su CFLAGS += -g3 CFLAGS += -I. CFLAGS += -std=c99 -Wall -Wextra -pedantic +CFLAGS += -Wmissing-prototypes CFLAGS += -ftrack-macro-expansion=0 ifdef DEBUG CFLAGS += -O0 @@ -354,6 +355,7 @@ summary-diff sizes-diff: $(OBJ) $(CI) ## Build the test-runner .PHONY: test-runner build-test +test-runner build-test: CFLAGS+=-Wno-missing-prototypes ifndef NO_COV test-runner build-test: CFLAGS+=--coverage endif @@ -405,6 +407,7 @@ testmarks-diff: $(TEST_CSV) ## Build the bench-runner .PHONY: bench-runner build-bench +bench-runner build-bench: CFLAGS+=-Wno-missing-prototypes ifdef YES_COV bench-runner build-bench: CFLAGS+=--coverage endif |