diff options
author | Patrick Georgi <patrick.georgi@secunet.com> | 2013-02-21 14:33:25 +0100 |
---|---|---|
committer | Ronald G. Minnich <rminnich@gmail.com> | 2013-06-25 16:17:41 +0200 |
commit | cb76136420c73eb4f3122137b441835eee147c61 (patch) | |
tree | 8a63fe31fc7718d6d02235e2466edd9395eafced /payloads/libpayload/bin/lpgcc | |
parent | 8b9d4f3296ce5b6804963bfcc56cd741bb66e7ab (diff) | |
download | coreboot-cb76136420c73eb4f3122137b441835eee147c61.tar.xz |
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>
Diffstat (limited to 'payloads/libpayload/bin/lpgcc')
-rwxr-xr-x | payloads/libpayload/bin/lpgcc | 71 |
1 files changed, 47 insertions, 24 deletions
diff --git a/payloads/libpayload/bin/lpgcc b/payloads/libpayload/bin/lpgcc index 06b9021fbf..f0b24170e4 100755 --- a/payloads/libpayload/bin/lpgcc +++ b/payloads/libpayload/bin/lpgcc @@ -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 + +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 -_LDSCRIPT="-Wl,-T,$_LIBDIR/libpayload.ldscript" +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 |