85 lines
1.6 KiB
Bash
Executable File
85 lines
1.6 KiB
Bash
Executable File
#!/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
|
|
|
|
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 $?
|