* [PATCH v2] Makefile: check for cppcheck's --check-level option in cppcheck target
@ 2024-02-28 6:24 Stefano Brivio
2024-02-28 9:07 ` David Gibson
0 siblings, 1 reply; 2+ messages in thread
From: Stefano Brivio @ 2024-02-28 6:24 UTC (permalink / raw)
To: passt-dev; +Cc: Rahil Bhimjiani, David Gibson
Don't run cppcheck to find out if the --check-level=exhaustive option
is available, unless we're actually going to run cppcheck later.
To avoid this, move this check under the cppcheck target, and
implement it in shell script instead of using Makefile directives,
because we can't easily implement conditionals in recipes.
Reported-by: Rahil Bhimjiani <me@rahil.website>
Link: https://bugs.gentoo.org/920795
Fixes: 8640d62af719 ("cppcheck: Use "exhaustive" level checking when available")
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
---
v2: Actually fetch the shell variable for cppcheck's command line
Makefile | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index af4fa87..75f49dc 100644
--- a/Makefile
+++ b/Makefile
@@ -287,20 +287,20 @@ clang-tidy: $(SRCS) $(HEADERS)
-config='{CheckOptions: [{key: bugprone-suspicious-string-compare.WarnOnImplicitComparison, value: "false"}]}' \
--warnings-as-errors=* $(SRCS) -- $(filter-out -pie,$(FLAGS) $(CFLAGS) $(CPPFLAGS)) -DCLANG_TIDY_58992
-CPPCHECK_EXHAUSTIVE :=
-ifeq ($(shell cppcheck --check-level=exhaustive /dev/null > /dev/null 2>&1; echo $$?),0)
- CPPCHECK_EXHAUSTIVE += --check-level=exhaustive
-endif
-
SYSTEM_INCLUDES := /usr/include $(wildcard /usr/include/$(TARGET))
ifeq ($(shell $(CC) -v 2>&1 | grep -c "gcc version"),1)
VER := $(shell $(CC) -dumpversion)
SYSTEM_INCLUDES += /usr/lib/gcc/$(TARGET)/$(VER)/include
endif
cppcheck: $(SRCS) $(HEADERS)
+ if cppcheck --check-level=exhaustive /dev/null > /dev/null 2>&1; then \
+ CPPCHECK_EXHAUSTIVE="--check-level=exhaustive"; \
+ else \
+ CPPCHECK_EXHAUSTIVE=; \
+ fi; \
cppcheck --std=c11 --error-exitcode=1 --enable=all --force \
--inconclusive --library=posix --quiet \
- $(CPPCHECK_EXHAUSTIVE) \
+ $${CPPCHECK_EXHAUSTIVE} \
$(SYSTEM_INCLUDES:%=-I%) \
$(SYSTEM_INCLUDES:%=--config-exclude=%) \
$(SYSTEM_INCLUDES:%=--suppress=*:%/*) \
--
@@ -287,20 +287,20 @@ clang-tidy: $(SRCS) $(HEADERS)
-config='{CheckOptions: [{key: bugprone-suspicious-string-compare.WarnOnImplicitComparison, value: "false"}]}' \
--warnings-as-errors=* $(SRCS) -- $(filter-out -pie,$(FLAGS) $(CFLAGS) $(CPPFLAGS)) -DCLANG_TIDY_58992
-CPPCHECK_EXHAUSTIVE :=
-ifeq ($(shell cppcheck --check-level=exhaustive /dev/null > /dev/null 2>&1; echo $$?),0)
- CPPCHECK_EXHAUSTIVE += --check-level=exhaustive
-endif
-
SYSTEM_INCLUDES := /usr/include $(wildcard /usr/include/$(TARGET))
ifeq ($(shell $(CC) -v 2>&1 | grep -c "gcc version"),1)
VER := $(shell $(CC) -dumpversion)
SYSTEM_INCLUDES += /usr/lib/gcc/$(TARGET)/$(VER)/include
endif
cppcheck: $(SRCS) $(HEADERS)
+ if cppcheck --check-level=exhaustive /dev/null > /dev/null 2>&1; then \
+ CPPCHECK_EXHAUSTIVE="--check-level=exhaustive"; \
+ else \
+ CPPCHECK_EXHAUSTIVE=; \
+ fi; \
cppcheck --std=c11 --error-exitcode=1 --enable=all --force \
--inconclusive --library=posix --quiet \
- $(CPPCHECK_EXHAUSTIVE) \
+ $${CPPCHECK_EXHAUSTIVE} \
$(SYSTEM_INCLUDES:%=-I%) \
$(SYSTEM_INCLUDES:%=--config-exclude=%) \
$(SYSTEM_INCLUDES:%=--suppress=*:%/*) \
--
2.39.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] Makefile: check for cppcheck's --check-level option in cppcheck target
2024-02-28 6:24 [PATCH v2] Makefile: check for cppcheck's --check-level option in cppcheck target Stefano Brivio
@ 2024-02-28 9:07 ` David Gibson
0 siblings, 0 replies; 2+ messages in thread
From: David Gibson @ 2024-02-28 9:07 UTC (permalink / raw)
To: Stefano Brivio; +Cc: passt-dev, Rahil Bhimjiani
[-- Attachment #1: Type: text/plain, Size: 2443 bytes --]
On Wed, Feb 28, 2024 at 07:24:14AM +0100, Stefano Brivio wrote:
> Don't run cppcheck to find out if the --check-level=exhaustive option
> is available, unless we're actually going to run cppcheck later.
>
> To avoid this, move this check under the cppcheck target, and
> implement it in shell script instead of using Makefile directives,
> because we can't easily implement conditionals in recipes.
>
> Reported-by: Rahil Bhimjiani <me@rahil.website>
> Link: https://bugs.gentoo.org/920795
> Fixes: 8640d62af719 ("cppcheck: Use "exhaustive" level checking when available")
> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> v2: Actually fetch the shell variable for cppcheck's command line
>
> Makefile | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index af4fa87..75f49dc 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -287,20 +287,20 @@ clang-tidy: $(SRCS) $(HEADERS)
> -config='{CheckOptions: [{key: bugprone-suspicious-string-compare.WarnOnImplicitComparison, value: "false"}]}' \
> --warnings-as-errors=* $(SRCS) -- $(filter-out -pie,$(FLAGS) $(CFLAGS) $(CPPFLAGS)) -DCLANG_TIDY_58992
>
> -CPPCHECK_EXHAUSTIVE :=
> -ifeq ($(shell cppcheck --check-level=exhaustive /dev/null > /dev/null 2>&1; echo $$?),0)
> - CPPCHECK_EXHAUSTIVE += --check-level=exhaustive
> -endif
> -
> SYSTEM_INCLUDES := /usr/include $(wildcard /usr/include/$(TARGET))
> ifeq ($(shell $(CC) -v 2>&1 | grep -c "gcc version"),1)
> VER := $(shell $(CC) -dumpversion)
> SYSTEM_INCLUDES += /usr/lib/gcc/$(TARGET)/$(VER)/include
> endif
> cppcheck: $(SRCS) $(HEADERS)
> + if cppcheck --check-level=exhaustive /dev/null > /dev/null 2>&1; then \
> + CPPCHECK_EXHAUSTIVE="--check-level=exhaustive"; \
> + else \
> + CPPCHECK_EXHAUSTIVE=; \
> + fi; \
> cppcheck --std=c11 --error-exitcode=1 --enable=all --force \
> --inconclusive --library=posix --quiet \
> - $(CPPCHECK_EXHAUSTIVE) \
> + $${CPPCHECK_EXHAUSTIVE} \
> $(SYSTEM_INCLUDES:%=-I%) \
> $(SYSTEM_INCLUDES:%=--config-exclude=%) \
> $(SYSTEM_INCLUDES:%=--suppress=*:%/*) \
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-02-28 9:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-28 6:24 [PATCH v2] Makefile: check for cppcheck's --check-level option in cppcheck target Stefano Brivio
2024-02-28 9:07 ` David Gibson
Code repositories for project(s) associated with this public inbox
https://passt.top/passt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).