- add configure only mode to easily and quickly check Config.lb and Option.lb
  files
- fix up cross compiler handling
- don't use in-place sed, not all sed versions can do it
- use perl instead of date to avoid non-gnu date trouble

Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Myles Watson <mylesgw@gmail.com>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3992 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Stefan Reinauer 2009-03-11 15:00:50 +00:00 committed by Stefan Reinauer
parent a8e1168064
commit cc44b06d9d
1 changed files with 27 additions and 18 deletions

View File

@ -32,6 +32,9 @@ TESTSUBMISSION="http://qa.coreboot.org/deployment/send.php"
# Number of CPUs to compile on per default
cpus=1
# Configure-only mode
configureonly=0
# One might want to adjust these in case of cross compiling
MAKE="make"
PYTHON=python
@ -47,6 +50,7 @@ silent=
stackprotect=false
ARCH=`uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/i86pc/i386/ \
-e s/arm.*/arm/ -e s/sa110/arm/ -e s/x86_64/amd64/ \
-e "s/Power Macintosh/ppc/"`
@ -183,14 +187,15 @@ EOF
COMPRESSION="# no compression"
fi
sed -i.pre -e s:VENDOR:$VENDOR:g \
cp $TARGET/Config-${VENDOR}_${MAINBOARD}.lb $TARGET/Config-${VENDOR}_${MAINBOARD}.lb.pre
sed -e s:VENDOR:$VENDOR:g \
-e s:MAINBOARD:$MAINBOARD:g \
-e s:payload\ __PAYLOAD__:payload\ $PAYLOAD:g \
-e s:CROSSCC:"$CC":g \
-e s:CROSS_PREFIX:"$CROSS_COMPILE":g \
-e s:CROSS_HOSTCC:"$HOSTCC":g \
-e s:__COMPRESSION__:"$COMPRESSION":g \
$TARGET/Config-${VENDOR}_${MAINBOARD}.lb
$TARGET/Config-${VENDOR}_${MAINBOARD}.lb.pre > $TARGET/Config-${VENDOR}_${MAINBOARD}.lb
printf " ok\n"
}
@ -260,10 +265,10 @@ function compile_target
CURR=$( pwd )
cd $TARGET/${VENDOR}_${MAINBOARD}
stime=`date +%s`
stime=`perl -e 'print time();'`
eval $MAKE $silent -j $cpus &> make.log
ret=$?
etime=`date +%s`
etime=`perl -e 'print time();'`
duration=$(( $etime - $stime ))
if [ $ret -eq 0 ]; then
xml " <compile>ok</compile>"
@ -316,20 +321,22 @@ function build_target
# default setting
if [ "`uname -s`" == Darwin ]; then
# Darwin requires i386-elf-[binuitils|gcc] from MacPorts
# and a link from i386-elf-gcc-<version> to i386-elf-gcc
CC="$TARCH-elf-gcc -Wa,--divide"
CROSS_COMPILE="$TARCH-elf-"
else
CC='$(CROSS_COMPILE)gcc'
CROSS_COMPILE=''
CC="${CROSS_COMPILE}gcc"
CROSS_COMPILE=""
found_crosscompiler=false
if which $TARCH-elf-gcc 2>/dev/null >/dev/null; then
# i386-elf target needs --divide, for i386-linux, that's the default
CC="$TARCH-elf-gcc"
if [ "$TARCH" = "i386" ]; then
CC="$CC -Wa,--divide"
fi
echo using $CC
CROSS_COMPILE="$TARCH-elf-"
found_crosscompiler=true
fi
if [ "$stackprotect" = "true" ]; then
CC="$CC -fno-stack-protector"
fi
HOSTCC='gcc'
printf "Processing mainboard/$VENDOR/$MAINBOARD"
@ -345,7 +352,7 @@ function build_target
[ -r "$LBROOT/src/mainboard/${VENDOR}/${MAINBOARD}/abuild.info" ] && \
source $LBROOT/src/mainboard/${VENDOR}/${MAINBOARD}/abuild.info
if [ "$ARCH" == "$TARCH" ]; then
if [ "$ARCH" = "$TARCH" -o $found_crosscompiler = true ]; then
printf " ($TARCH: ok)\n"
else
found_crosscompiler=false
@ -408,7 +415,7 @@ function build_target
}
create_buildenv $VENDOR $MAINBOARD
if [ $? -eq 0 ]; then
if [ $? -eq 0 -a $configureonly -eq 0 ]; then
compile_target $VENDOR $MAINBOARD &&
xml " <status>ok</status>" ||
xml "<status>broken</status>"
@ -477,6 +484,7 @@ function myhelp
printf " [-c|--cpus <numcpus>] build on <numcpus> at the same time\n"
printf " [-s|--silent] omit compiler calls in logs\n"
printf " [-ns|--nostackprotect] use gcc -fno-stack-protector option\n"
printf " [-C|--config] configure-only mode\n"
printf " [lbroot] absolute path to coreboot sources\n"
printf " (defaults to $LBROOT)\n\n"
}
@ -507,11 +515,11 @@ verbose=false
getoptbrand="`getopt -V`"
if [ "${getoptbrand:0:6}" == "getopt" ]; then
# Detected GNU getopt that supports long options.
args=`getopt -l version,verbose,help,all,target:,broken,payloads:,test,cpus:,silent,xml Vvhat:bp:Tc:sx -- "$@"`
args=`getopt -l version,verbose,help,all,target:,broken,payloads:,test,cpus:,silent,xml,config Vvhat:bp:Tc:sxC -- "$@"`
eval set "$args"
else
# Detected non-GNU getopt
args=`getopt Vvhat:bp:Tc:sx $*`
args=`getopt Vvhat:bp:Tc:sxC $*`
set -- $args
fi
@ -534,6 +542,7 @@ while true ; do
-c|--cpus) shift; cpus="$1"; test "$cpus" == "max" && cpus=""; shift;;
-s|--silent) shift; silent="-s";;
-ns|--nostackprotect) shift; stackprotect=true;;
-C|--config) shift; configureonly=1;;
--) shift; break;;
-*) printf "Invalid option\n\n"; myhelp; exit 1;;
*) break;;