From 1ef625088ebba153dffaabd07494ebc9dd4212c0 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 14 Jun 2000 22:02:50 +0000 Subject: New file from Ralf. --- tools/build/multigen | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100755 tools/build/multigen diff --git a/tools/build/multigen b/tools/build/multigen new file mode 100755 index 0000000000..710f89f2ae --- /dev/null +++ b/tools/build/multigen @@ -0,0 +1,165 @@ +#!/bin/sh + +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 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_FLAGS=$flags +BARE_CPU_MODEL=NONE + +include \$(RTEMS_ROOT)/make/custom/bare.cfg +EOF + + fi +done + +exit 0 -- cgit v1.2.3