Fix for Erratum 343 for AMD Fam10h CPUs.
[coreboot.git] / targets / buildtarget
index ac9326ea4d7aa5343f384d532c258da60fbb41f5..02694a2411f562cc3944da8a68231fdad6512cdf 100755 (executable)
@@ -3,7 +3,7 @@ PYTHON=python
 # Target build script
 
 if [ $# -lt 1 ]; then
-       echo "usage: buildtarget target [path-to-linuxbios]"
+       echo "usage: buildtarget target [path-to-coreboot]"
        exit 1
 fi
 
@@ -37,14 +37,14 @@ if [ ! -f $config_lb ]; then
 fi
 
 build_dir=`dirname $config_lb`/`sed -n -e 's/^target \(.*\)$/\1/p' $config_lb`
-echo $build_dir
+echo "build_dir=$build_dir"
 config_py=$build_dir/config.py
 
-if [ ! -d $target_subdir ] ; then
-       mkdir -p $target_subdir
+if [ ! -d $build_dir ] ; then
+       mkdir -p $build_dir
 fi
 if [ ! -f $config_py ]; then
-       echo "No linuxbios config script found. Rebuilding it.."
+       echo "No coreboot config script found. Rebuilding it.."
        $PYTHON $yapps2_py $config_g $config_py
 fi
 
@@ -53,4 +53,35 @@ fi
 export PYTHONPATH=$config_dir
 $PYTHON $config_py $config_lb $lbpath
 
+# now start checking for distro-specific breakage. 
+## This check is for the no stack protector mess.
+EXTRA_CFLAGS=
+
+if [ -z "$CC" ]; then
+       CC=gcc
+fi
+
+$CC -fno-stack-protector -S -xc /dev/null -o .$$.tmp 2>/dev/null
+
+if [ $? -eq 0 ]; then
+       EXTRA_CFLAGS=-fno-stack-protector
+fi
+
+rm -rf .$$.tmp
+
+# The linker output fd depends on the gcc version.
+#  1) 'ld-2.15 --help' and 'gcc-4.0 -Wl,--help' use STDOUT.
+#  2) 'gcc-3.3 --help' and 'gcc-3.4 -Wl,--help' use STDERR.
+# Thus older versions of GCC (presumably 3.x) implement a redirection of
+# output to stderr. Re-redirect stderr to stdout to work always.
+if $CC -Wl,--help 2>&1 | grep -q build-id; then
+       EXTRA_LFLAGS="$EXTRA_LFLAGS -Wl,--build-id=none"
+fi
+
+for i in $build_dir/Makefile.settings $build_dir/*/Makefile.settings
+do
+       echo DISTRO_CFLAGS+=$EXTRA_CFLAGS >>$i
+       echo DISTRO_LFLAGS+=$EXTRA_LFLAGS >>$i
+done
+
 exit $?