aboutgitcodebugslistschat
path: root/Makefile
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2022-09-26 20:43:43 +1000
committerStefano Brivio <sbrivio@redhat.com>2022-09-29 12:21:30 +0200
commitd0629ff2b238fc4b38a333320d78eab5f65b10d0 (patch)
treefeb8ec149c31d04df83dd4c710a97dd7c405d2af /Makefile
parent1fcce70caa2d7702c2b677a7720439b4c1270ab3 (diff)
downloadpasst-d0629ff2b238fc4b38a333320d78eab5f65b10d0.tar
passt-d0629ff2b238fc4b38a333320d78eab5f65b10d0.tar.gz
passt-d0629ff2b238fc4b38a333320d78eab5f65b10d0.tar.bz2
passt-d0629ff2b238fc4b38a333320d78eab5f65b10d0.tar.lz
passt-d0629ff2b238fc4b38a333320d78eab5f65b10d0.tar.xz
passt-d0629ff2b238fc4b38a333320d78eab5f65b10d0.tar.zst
passt-d0629ff2b238fc4b38a333320d78eab5f65b10d0.zip
cppcheck: Avoid excessive scanning due to system headers
make cppcheck takes a long time, because it checks a large number of different configurations. It's assembling this very large set of configurations not because of conditionals in the passt code itself, but from those in the system headers. By adding --config-exclude directives to stop considering those configs, make cppcheck becomes around 60x faster on my system. Similarly, any problems that are found in the system headers are not our problem, and so we can uniformly suppress them, rather than having specific suppressions for particular problems in particular files (which might not be correct for all different distro / version combinations either). Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile20
1 files changed, 6 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index a39de07..8e6428b 100644
--- a/Makefile
+++ b/Makefile
@@ -269,27 +269,19 @@ clang-tidy: $(SRCS) $(HEADERS)
-config='{CheckOptions: [{key: bugprone-suspicious-string-compare.WarnOnImplicitComparison, value: "false"}]}' \
--warnings-as-errors=* $(SRCS) -- $(filter-out -pie,$(FLAGS) $(CFLAGS))
+SYSTEM_INCLUDES := /usr/include
ifeq ($(shell $(CC) -v 2>&1 | grep -c "gcc version"),1)
TARGET := $(shell ${CC} -v 2>&1 | sed -n 's/Target: \(.*\)/\1/p')
VER := $(shell $(CC) -dumpversion)
-EXTRA_INCLUDES := /usr/lib/gcc/$(TARGET)/$(VER)/include
-EXTRA_INCLUDES_OPT := -I$(EXTRA_INCLUDES)
-else
-EXTRA_INCLUDES_OPT :=
+SYSTEM_INCLUDES += /usr/lib/gcc/$(TARGET)/$(VER)/include
endif
cppcheck: $(SRCS) $(HEADERS)
cppcheck --std=c99 --error-exitcode=1 --enable=all --force \
--inconclusive --library=posix \
- -I/usr/include $(EXTRA_INCLUDES_OPT) \
- \
- --suppress=syntaxError:/usr/include/stdlib.h \
- --suppress=missingIncludeSystem \
- --suppress="*:$(EXTRA_INCLUDES)/avx512fintrin.h" \
- --suppress="*:$(EXTRA_INCLUDES)/xmmintrin.h" \
- --suppress="*:$(EXTRA_INCLUDES)/emmintrin.h" \
- --suppress="*:$(EXTRA_INCLUDES)/avxintrin.h" \
- --suppress="*:$(EXTRA_INCLUDES)/bmiintrin.h" \
- \
+ $(SYSTEM_INCLUDES:%=-I%) \
+ $(SYSTEM_INCLUDES:%=--config-exclude=%) \
+ $(SYSTEM_INCLUDES:%=--suppress=*:%/*) \
+ $(SYSTEM_INCLUDES:%=--suppress=unmatchedSuppression:%/*) \
--suppress=objectIndex:tcp.c --suppress=objectIndex:udp.c \
--suppress=va_list_usedBeforeStarted:util.c \
--suppress=unusedFunction \