And next time, I'll actually add the patches the first time.
Patrick
Index: util/abuild/abuild
===================================================================
--- util/abuild/abuild (revision 3985)
+++ util/abuild/abuild (working copy)
@@ -43,6 +43,9 @@
# this is disabled per default but can be enabled with -s
silent=
+# clang mode enabled by -sb option.
+scanbuild=false
+
# stackprotect mode enabled by -ns option.
stackprotect=false
@@ -326,10 +329,6 @@
CROSS_COMPILE=''
fi
- if [ "$stackprotect" = "true" ]; then
- CC="$CC -fno-stack-protector"
- fi
-
HOSTCC='gcc'
printf "Processing mainboard/$VENDOR/$MAINBOARD"
@@ -389,6 +388,25 @@
fi
fi
+ if [ "$stackprotect" = "true" ]; then
+ CC="$CC -fno-stack-protector"
+ fi
+
+ if [ "$scanbuild" = "true" ]; then
+ ccwrap=`mktemp`
+ mkdir -p $TARGET/${VENDOR}_${MAINBOARD}
+ mkdir -p $TARGET/scan-build-results-tmp
+ mv $ccwrap $TARGET/${VENDOR}_${MAINBOARD}
+ ccwrap=$TARGET/${VENDOR}_${MAINBOARD}/`basename $ccwrap`
+ echo '#!/bin/sh' > $ccwrap
+ echo $CC' "$@"' >> $ccwrap
+ chmod +x $ccwrap
+ origMAKE=$MAKE
+ MAKE="scan-build --use-cc=$ccwrap -o
$TARGET/scan-build-results-tmp -analyze-headers $MAKE GCC=$ccwrap"
+ CC="\$(CC)"
+ HOSTCC="CCC_CC=$HOSTCC \$(CC)"
+ fi
+
built_successfully $VENDOR $MAINBOARD && \
{
printf " ( mainboard/$VENDOR/$MAINBOARD previously ok )\n\n"
@@ -412,6 +430,10 @@
compile_target $VENDOR $MAINBOARD &&
xml " <status>ok</status>" ||
xml "<status>broken</status>"
+ if [ "$scanbuild" = "true" ]; then
+ mv `dirname
$TARGET/scan-build-results-tmp/*/index.html`
$TARGET/${VENDOR}_${MAINBOARD}-scanbuild
+ MAKE=$origMAKE
+ fi
fi
xml ""
@@ -477,6 +499,7 @@
printf " [-c|--cpus <numcpus>] build on <numcpus> at the
same time\n"
printf " [-s|--silent] omit compiler calls in logs\n"
printf " [-ns|--nostackprotect] use gcc -fno-stack-protector
option\n"
+ printf " [-sb|--scan-build] use clang's static analyzer\n"
printf " [lbroot] absolute path to coreboot
sources\n"
printf " (defaults to $LBROOT)\n\n"
}
@@ -534,6 +557,7 @@
-c|--cpus) shift; cpus="$1"; test "$cpus" == "max" &&
cpus=""; shift;;
-s|--silent) shift; silent="-s";;
-ns|--nostackprotect) shift; stackprotect=true;;
+ -sb|--scan-build) shift; scanbuild=true;;
--) shift; break;;
-*) printf "Invalid option\n\n"; myhelp; exit 1;;
*) break;;
Index: src/config/Config.lb
===================================================================
--- src/config/Config.lb (revision 3985)
+++ src/config/Config.lb (working copy)
@@ -45,7 +45,7 @@
makerule coreboot_ram.o
- depends "$(TOP)/src/arch/$(ARCH)/lib/c_start.o $(DRIVER) coreboot.a
$(LIBGCC_FILE_NAME)"
+ depends "src/arch/$(ARCH)/lib/c_start.o $(DRIVER) coreboot.a
$(LIBGCC_FILE_NAME)"
action "$(CC) $(DISTRO_LFLAGS) -nostdlib -r -o $@ $^"
end
@@ -88,7 +88,7 @@
end
makerule coreboot_apc.o
- depends "$(TOP)/src/arch/$(ARCH)/lib/c_start.o coreboot_apc.a
$(LIBGCC_FILE_NAME)"
+ depends "src/arch/$(ARCH)/lib/c_start.o coreboot_apc.a
$(LIBGCC_FILE_NAME)"
action "$(CC) $(DISTRO_LFLAGS) -nostdlib -r -o $@ $^"
end
Index: src/config/Config.lb
===================================================================
--- src/config/Config.lb (revision 3985)
+++ src/config/Config.lb (working copy)
@@ -6,7 +6,8 @@
makedefine CPP:= $(CC) -x assembler-with-cpp -DASSEMBLY -E
makedefine LIBGCC_FILE_NAME := $(shell $(CC) -print-libgcc-file-name)
-makedefine GCC_INC_DIR := $(shell LC_ALL=C $(CC) -print-search-dirs | sed -ne
"s/install: \(.*\)/\1include/gp")
+makedefine GCC ?= $(CC)
+makedefine GCC_INC_DIR := $(shell LC_ALL=C $(GCC) -print-search-dirs | sed -ne
"s/install: \(.*\)/\1include/gp")
makedefine CPPFLAGS := -I$(TOP)/src/include -I$(TOP)/src/arch/$(ARCH)/include
-I$(GCC_INC_DIR) $(CPUFLAGS)
makedefine CFLAGS := $(CPU_OPT) $(DISTRO_CFLAGS) $(CPPFLAGS) -Os -nostdinc
-nostdlib -fno-builtin -Wall
--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot