From 8e9910e5c9e9100ddeb8d90fb3ddb5a57a68771f Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Wed, 16 Sep 2009 20:18:03 +0000 Subject: kbuildall is a utility that generates default configs for all boards, builds them, and keeps the config and build logs around and creates a roster of all boards and their build status. abuild does this for the newconfig based buildsystem, kbuildall does this for kconfig/kbuild. It's supposed to be put in the tree as util/kbuildall/kbuildall, and called like that (ie. from the top level directory). The results can be found in kbuildall.results/ in the toplevel directory, the roster is called _overview.txt ("_" to make sure it's sorted before or after all the board files) Signed-off-by: Patrick Georgi Acked-by: Stefan Reinauer git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4638 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- util/kbuildall/kbuildall | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 util/kbuildall/kbuildall (limited to 'util') diff --git a/util/kbuildall/kbuildall b/util/kbuildall/kbuildall new file mode 100755 index 0000000000..8495cd35f1 --- /dev/null +++ b/util/kbuildall/kbuildall @@ -0,0 +1,57 @@ +#!/bin/sh +# +# coreboot autobuilder for kconfig +# +# This script builds coreboot images for all available targets. +# +# (C) 2009 coresystems GmbH +# written by Patrick Georgi +# +# This file is subject to the terms and conditions of the GNU General +# Public License, version 2. See the file COPYING in the main directory +# of this archive for more details. + +TARGETDIR=kbuildall.results + +if [ ! -f util/kbuildall/kbuildall ]; then + echo "This application must be run from the" + echo "toplevel directory of a coreboot checkout." + exit 1 +fi + +for make in make gmake gnumake; do + if [ "`$make --version 2>/dev/null | grep -c GNU`" -gt 0 ]; then + MAKE=$make + break + fi +done + +builddefconfig() { +# $1: mainboarddir + $MAKE distclean + grep "depends[\t ]on[\t ]*VENDOR" src/mainboard/$1/../Kconfig | sed "s,^.*\(VENDOR_.*\)[^A-Z0-9_]*,CONFIG_\1=y," > .config + grep "config[\t ]*BOARD" src/mainboard/$1/Kconfig | sed "s,^.*\(BOARD_.*\)[^A-Z0-9_]*,CONFIG_\1=y," >> .config + grep "select[\t ]*ARCH" src/mainboard/$1/Kconfig | sed "s,^.*\(ARCH_.*\)[^A-Z0-9_]*,CONFIG_\1=y," >> .config + echo "CONFIG_MAINBOARD_DIR=$1" >> .config + yes "" | $MAKE oldconfig +} + +rm -rf $TARGETDIR +mkdir -p $TARGETDIR +ALLTARGETS=`(cd src/mainboard; ls */*/Config.lb | sed s,/Config.lb,,)` +TARGETCOUNT=`echo $ALLTARGETS | wc -w` +CURRENTARGET=0 +for dir in $ALLTARGETS; do + i=`expr $i + 1` + if [ ! -f src/mainboard/$dir/Kconfig ]; then + echo "[$i/$TARGETCOUNT] ($dir) no Kconfig" + echo "$dir nokconfig" >> $TARGETDIR/_overview.txt + continue + fi + name=`echo $dir | sed s,/,_,g` + printf "[$i/$TARGETCOUNT] $dir " + builddefconfig $dir > $TARGETDIR/$name.buildconfig.log 2>&1 + result=`$MAKE > $TARGETDIR/$name.buildcoreboot.log 2>&1 && echo ok || echo fail` + echo "$result." + echo "$dir $result" >> $TARGETDIR/_overview.txt +done -- cgit v1.2.3