forked from Imagelibrary/rtems
These modifications were required by hand after running the script. In some cases, the file names did not match patterns. In others, the format of the file did not match any common patterns.
172 lines
3.3 KiB
Bash
Executable File
172 lines
3.3 KiB
Bash
Executable File
#!/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 <corsepiu@faw.uni-ulm.de>
|
|
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=<DIR>"
|
|
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
|