#!/bin/sh # $Id$ version=0.1 verbose=0 target= custom=0 config=0 usage() { program=`basename $0` cat << EOF $program generates RTEMS custom/*.cfgs and config-files for gcc multilib variants a target's gcc supports Usage: $program [options] Options: --target=STRING target --custom generate make/custom/*.cfg files --config generate config scripts --rtems=DIR use DIR as location of RTEMS source tree -v, --verbose verbose -h, --help Print this usage --version Print version and exit Examples: $program --config --target=sh-rtems --rtems=/usr/src/rtems-4.5.0 Generates config scripts for all possible bare BSPs from all valid multilib variants sh-rtems-gcc supports $program --custom --target=sh-rtems --rtems=/usr/src/rtems-4.5.0 Generates /usr/src/rtems-4.5.0/make/custom/*.cfg files for all possible bare BSPs from the multilib variants sh-rtems-gcc supports Written by Ralf Corsepius EOF } while test $# -gt 0; do case "$1" in --rtems=*) rtems_srcdir=`echo "$1" | sed -e 's%--rtems=\(.*\)%\1%g'` ;; --target=*) target=`echo "$1" | sed -e 's%--target=\(.*\)%\1%g'` ;; -v|--verbose) verbose=1 ;; --custom) custom=1 ;; --config) config=1 ;; --version) echo `basename $0` version $version exit 0 ;; -h|--help) usage exit 1 ;; *) echo "unknown option $1" usage exit 1 ;; esac shift done if test $# -gt 0; then echo "Invalid number of arguments" exit 1 fi if test x$target = x; then echo "Missing required option:" echo " --target" exit 1 fi if test x$rtems_srcdir = x; then echo "Missing required option:" echo " --rtems" exit 1 fi if test $config -eq 0 && test $custom -eq 0; then echo "Missing required option:" echo " --config" echo " --custom" echo " (At least one of these is required)" exit 1 fi if test ! -r $rtems_srcdir/VERSION; then echo "Can't find rtems" echo "Check value passed to --rtems=" exit 1 fi if test x$target != x ;then target_prefix=$target- fi # Check for CC saved_IFS=$IFS; IFS=":" for i in $PATH; do if test -f $i/${target_prefix}gcc; then CC=$i/${target_prefix}gcc break fi done IFS=$saved_IFS if test x$CC = x; then echo "No valid gcc found" exit 1 fi test $verbose -gt 0 && echo "Using $CC" for i in `${CC} --print-multi-lib 2>/dev/null`; do dir=`echo $i | sed -e 's/;.*$//'` case $dir in .) f=$target flags="" ;; *) f=`echo $target-$dir | sed -e 's%\/%-%g'` flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'` ;; esac if test $config -gt 0; then cfg="rtems-config.$f" test $verbose -gt 0 && echo "Generating: $cfg" cat << EOF > $cfg #!/bin/sh ${rtems_srcdir}/configure --target=$target \\ '--enable-bare-cpu-cflags=$flags' \\ --enable-rtemsbsp="bare" \\ --enable-bare-cpu-model=NONE \\ --disable-networking \\ --disable-tests \\ --enable-maintainer-mode EOF chmod +x $cfg fi if test $custom -gt 0; then cfg=${rtems_srcdir}/make/custom/bare-$f.cfg test $verbose -gt 0 && echo "Generating: $cfg" cat << EOF > $cfg # Config file for the bare-$f BSP BARE_CPU_CFLAGS=$flags BARE_CPU_MODEL=NONE include \$(RTEMS_ROOT)/make/custom/bare.cfg EOF fi done exit 0