1.1 --- a/tools/listlibs.sh Mon May 29 21:18:33 2023 +0200
1.2 +++ b/tools/listlibs.sh Wed May 31 16:41:49 2023 +0200
1.3 @@ -1,8 +1,27 @@
1.4 #!/bin/sh
1.5
1.6 -CONF="$1"
1.7 +# List the modules required by a particular L4Re program configuration.
1.8 +#
1.9 +# Copyright (C) 2018, 2019, 2022, 2023 Paul Boddie <paul@boddie.org.uk>
1.10 +#
1.11 +# This program is free software; you can redistribute it and/or
1.12 +# modify it under the terms of the GNU General Public License as
1.13 +# published by the Free Software Foundation; either version 2 of
1.14 +# the License, or (at your option) any later version.
1.15 +#
1.16 +# This program is distributed in the hope that it will be useful,
1.17 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
1.18 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.19 +# GNU General Public License for more details.
1.20 +#
1.21 +# You should have received a copy of the GNU General Public License
1.22 +# along with this program; if not, write to the Free Software
1.23 +# Foundation, Inc., 51 Franklin Street, Fifth Floor,
1.24 +# Boston, MA 02110-1301, USA
1.25
1.26 -if [ ! "$CONF" ] || [ ! -e "$CONF" ] ; then
1.27 +MODULES="$1"
1.28 +
1.29 +if [ ! "$MODULES" ] || [ ! -e "$MODULES" ] ; then
1.30 cat 1>&2 <<EOF
1.31 Usage: $0 <module list filename> [ --ignore-missing ] [ <arch> ] [ <build directory> ]
1.32
1.33 @@ -17,6 +36,8 @@
1.34 exit 1
1.35 fi
1.36
1.37 +# Skip the module list file.
1.38 +
1.39 shift 1
1.40
1.41 # Get flag.
1.42 @@ -64,8 +85,6 @@
1.43 # Test for architecture-specific program directories.
1.44
1.45 for FILENAME in "$BUILDDIR/bin/"* ; do
1.46 - BASENAME=`basename "$FILENAME"`
1.47 -
1.48 if [ "$FILENAME" = "$BUILDDIR/bin/*" ] ; then
1.49 cat 1>&2 <<EOF
1.50 No architecture-specific directories in the build directory hierarchy:
1.51 @@ -73,7 +92,13 @@
1.52 $BUILDDIR/bin
1.53 EOF
1.54 exit 1
1.55 - elif [ ! "$ARCH" ] || [ "${ARCH}_gen" = "$BASENAME" ] ; then
1.56 + fi
1.57 +
1.58 + BASENAME=$(basename "$FILENAME")
1.59 +
1.60 + if [ "$BASENAME" = 'host' ] ; then
1.61 + :
1.62 + elif [ ! "$ARCH" ] || [ "$ARCH" = "$BASENAME" ] ; then
1.63 ARCHDIR="$BASENAME"
1.64 break
1.65 fi
1.66 @@ -83,8 +108,16 @@
1.67
1.68 if [ ! "$ARCHDIR" ] ; then
1.69 cat 1>&2 <<EOF
1.70 -No architecture specified or no appropriate program directory found.
1.71 +Architecture not in use or no appropriate program directory found.
1.72 +Possible architectures are as follows:
1.73 +
1.74 EOF
1.75 + for FILENAME in "$BUILDDIR/bin/"* ; do
1.76 + ARCH=$(basename "$FILENAME")
1.77 + if [ "$ARCH" != 'host' ] ; then
1.78 + echo "$ARCH"
1.79 + fi
1.80 + done
1.81 exit 1
1.82 fi
1.83
1.84 @@ -95,25 +128,26 @@
1.85
1.86 echo -n > "$TMPLIBS"
1.87
1.88 -for MODULE in `grep '^module ' "$CONF" | sed 's/module //'` ; do
1.89 - PROG=`basename "$MODULE" .cfg`
1.90 +for MODULE in $(grep '^module ' "$MODULES" | sed 's/module //') ; do
1.91 + PROG=$(basename "$MODULE" .cfg)
1.92 if [ "$PROG" != "$MODULE" ] ; then
1.93 continue
1.94 fi
1.95 - PROG=`basename "$MODULE" .io`
1.96 + PROG=$(basename "$MODULE" .io)
1.97 if [ "$PROG" != "$MODULE" ] ; then
1.98 continue
1.99 fi
1.100 - PROG=`basename "$MODULE" .so`
1.101 + PROG=$(basename "$MODULE" .so)
1.102 if [ "$PROG" != "$MODULE" ] ; then
1.103 continue
1.104 fi
1.105 - PROG=`basename "$MODULE" .txt`
1.106 + PROG=$(basename "$MODULE" .txt)
1.107 if [ "$PROG" != "$MODULE" ] ; then
1.108 continue
1.109 fi
1.110 if [ ! -e "$BIN/$PROG" ] && [ ! "$IGNORE_MISSING" ] ; then
1.111 echo "Not found: $PROG" 1>&2
1.112 + rm "$TMPLIBS"
1.113 exit 1
1.114 fi
1.115
1.116 @@ -128,3 +162,5 @@
1.117
1.118 sort -u "$TMPLIBS" | sed 's/^/module /'
1.119 rm "$TMPLIBS"
1.120 +
1.121 +# vim: tabstop=4 expandtab shiftwidth=4