From d751cecbb1ca1b7ac0a7bc8492e0e61e6c5fc0c7 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 17 May 2011 20:39:40 +0000 Subject: * tools/build/.cvsignore, tools/build/ChangeLog, tools/build/Makefile.am, tools/build/README, tools/build/binpatch.c, tools/build/cklength.c, tools/build/config.h.in, tools/build/configure.ac, tools/build/cvsignore-add.sh, tools/build/doxy-filter, tools/build/eolstrip.c, tools/build/install-if-change.in, tools/build/multigen, tools/build/packhex.c, tools/build/rtems-bin2c.c, tools/build/search-id.sh, tools/build/unhex.c, tools/cpu/.cvsignore, tools/cpu/ChangeLog, tools/cpu/Makefile.am, tools/cpu/configure.ac, tools/cpu/generic/.cvsignore, tools/cpu/generic/ChangeLog, tools/cpu/generic/Makefile.am, tools/cpu/generic/configure.ac, tools/cpu/generic/size_rtems.in, tools/cpu/nios2/.cvsignore, tools/cpu/nios2/ChangeLog, tools/cpu/nios2/Makefile.am, tools/cpu/nios2/README, tools/cpu/nios2/bridges.c, tools/cpu/nios2/bridges.h, tools/cpu/nios2/clocks.c, tools/cpu/nios2/clocks.h, tools/cpu/nios2/configure.ac, tools/cpu/nios2/devices.c, tools/cpu/nios2/devices.h, tools/cpu/nios2/linkcmds.c, tools/cpu/nios2/linkcmds.h, tools/cpu/nios2/memory.c, tools/cpu/nios2/memory.h, tools/cpu/nios2/nios2gen.c, tools/cpu/nios2/output.c, tools/cpu/nios2/output.h, tools/cpu/nios2/ptf.c, tools/cpu/nios2/ptf.h, tools/cpu/nios2/sample.ptf, tools/cpu/sh/.cvsignore, tools/cpu/sh/AUTHORS, tools/cpu/sh/COPYING, tools/cpu/sh/ChangeLog, tools/cpu/sh/Makefile.am, tools/cpu/sh/TODO, tools/cpu/sh/configure.ac, tools/cpu/sh/sci.c, tools/cpu/sh/sci.h, tools/cpu/sh/shgen.c: New files. --- tools/build/multigen | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100755 tools/build/multigen (limited to 'tools/build/multigen') diff --git a/tools/build/multigen b/tools/build/multigen new file mode 100755 index 0000000000..06bfe65449 --- /dev/null +++ b/tools/build/multigen @@ -0,0 +1,173 @@ +#!/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 -- cgit v1.2.3