add check infrastructure, default sparse

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>
This commit is contained in:
Kim Phillips 2012-09-21 12:28:17 +00:00 committed by Tom Rini
parent e46a4350b4
commit 4ab64933e3
2 changed files with 26 additions and 0 deletions

View File

@ -92,6 +92,24 @@ BUILD_DIR := $(O)
endif endif
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),) ifneq ($(BUILD_DIR),)
saved-output := $(BUILD_DIR) saved-output := $(BUILD_DIR)

View File

@ -149,6 +149,7 @@ OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump OBJDUMP = $(CROSS_COMPILE)objdump
RANLIB = $(CROSS_COMPILE)RANLIB RANLIB = $(CROSS_COMPILE)RANLIB
DTC = dtc DTC = dtc
CHECK = sparse
######################################################################### #########################################################################
@ -275,6 +276,10 @@ ifneq ($(CONFIG_SPL_TEXT_BASE),)
LDFLAGS_u-boot-spl += -Ttext $(CONFIG_SPL_TEXT_BASE) LDFLAGS_u-boot-spl += -Ttext $(CONFIG_SPL_TEXT_BASE)
endif 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 # Location of a usable BFD library, where we define "usable" as
# "built for ${HOST}, supports ${TARGET}". Sensible values are # "built for ${HOST}, supports ${TARGET}". Sensible values are
# - When cross-compiling: the root of the cross-environment # - When cross-compiling: the root of the cross-environment
@ -322,6 +327,9 @@ $(obj)%.s: %.S
$(obj)%.o: %.S $(obj)%.o: %.S
$(CC) $(ALL_AFLAGS) -o $@ $< -c $(CC) $(ALL_AFLAGS) -o $@ $< -c
$(obj)%.o: %.c $(obj)%.o: %.c
ifneq ($(CHECKSRC),0)
$(CHECK) $(CHECKFLAGS) $(ALL_CFLAGS) $<
endif
$(CC) $(ALL_CFLAGS) -o $@ $< -c $(CC) $(ALL_CFLAGS) -o $@ $< -c
$(obj)%.i: %.c $(obj)%.i: %.c
$(CPP) $(ALL_CFLAGS) -o $@ $< -c $(CPP) $(ALL_CFLAGS) -o $@ $< -c