coreboot-kgpe-d16/util/lint/lint-stable-002-build-dir-handling
Patrick Georgi fadbe5f657 build: make scan-build work again
This drops the scan-build related Kconfig options
since it's now possible to simply run

    scan-build [-o outdir] make

and get coreboot built with its report.

There's also no inner make process anymore, and the way
things work should be clearer now.

Also adapt abuild to this new reality.

Change-Id: I03e03334761ec83f718b3235ebf811834cd2e3e3
Signed-off-by: Patrick Georgi <patrick@georgi-clan.de>
Reviewed-on: http://review.coreboot.org/5774
Tested-by: build bot (Jenkins)
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
2014-05-17 21:15:14 +02:00

73 lines
2.3 KiB
Bash
Executable file

#!/bin/sh
# This file is part of the coreboot project.
#
# Copyright (C) 2011 Patrick Georgi <patrick@georgi-clan.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# DESCR: Check that build directories can be chosen freely
# $1: command to test for GNU make
search_make() {
if [ -n "`$1 --version 2>&1 | grep GNU`" ]; then MAKE=$1; fi
}
# if $1 and $2 differ, exit with failure
compare_output() {
if ! [ "$1" = "$2" ]; then
echo \'$1\' should be \'$2\'
exit 1
fi
}
# $1: object directory
run_printall() {
$MAKE CONFIG_USE_BLOBS=n CONFIG_CCACHE=n NOMKDIR=1 \
DOTCONFIG=$TMPCONFIG obj=$1 printall | \
sed -e "s,^ *,," -e "s,^r.mstage-objs:=,," \
-e "s,mainboard/[^/]*/[^/]*/,.../,g" | \
tr " " "\n" | GREP_OPTIONS= grep "/static.*\.[co]" | sort | \
tr '\012\015' ' ' | sed -e "s, *, ,g" -e "s, *$,,"
}
# find GNU make
MAKE=
search_make make
[ -z $MAKE ] && search_make gmake
[ -z $MAKE ] && search_make gnumake
if [ "$MAKE" = "" ]; then
echo Could not identify GNU make
exit 1
fi
# prepare a config to use
TMPOBJ=`mktemp .tmpobj.XXXXXX`
rm $TMPOBJ
mkdir -p ${TMPOBJ}
TMPCONFIG=`mktemp .tmpconfig.XXXXXX`
rm -f $TMPCONFIG
$MAKE obj=$TMPOBJ DOTCONFIG=$TMPCONFIG allyesconfig >/dev/null
# look up parent directory
CURRENTDIR=`pwd -P`
PARENTDIR=`dirname $CURRENTDIR`
compare_output "`run_printall build`" "build/.../static.c build/.../static.c build/.../static.romstage.o"
compare_output "`run_printall ../obj`" "$PARENTDIR/obj/.../static.c $PARENTDIR/obj/.../static.c $PARENTDIR/obj/.../static.romstage.o"
compare_output "`run_printall /tmp`" "/tmp/.../static.c /tmp/.../static.c /tmp/.../static.romstage.o"
compare_output "`run_printall /../tmp`" "/tmp/.../static.c /tmp/.../static.c /tmp/.../static.romstage.o"
rm -rf $TMPCONFIG $TMPOBJ