Minor changes to allow static analysis checkers besides sparse

This patch allows CHECK and CHECKFLAGS to be passed in on the make
invocation, such that one could specify a checker other than sparse,
and/or different flags.  The current values of CHECK and CHECKFLAGS
remain as defaults thereby preserving backwards compatibility with the
simple "make C=1" scenario.  

This is useful for several reasons:
        - using checkers besides sparse
        - specifying a different version of sparse
        - overriding sparse's flags with custom ones
        - passing a different checker's flags

Note that the CHECK assignment was easily replaced with ?= but the
CHECKFLAGS assigned used := for the $(CF) variable, and as there is
no ?:= assignment, an ifndef was used.

Signed-off-by: Dustin Kirkland <[EMAIL PROTECTED]>
---

diff -urpN linux-2.6.17-rc4-mm3/Makefile linux-2.6.17-rc4-mm3-checker/Makefile
--- linux-2.6.17-rc4-mm3/Makefile       2006-05-22 14:12:38.000000000 -0500
+++ linux-2.6.17-rc4-mm3-checker/Makefile       2006-05-23 12:10:22.000000000 
-0500
@@ -41,8 +41,9 @@ ifndef KBUILD_VERBOSE
   KBUILD_VERBOSE = 0
 endif
 
-# Call sparse as part of compilation of C files
-# Use 'make C=1' to enable sparse checking
+# Call checker as part of compilation of C files
+# Use 'make C=1' to enable checking (sparse, by default)
+# Override with 'make C=1 CHECK=checker_executable CHECKFLAGS=....'
 
 ifdef C
   ifeq ("$(origin C)", "command line")
@@ -297,9 +298,11 @@ GENKSYMS   = scripts/genksyms/genksyms
 DEPMOD         = /sbin/depmod
 KALLSYMS       = scripts/kallsyms
 PERL           = perl
-CHECK          = sparse
+CHECK          ?= sparse
 
-CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise 
$(CF)
+ifndef CHECKFLAGS
+  CHECKFLAGS   := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise 
$(CF)
+endif
 MODFLAGS       = -DMODULE
 CFLAGS_MODULE   = $(MODFLAGS)
 AFLAGS_MODULE   = $(MODFLAGS)
@@ -1068,8 +1071,8 @@ help:
 
        @echo  '  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose 
build'
        @echo  '  make O=dir [targets] Locate all output files in "dir", 
including .config'
-       @echo  '  make C=1   [targets] Check all c source with $$CHECK (sparse)'
-       @echo  '  make C=2   [targets] Force check of all c source with $$CHECK 
(sparse)'
+       @echo  '  make C=1   [targets] Check all c source with $$CHECK (sparse 
by default)'
+       @echo  '  make C=2   [targets] Force check of all c source with $$CHECK 
(sparse by default)'
        @echo  ''
        @echo  'Execute "make" or "make all" to build all targets marked with 
[*] '
        @echo  'For further info see the ./README file'




-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
kbuild-devel mailing list
kbuild-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kbuild-devel

Reply via email to