Am 10.03.2009 19:10, schrieb ron minnich:
> could you set this up or show me how to set this up for v3?
>   
Attached patch is more suitable for inclusion into the v3 tree. It adds
a "support clang" option to kconfig, and only mangles the variables in
question when that option is active.

It's
Signed-off-by: Patrick Georgi <[email protected]>


Regards,
Patrick Georgi
Index: Kconfig
===================================================================
--- Kconfig     (revision 1144)
+++ Kconfig     (working copy)
@@ -84,6 +84,14 @@
          Say No.
          If you are a Gentoo user, say NO!
 
+config SCAN_BUILD
+       bool "Use clang's scan-build utility for static analysis"
+       depends EXPERT && EXPERIMENTAL && !WHOLE_PROGRAM_COMPILE
+       default n
+       help
+         Change the compiler configuration so that a 'scan-build make'
+         has a chance to succeed.
+
 endmenu
 
 source mainboard/Kconfig
Index: util/xcompile/xcompile
===================================================================
--- util/xcompile/xcompile      (revision 1144)
+++ util/xcompile/xcompile      (working copy)
@@ -53,10 +53,26 @@
        exit 1
 }
 
+if [ "$1" = "y" ]; then
+       scanbuild=true
+fi
+
 case  "$ARCH" in
 "x86_64")
-       echo "CC_x86 := gcc -m32"
-       CC="gcc -m32"
+       if [ "$scanbuild" = "true" ]; then
+               ccwrap=`mktemp`
+               mkdir -p build
+               mv $ccwrap build
+               ccwrap=$PWD/build/`basename $ccwrap`
+               echo '#!/bin/bash' > $ccwrap
+               echo $CC' -m32 "$@"' >> $ccwrap
+               chmod +x $ccwrap
+               echo "CC_x86 := $ccwrap"
+               CC=$ccwrap
+       else
+               echo "CC_x86 := gcc -m32"
+               CC="gcc -m32"
+       fi
 
        searchgnu ar >/dev/null && echo "AR_x86 := $(searchgnu ar)"
        searchgnu as >/dev/null && echo "AS_x86 := $(searchgnu as) --32"
@@ -68,8 +84,13 @@
        ;;
 "x86")
        if [ "$OS" != "Darwin" ]; then
-               echo "CC_x86 := gcc"
-               CC="gcc"
+               if [ "$scanbuild" = "true" ]; then
+                       echo 'CC_x86 := $(CC)'
+                       if [ "$CC" = "" ]; then CC=gcc; fi
+               else
+                       echo "CC_x86 := gcc"
+                       CC="gcc"
+               fi
 
                searchgnu ar >/dev/null && echo "AR_x86 := $(searchgnu ar)"
                searchgnu as >/dev/null && echo "AS_x86 := $(searchgnu as)"
Index: Makefile
===================================================================
--- Makefile    (revision 1144)
+++ Makefile    (working copy)
@@ -36,14 +36,14 @@
 # Do not print "Entering directory ...".
 MAKEFLAGS += --no-print-directory
 
-CC         := gcc
+CC         ?= gcc
 CFLAGS     := -Os -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
              -Werror-implicit-function-declaration -Wstrict-aliasing \
              -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer \
              -mpreferred-stack-boundary=2 -mregparm=3 -pipe
 # FIXME: Does stack boundary or regparm break the code on real hardware?
 
-HOSTCC     := gcc
+HOSTCC     := $(CC)
 HOSTCXX    := g++
 HOSTCFLAGS := -Wall -Wstrict-prototypes -g -fomit-frame-pointer \
              -Wno-unused -Wno-sign-compare
@@ -61,9 +61,6 @@
 KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)
 export KERNELVERSION
 
-include $(shell $(src)/util/xcompile/xcompile > $(src)/.xcompile || \
-       { echo "complete\\ toolchain" && rm -f $(src)/.xcompile && exit 1; }; 
echo $(src)/.xcompile)
-
 ifeq ($(strip $(have_dotconfig)),)
 
 all:
@@ -73,6 +70,9 @@
 
 include $(src)/.config
 
+include $(shell $(src)/util/xcompile/xcompile $(CONFIG_SCAN_BUILD) > 
$(src)/.xcompile || \
+       { echo "complete\\ toolchain" && rm -f $(src)/.xcompile && exit 1; }; 
echo $(src)/.xcompile)
+
 ifneq ($(CONFIG_LOCALVERSION),"")
 COREBOOT_EXTRA_VERSION := -$(shell echo $(CONFIG_LOCALVERSION))
 endif
--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to