# archive for more details.
#
+#set -x # Turn echo on....
# Where shall we place all the build trees?
TARGET=$( pwd )/linuxbios-builds
-e s/arm.*/arm/ -e s/sa110/arm/ -e s/x86_64/amd64/ \
-e "s/Power Macintosh/ppc/"`
+function debug
+{
+ test "$verbose" == "true" && echo $*
+}
+
function vendors
{
# make this a function so we can easily select
# without breaking readability
- ls -1 $LBROOT/src/mainboard | grep -v CVS
+ ls -1 "$LBROOT/src/mainboard" | grep -v CVS
}
function mainboards
{
VENDOR=$1
MAINBOARD=$2
+ TARCH=$( architecture $VENDOR $MAINBOARD )
echo -n " Creating config file..."
mkdir -p $TARGET
( cat << EOF
mainboard VENDOR/MAINBOARD
option CC="CROSSCC"
-# not supported yet
-# option LD="CROSSLD"
+option CROSS_COMPILE="CROSS_PREFIX"
+option HOSTCC="CROSS_HOSTCC"
+EOF
+ if [ $TARCH == i386 ] ; then
+ cat <<EOF
romimage "normal"
option USE_FALLBACK_IMAGE=0
- option ROM_IMAGE_SIZE=0x12000
+ option ROM_IMAGE_SIZE=0x18000
option LINUXBIOS_EXTRA_VERSION=".0-normal"
payload PAYLOAD
end
romimage "fallback"
option USE_FALLBACK_IMAGE=1
- option ROM_IMAGE_SIZE=0x12000
+ option ROM_IMAGE_SIZE=0x18000
option LINUXBIOS_EXTRA_VERSION=".0-fallback"
payload PAYLOAD
end
-
-buildrom ./VENDOR_MAINBOARD.rom ROM_SIZE "normal" "fallback"
+buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback"
EOF
+ else
+ cat <<EOF
+romimage "only"
+ option LINUXBIOS_EXTRA_VERSION=".0"
+ payload PAYLOAD
+end
+buildrom ./linuxbios.rom ROM_SIZE "only"
+EOF
+ fi
) | sed -e s,VENDOR,$VENDOR,g \
-e s,MAINBOARD,$MAINBOARD,g \
-e s,PAYLOAD,$PAYLOAD,g \
-e s,CROSSCC,"$CC",g \
- -e s,CROSSLD,"$LD",g \
+ -e s,CROSS_PREFIX,"$CROSS_COMPILE",g \
+ -e s,CROSS_HOSTCC,"$HOSTCC",g \
> $TARGET/Config-${VENDOR}_${MAINBOARD}.lb
echo " ok"
}
fi
[ "$buildall" != "true" -a "$status" == "ok" ]
}
+
+function build_broken
+{
+ CURR=`pwd`
+ status="yes"
+ [ -r "$LBROOT/src/mainboard/${VENDOR}/${MAINBOARD}/BROKEN" ] && status="no"
+ [ "$buildbroken" == "true" -o "$status" == "yes" ]
+}
+
function build_target
{
VENDOR=$1
TARCH=$( architecture $VENDOR $MAINBOARD )
# default setting
- CC="gcc"
- LD="ld"
-
+ CC='$(CROSS_COMPILE)gcc'
+ HOSTCC='gcc'
+ CROSS_COMPILE=''
+
echo -n "Processing mainboard/$VENDOR/$MAINBOARD"
if [ "$ARCH" == "$TARCH" ]; then
if [ "$ARCH" == amd64 -a "$TARCH" == i386 ]; then
CC="gcc -m32"
found_crosscompiler=true
- echo " ($TARCH: subset of $ARCH)"
fi
if [ "$ARCH" == ppc64 -a "$TARCH" == ppc ]; then
CC="gcc -m32"
found_crosscompiler=true
- echo " ($TARCH: subset of $ARCH)"
+ fi
+ if [ "$found_crosscompiler" == "false" -a "$TARCH" == ppc ];then
+ for prefix in powerpc-eabi- powerpc-linux- ppc_74xx- \
+ powerpc-7450-linux-gnu-; do
+ if ${prefix}gcc --version > /dev/null 2> /dev/null ; then
+ found_crosscompiler=true
+ CROSS_COMPILE=$prefix
+ fi
+ done
fi
# TBD: look for suitable cross compiler suite
# Check result:
if [ $found_crosscompiler == "false" ]; then
echo " ($TARCH: skipped, we're $ARCH)"
+ echo
return 0
+ else
+ echo " ($TARCH: ok, we're $ARCH)"
fi
fi
-
- if ! built_successfully $VENDOR $MAINBOARD ; then
- create_buildenv $VENDOR $MAINBOARD
- if [ $? -eq 0 ]; then
- compile_target $VENDOR $MAINBOARD
- fi
- else
+
+ built_successfully $VENDOR $MAINBOARD && \
+ {
echo " ( mainboard/$VENDOR/$MAINBOARD previously ok )"
+ echo
+ return 0
+ }
+
+ build_broken $VENDOR $MAINBOARD || \
+ {
+ echo " ( broken mainboard/$VENDOR/$MAINBOARD skipped )"
+ echo
+ return 0
+ }
+
+ create_buildenv $VENDOR $MAINBOARD
+ if [ $? -eq 0 ]; then
+ compile_target $VENDOR $MAINBOARD
fi
+
echo
}
function myhelp
{
- echo "Usage: $0 [-v|--verbose] [-a|--all] [-t|--target vendor/board] [lbroot]"
+ echo "Usage: $0 [-v] [-a] [-b] [-t <vendor/board>] [lbroot]"
echo " $0 [-V|--version]"
echo " $0 [-h|--help]"
- exit 0
+ echo
+ echo "Options:"
+ echo " [-v|--verbose] print more messages"
+ echo " [-a|--all] build previously succeeded ports as well"
+ echo " [-b|--broken] attempt to build ports that are known broken"
+ echo " [-t|--target <vendor/board>] attempt to build target vendor/board only"
+ echo " [-V|--version] print version number and exit"
+ echo " [-h|--help] print this help and exit"
+ echo " [lbroot] absolute path to LinuxBIOS sources"
+ echo " (defaults to $LBROOT)"
+ echo
}
function myversion
EOF
myhelp
- exit 0
}
# default options
target=""
buildall=false
+LBROOT=$( cd ../..; pwd )
+verbose=false
# parse parameters
-args=`getopt -l version,verbose,help,all,target: Vvhat: $*`
+args=`getopt -l version,verbose,help,all,target:,broken Vvhat:b -- "$@"`
if [ $? != 0 ]; then
myhelp
exit 1
fi
-set -- $args
-for arg
-do
- case $arg in
- -t|--target) shift;target=$1;shift;;
- -a|--all) shift;buildall=true;;
- -v|--verbose) shift;verbose=true;;
- -V|--version) shift;myversion;;
- -h|--help) shift;myhelp;;
- esac
+eval set "$args"
+while true ; do
+ case "$1" in
+ -t|--target) shift; target="$1"; shift;;
+ -a|--all) shift; buildall=true;;
+ -b|--broken) shift; buildbroken=true;;
+ -v|--verbose) shift; verbose=true;;
+ -V|--version) shift; myversion; exit 0;;
+ -h|--help) shift; myhelp; exit 0;;
+ --) shift; break;;
+ -*) echo -e "Invalid option\n"; myhelp; exit 1;;
+ *) break;;
+ esac
done
-# -- is $1
-LBROOT=$2
-
# /path/to/freebios2/
-if [ -z "$LBROOT" ] ; then
- LBROOT=$( cd ../..; pwd )
-fi
+test -z "$1" || LBROOT=$1
+
+debug "LBROOT=$LBROOT"
-if [ $target != "" ]; then
- # build a single board
- VENDOR=`echo $target|tr -d \'|cut -f1 -d/`
- MAINBOARD=`echo $target|tr -d \'|cut -f2 -d/`
- build_target $VENDOR $MAINBOARD
+if [ "$target" != "" ]; then
+ # build a single board
+ VENDOR=`echo $target|cut -f1 -d/`
+ MAINBOARD=`echo $target|cut -f2 -d/`
+ build_target $VENDOR $MAINBOARD
else
- # build all boards per default
- for VENDOR in $( vendors ); do
- for MAINBOARD in $( mainboards $VENDOR ); do
- build_target $VENDOR $MAINBOARD
- done
- done
+ # build all boards per default
+ for VENDOR in $( vendors ); do
+ for MAINBOARD in $( mainboards $VENDOR ); do
+ build_target $VENDOR $MAINBOARD
+ done
+ done
fi