From 08501bc6578ac2ba40cc803ac2449828ee6b1550 Mon Sep 17 00:00:00 2001 From: Luis Fernandez Date: Wed, 18 Sep 2019 10:34:25 -0500 Subject: Patch For: Implement Static Analysis with cppcheck CPPCHECK commands fail in machines that do not use bin/sh. Wrap commands inside an if-statement to only be read when User explicitly run the tool. Change-Id: Ifad56b0978c8190efa033203f661daf9259a4d43 RTC: 201451 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83938 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Tested-by: Jenkins OP HW Reviewed-by: Daniel M Crowell --- src/build/mkrules/cc.rules.mk | 71 ++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 38 deletions(-) (limited to 'src/build') diff --git a/src/build/mkrules/cc.rules.mk b/src/build/mkrules/cc.rules.mk index 2d465e2e3..409166e29 100644 --- a/src/build/mkrules/cc.rules.mk +++ b/src/build/mkrules/cc.rules.mk @@ -47,27 +47,44 @@ SOURCE_FILE=$< INCLUDE_DIRS=$(INCFLAGS) endif -$(OBJDIR)/%.o : %.C - @mkdir -p $(OBJDIR) - $(C2) " CXX $(notdir $<)" - $(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $(SOURCE_FILE) \ - -o $@.trace $(INCLUDE_DIRS) -iquote . - $(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS) - @rm $@.trace - $(C2) " CPPCHECK $(notdir $<)" # TODO RTC 215692 # The following script is used to run the cppcheck tool when enabled. If one # cppcheck error is found, the make process will stop here, the error will be # printed out to the terminal and stored in a file .`basename $<`.cppcheck in # the directory where the original file is located - $(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(CXX_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \ +ifdef DOCPPCHECK + CXX_PRINT=$(C2) " CPPCHECK $(notdir $<)" + # NoteL Error code 127 means that the command timed-out. We do not fail + # for timeouts + CXX_CPPCHECK_COMMAND=$(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(CXX_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \ if [ "$$exit_code" -ne 1 ]; then \ rm -f .`basename $<`.cppcheck; \ if [ "$$exit_code" -eq 127 ]; then \ -# Error code 127 means that the command timed-out. We do not fail for timeouts.\ exit_code=0; \ fi; \ fi; exit "$$exit_code" + C_CPPCHECK_COMMAND=$(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(C_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \ + if [ "$$exit_code" -ne 1 ]; then \ + rm -f .`basename $<`.cppcheck; \ + if [ "$$exit_code" -eq 127 ]; then \ + exit_code=0; \ + fi; \ + fi; exit "$$exit_code" +else + CXX_PRINT= + CXX_CPPCHECK_COMMAND= + C_CPPCHECK_COMMAND= +endif + +$(OBJDIR)/%.o : %.C + @mkdir -p $(OBJDIR) + $(C2) " CXX $(notdir $<)" + $(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $(SOURCE_FILE) \ + -o $@.trace $(INCLUDE_DIRS) -iquote . + $(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS) + @rm $@.trace + $(CXX_PRINT) + $(CXX_CPPCHECK_COMMAND) # Compiling *.cc files $(OBJDIR)/%.o : %.cc @@ -77,16 +94,8 @@ $(OBJDIR)/%.o : %.cc $(INCLUDE_DIRS) -iquote . $(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS) @rm $@.trace - $(C2) " CPPCHECK $(notdir $<)" -# TODO RTC 215692 - $(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(CXX_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \ - if [ "$$exit_code" -ne 1 ]; then \ - rm -f .`basename $<`.cppcheck; \ - if [ "$$exit_code" -eq 127 ]; then \ - exit_code=0; \ - fi; \ - fi; exit "$$exit_code" - + $(CXX_PRINT) + $(CXX_CPPCHECK_COMMAND) $(OBJDIR)/%.o : %.c @mkdir -p $(OBJDIR) @@ -96,28 +105,14 @@ ifndef CC_OVERRIDE $(C2) " CC $(notdir $<)" $(C1)$(CC) -c $(call FLAGS_FILTER, $(CFLAGS), $<) $(SOURCE_FILE) \ -o $@.trace $(INCLUDE_DIRS) -iquote . - $(C2) " CPPCHECK $(notdir $<)" -# TODO RTC 215692 - $(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(C_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \ - if [ "$$exit_code" -ne 1 ]; then \ - rm -f .`basename $<`.cppcheck; \ - if [ "$$exit_code" -eq 127 ]; then \ - exit_code=0; \ - fi; \ - fi; exit "$$exit_code" + $(CXX_PRINT) + $(C_CPPCHECK_COMMAND) else $(C2) " CXX $(notdir $<)" $(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $(SOURCE_FILE) \ -o $@.trace $(INCLUDE_DIRS) -iquote . - $(C2) " CPPCHECK $(notdir $<)" -# TODO RTC 215692 - $(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(CXX_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \ - if [ "$$exit_code" -ne 1 ]; then \ - rm -f .`basename $<`.cppcheck; \ - if [ "$$exit_code" -eq 127 ]; then \ - exit_code=0; \ - fi; \ - fi; exit "$$exit_code" + $(CXX_PRINT) + $(CXX_CPPCHECK_COMMAND) endif $(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS) @rm $@.trace -- cgit v1.2.1