blob: 86d0ee229d270deb9b33cc32420257237e47f0bb [file] [log] [blame]
#!/bin/sh
PYTHON=python
# Target build script
if [ $# -lt 1 ]; then
echo "usage: buildtarget target [path-to-coreboot]"
exit 1
fi
if [ $# -gt 1 ]; then
lbpath=$2
else
lbpath=`pwd`
lbpath=`dirname $lbpath`
fi
target_dir=$lbpath/targets
config_lb=$1
config_dir=$lbpath/util/newconfig
yapps2_py=$config_dir/yapps2.py
config_g=$config_dir/config.g
if [ ! -d $target_dir ]; then
echo "Target directory not found"
exit 1
fi
cd $target_dir
if [ ! -f $config_lb ]; then
config_lb=$1/Config.lb
fi
if [ ! -f $config_lb ]; then
echo "No target config file found"
echo "Tried both $1 and $config_lb"
exit 1
fi
build_dir=`dirname $config_lb`/`sed -n -e 's/^target \(.*\)$/\1/p' $config_lb`
echo "build_dir=$build_dir"
config_py=$build_dir/config.py
if [ ! -d $build_dir ] ; then
mkdir -p $build_dir
fi
if [ ! -f $config_py ]; then
echo "No coreboot config script found. Rebuilding it.."
$PYTHON $yapps2_py $config_g $config_py
fi
# make sure config.py is up-to-date
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
ld --help | awk '{for (i=1;i<=NF;i++) if ($i ~ /build-id/){n++} }; END {exit n}'
build_id=$?
if [ $build_id -ge 1 ] ; 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 $?