Author: oxygene Date: Sun May 22 00:18:59 2011 New Revision: 6607 URL: https://tracker.coreboot.org/trac/coreboot/changeset/6607
Log: Add regression test for build directory handling to make lint target
A couple of scenarios that were fixed in the last few revisions are tested to ensure that it's easy to determine breakage.
Signed-off-by: Patrick Georgi patrick@georgi-clan.de Acked-by: Patrick Georgi patrick@georgi-clan.de
Added: trunk/util/lint/lint-002-build-dir-handling (contents, props changed) Modified: trunk/Makefile
Modified: trunk/Makefile ============================================================================== --- trunk/Makefile Sat May 21 01:31:41 2011 (r6606) +++ trunk/Makefile Sun May 22 00:18:59 2011 (r6607) @@ -237,7 +237,9 @@
endif
+ifndef NOMKDIR $(shell mkdir -p $(obj) $(objutil)/kconfig/lxdialog $(additional-dirs) $(alldirs)) +endif
cscope: cscope -bR
Added: trunk/util/lint/lint-002-build-dir-handling ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/util/lint/lint-002-build-dir-handling Sun May 22 00:18:59 2011 (r6607) @@ -0,0 +1,63 @@ +#!/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 NOMKDIR=1 DOTCONFIG=$TMPCONFIG obj=$1 printall |sed -e "s,^ *,," -e "s, ,\n,g" -e "s,^ramstage-objs:=,," -e "s,mainboard/[^/]*/[^/]*/,.../," |grep "/static.*.[co]" |sort |tr '\012\015' ' ' |sed -e "s, *, ,g" -e "s, *$,," +} + +# find GNU make +search_make make +search_make gmake +search_make gnumake + +if [ "$MAKE" = "" ]; then + echo Could not identify GNU make + exit 1 +fi + +# prepare a config to use +TMPCONFIG=`mktemp` +rm -f $TMPCONFIG +$MAKE NOMKDIR=1 DOTCONFIG=$TMPCONFIG allyesconfig >/dev/null + +# look up parent directory +PARENTDIR=`dirname $PWD` + +compare_output "`run_printall build`" "build/.../static.c build/.../static.ramstage.o" +compare_output "`run_printall ../obj`" "$PARENTDIR/obj/.../static.c $PARENTDIR/obj/.../static.ramstage.o" +compare_output "`run_printall /tmp`" "/tmp/.../static.c /tmp/.../static.ramstage.o" +compare_output "`run_printall /../tmp`" "/tmp/.../static.c /tmp/.../static.ramstage.o" + +rm -f $TMPCONFIG +