mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 05:34:11 +01:00
build: add target to run cppcheck
The advantage of having a target as opposed to running cppcheck by hand - reuse list of source files - output errors in a format parsable, e.g. by emacs - returns exit code 1 on any error, for possibly use in other targets. For the moment, leave this as an optional target. If desired, it can be added to e.g. the release targets in the same way as the test target. Using two levels of directory for the stamps is arguably overengineering, but it doesn't really cost anything, and leaves open the possibility of putting other kinds of stamp files there. This only checks "new" source files (w.r.t. their last check). A future target (cppcheck-all ?) could blow away the stamp files first.
This commit is contained in:
parent
8c7d979f5d
commit
af64530d3f
2 changed files with 29 additions and 0 deletions
|
@ -199,6 +199,14 @@ quiet ?= $($(word 1, $(1)))
|
||||||
@mkdir -p $(patsubst %/.,%,.deps/$(@D))
|
@mkdir -p $(patsubst %/.,%,.deps/$(@D))
|
||||||
$(call quiet,CC $(CPPFLAGS) $(CFLAGS)) -c $(FINAL_CFLAGS) $< -o $@ -MD -MP -MF .deps/$*.d
|
$(call quiet,CC $(CPPFLAGS) $(CFLAGS)) -c $(FINAL_CFLAGS) $< -o $@ -MD -MP -MF .deps/$*.d
|
||||||
|
|
||||||
|
CPPCHECK=cppcheck
|
||||||
|
.stamps/cppcheck/%: %
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
$(call quiet,CPPCHECK,$<) --template=gcc --error-exitcode=1 --quiet $<
|
||||||
|
@touch $@
|
||||||
|
|
||||||
|
CLEAN := $(CLEAN) .stamps
|
||||||
|
|
||||||
.PHONY : clean
|
.PHONY : clean
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(CLEAN)
|
rm -rf $(CLEAN)
|
||||||
|
@ -284,6 +292,16 @@ CLEAN := $(CLEAN) .deps
|
||||||
|
|
||||||
DISTCLEAN := $(DISTCLEAN) .first-build-message Makefile.config sh.config
|
DISTCLEAN := $(DISTCLEAN) .first-build-message Makefile.config sh.config
|
||||||
|
|
||||||
|
CPPCHECK_STAMPS := $(SRCS:%=.stamps/cppcheck/%)
|
||||||
|
.PHONY: cppcheck
|
||||||
|
ifeq ($(HAVE_CPPCHECK),1)
|
||||||
|
cppcheck: ${CPPCHECK_STAMPS}
|
||||||
|
else
|
||||||
|
cppcheck:
|
||||||
|
@echo "No cppcheck found during configure; skipping static checking"
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
DEPS := $(SRCS:%.c=.deps/%.d)
|
DEPS := $(SRCS:%.c=.deps/%.d)
|
||||||
DEPS := $(DEPS:%.cc=.deps/%.d)
|
DEPS := $(DEPS:%.cc=.deps/%.d)
|
||||||
-include $(DEPS)
|
-include $(DEPS)
|
||||||
|
|
11
configure
vendored
11
configure
vendored
|
@ -646,6 +646,14 @@ if [ $WITH_DESKTOP = "1" ]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
printf "Checking for cppcheck... "
|
||||||
|
if command -v cppcheck > /dev/null; then
|
||||||
|
have_cppcheck=1
|
||||||
|
printf "Yes.\n"
|
||||||
|
else
|
||||||
|
printf "No.\n"
|
||||||
|
fi
|
||||||
|
|
||||||
libdir_in_ldconfig=0
|
libdir_in_ldconfig=0
|
||||||
|
|
||||||
printf "Checking which platform we are on... "
|
printf "Checking which platform we are on... "
|
||||||
|
@ -1065,6 +1073,9 @@ zsh_completion_dir = ${ZSHCOMLETIONDIR:=\$(prefix)/share/zsh/functions/Completio
|
||||||
# build its own version)
|
# build its own version)
|
||||||
HAVE_CANONICALIZE_FILE_NAME = ${have_canonicalize_file_name}
|
HAVE_CANONICALIZE_FILE_NAME = ${have_canonicalize_file_name}
|
||||||
|
|
||||||
|
# Whether the cppcheck static checker is available
|
||||||
|
HAVE_CPPCHECK = ${have_cppcheck}
|
||||||
|
|
||||||
# Whether the getline function is available (if not, then notmuch will
|
# Whether the getline function is available (if not, then notmuch will
|
||||||
# build its own version)
|
# build its own version)
|
||||||
HAVE_GETLINE = ${have_getline}
|
HAVE_GETLINE = ${have_getline}
|
||||||
|
|
Loading…
Reference in a new issue