diff mbox

[U-Boot] add check infrastructure, default sparse

Message ID 20120921172817.ba61bb4052aaad2abdc8e29d@freescale.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Kim Phillips Sept. 21, 2012, 10:28 p.m. UTC
Add support for running source code checkers on u-boot source, e.g.,
using sparse to aid with typechecking.  This comes in especially
handy as SoC vendors mix and match cores and devices with different
endianness, thus here we add CHECK_ENDIAN to the otherwise linux
kernel default CHECKFLAGS.

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
---
 Makefile  | 18 ++++++++++++++++++
 config.mk |  9 +++++++++
 2 files changed, 27 insertions(+)

Comments

Tom Rini Sept. 27, 2012, 11:48 p.m. UTC | #1
On Fri, Sep 21, 2012 at 05:28:17PM -0500, Kim Phillips wrote:

> Add support for running source code checkers on u-boot source, e.g.,
> using sparse to aid with typechecking.  This comes in especially
> handy as SoC vendors mix and match cores and devices with different
> endianness, thus here we add CHECK_ENDIAN to the otherwise linux
> kernel default CHECKFLAGS.
> 
> Signed-off-by: Kim Phillips <kim.phillips@freescale.com>

Can I get a follow-up patch that add -C/--checker to MAKEALL?  Looking
to put this on u-boot/next once I can also make all of my builds use it
too.
Tom Rini Oct. 9, 2012, 5:15 p.m. UTC | #2
On Fri, Sep 21, 2012 at 12:28:17PM -0000, Kim Phillips wrote:

> Add support for running source code checkers on u-boot source, e.g.,
> using sparse to aid with typechecking.  This comes in especially
> handy as SoC vendors mix and match cores and devices with different
> endianness, thus here we add CHECK_ENDIAN to the otherwise linux
> kernel default CHECKFLAGS.
> 
> Signed-off-by: Kim Phillips <kim.phillips@freescale.com>

Applied to u-boot/next, thanks!
diff mbox

Patch

diff --git a/Makefile b/Makefile
index 058fb53..6969763 100644
--- a/Makefile
+++ b/Makefile
@@ -92,6 +92,24 @@  BUILD_DIR := $(O)
 endif
 endif
 
+# Call a source code checker (by default, "sparse") as part of the
+# C compilation.
+#
+# Use 'make C=1' to enable checking of re-compiled files.
+#
+# See the linux kernel file "Documentation/sparse.txt" for more details,
+# including where to get the "sparse" utility.
+
+ifdef C
+ifeq ("$(origin C)", "command line")
+CHECKSRC := $(C)
+endif
+endif
+ifndef CHECKSRC
+  CHECKSRC = 0
+endif
+export CHECKSRC
+
 ifneq ($(BUILD_DIR),)
 saved-output := $(BUILD_DIR)
 
diff --git a/config.mk b/config.mk
index c3822a2..e572902 100644
--- a/config.mk
+++ b/config.mk
@@ -148,6 +148,7 @@  OBJCOPY = $(CROSS_COMPILE)objcopy
 OBJDUMP = $(CROSS_COMPILE)objdump
 RANLIB	= $(CROSS_COMPILE)RANLIB
 DTC	= dtc
+CHECK	= sparse
 
 #########################################################################
 
@@ -274,6 +275,10 @@  ifneq ($(CONFIG_SPL_TEXT_BASE),)
 LDFLAGS_u-boot-spl += -Ttext $(CONFIG_SPL_TEXT_BASE)
 endif
 
+# Linus' kernel sanity checking tool
+CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
+                  -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF)
+
 # Location of a usable BFD library, where we define "usable" as
 # "built for ${HOST}, supports ${TARGET}".  Sensible values are
 # - When cross-compiling: the root of the cross-environment
@@ -321,6 +326,9 @@  $(obj)%.s:	%.S
 $(obj)%.o:	%.S
 	$(CC)  $(ALL_AFLAGS) -o $@ $< -c
 $(obj)%.o:	%.c
+ifneq ($(CHECKSRC),0)
+	$(CHECK) $(CHECKFLAGS) $(ALL_CFLAGS) $<
+endif
 	$(CC)  $(ALL_CFLAGS) -o $@ $< -c
 $(obj)%.i:	%.c
 	$(CPP) $(ALL_CFLAGS) -o $@ $< -c