libpayload: Make lpgcc wrapper usable for in-tree builds

Teach lpgcc to look in the in-coreboot tree directory structure, too.

Change-Id: I3809456d072ce2f91542b0edb3fd39f536298cc2
Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com>
Reviewed-on: http://review.coreboot.org/3530
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Patrick Georgi 2013-02-21 14:33:25 +01:00 committed by Ronald G. Minnich
parent 8b9d4f3296
commit cb76136420
2 changed files with 50 additions and 25 deletions

View File

@ -49,11 +49,13 @@ fi
if [ -f $BASE/../lib/libpayload.a ]; then
_LIBDIR=$BASE/../lib
elif [ -f $BASE/../build/libpayload.a ]; then
_LIBDIR=$BASE/../build
else
_LIBDIR=$LIBPAYLOAD_PREFIX/lib
fi
if [ -d $BASE/../include/ ]; then
if [ -d $BASE/../include ]; then
_INCDIR=$BASE/../include
else
_INCDIR=$LIBPAYLOAD_PREFIX/include

View File

@ -59,9 +59,42 @@ BASE=`dirname $0`
. $BASE/lp.functions
# include libpayload config
. $BASE/../libpayload.config
if [ -f $BASE/../libpayload.config ]; then
. $BASE/../libpayload.config
elif [ -f $BASE/../.config ]; then
. $BASE/../.config
else
echo "Can't find config"
exit 1
fi
_LDSCRIPT="-Wl,-T,$_LIBDIR/libpayload.ldscript"
if [ "$CONFIG_ARCH_ARMV7" = "y" ]; then
_ARCHINCDIR=$_INCDIR/armv7
_ARCHLIBDIR=$_LIBDIR/armv7
_ARCHEXTRA=""
_ARCH=armv7
fi
if [ "$CONFIG_ARCH_POWERPC" = "y" ]; then
_ARCHINCDIR=$_INCDIR/powerpc
_ARCHLIBDIR=$_LIBDIR/powerpc
_ARCHEXTRA=""
_ARCH=powerpc
fi
if [ "$CONFIG_ARCH_X86" = "y" ]; then
_ARCHINCDIR=$_INCDIR/x86
_ARCHLIBDIR=$_LIBDIR/x86
_ARCHEXTRA="-m32 "
_ARCH=x86
fi
if [ -f $_LIBDIR/libpayload.ldscript ]; then
_LDDIR=$_LIBDIR
elif [ -f $BASE/../arch/$_ARCH/libpayload.ldscript ]; then
_LDDIR=$BASE/../arch/$_ARCH
fi
_LDSCRIPT="-Wl,-T,$_LDDIR/libpayload.ldscript"
trygccoption() {
$DEFAULT_CC $1 -S -xc /dev/null -o /dev/null &> /dev/null
@ -107,25 +140,7 @@ while [ $# -gt 0 ]; do
shift
done
if [ "$CONFIG_ARCH_ARMV7" = "y" ]; then
_ARCHINCDIR=$_INCDIR/armv7
_ARCHLIBDIR=$_LIBDIR/armv7
_ARCHEXTRA=""
fi
if [ "$CONFIG_ARCH_POWERPC" = "y" ]; then
_ARCHINCDIR=$_INCDIR/powerpc
_ARCHLIBDIR=$_LIBDIR/powerpc
_ARCHEXTRA=""
fi
if [ "$CONFIG_ARCH_X86" = "y" ]; then
_ARCHINCDIR=$_INCDIR/x86
_ARCHLIBDIR=$_LIBDIR/x86
_ARCHEXTRA="-m32 "
fi
_CFLAGS="$_ARCHEXTRA -nostdinc -nostdlib -I$_INCDIR -I$_ARCHINCDIR -D__LIBPAYLOAD__=1"
_CFLAGS="$_ARCHEXTRA -nostdinc -nostdlib -I$BASE/../build -I$_INCDIR -I$_ARCHINCDIR -D__LIBPAYLOAD__=1"
# Check for the -fno-stack-protector silliness
@ -134,7 +149,7 @@ trygccoption -fno-stack-protector
_CFLAGS="$_CFLAGS -I`$DEFAULT_CC $_ARCHEXTRA -print-search-dirs | head -n 1 | cut -d' ' -f2`include"
_LDFLAGS="-L$BASE/../lib $_LDSCRIPT -static"
_LDFLAGS="-L$BASE/../lib -L$_LIBDIR $_LDSCRIPT -static"
if [ $DOLINK -eq 0 ]; then
if [ $DEBUGME -eq 1 ]; then
@ -144,8 +159,16 @@ if [ $DOLINK -eq 0 ]; then
$DEFAULT_CC $_CFLAGS $CMDLINE
else
_LIBGCC=`$DEFAULT_CC $_ARCHEXTRA -print-libgcc-file-name`
if [ -f $_ARCHLIBDIR/head.o ]; then
HEAD_O=$_ARCHLIBDIR/head.o
elif [ -f $BASE/../build/head.o ]; then
HEAD_O=$BASE/../build/head.o
else
echo "Could not find head.o"
exit 1
fi
if [ $DEBUGME -eq 1 ]; then
echo "$DEFAULT_CC $_CFLAGS $_LDFLAGS $_ARCHLIBDIR/head.o $CMDLINE -lpayload $_LIBGCC"
echo "$DEFAULT_CC $_CFLAGS $_LDFLAGS $HEAD_O $CMDLINE -lpayload $_LIBGCC"
fi
# Note: $_ARCHLIBDIR/head.o must be the first object being linked, because it
@ -153,5 +176,5 @@ else
# header to be placed below 0x2000 in the resulting image. See:
# http://www.gnu.org/software/grub/manual/multiboot/html_node/OS-image-format.html
$DEFAULT_CC $_CFLAGS $_LDFLAGS $_ARCHLIBDIR/head.o $CMDLINE -lpayload $_LIBGCC
$DEFAULT_CC $_CFLAGS $_LDFLAGS $HEAD_O $CMDLINE -lpayload $_LIBGCC
fi