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.
191 lines
5.5 KiB
Plaintext
191 lines
5.5 KiB
Plaintext
#
|
|
# Hack of a script to generate a very long list which contains
|
|
# the size information for every service listed in this manual
|
|
#
|
|
# This script must be modified by the user to tailor it for their
|
|
# environment. This is VERY ugly and could be replaced by something
|
|
# nicer in the future if this report style is useful.
|
|
|
|
#cpu=sparc
|
|
#bsp=erc32
|
|
|
|
#cpu=powerpc
|
|
#bsp=mcp750
|
|
|
|
cpu=v850
|
|
bsp=bare
|
|
symprefix=_
|
|
|
|
#objdir=/usr1/rtems/build/build-${cpu}-rtems/${cpu}-rtems/c/${bsp}/
|
|
#libc=/opt/rtems/${cpu}-rtems/lib/libc.a
|
|
#libm=/opt/rtems/${cpu}-rtems/lib/libm.a
|
|
objdir=/usr1/rtems/work/tools-v850/b-rtems/${cpu}-rtems/c/${bsp}/
|
|
libc=/usr2/test-v850/${cpu}-rtems/lib/libc.a
|
|
libm=/usr2/test-v850/${cpu}-rtems/lib/libm.a
|
|
srcdir=$r/src
|
|
docdir=$d
|
|
nm=${cpu}-rtems-nm
|
|
size=${cpu}-rtems-size
|
|
ar=${cpu}-rtems-ar
|
|
|
|
#
|
|
# All customization should be above this point
|
|
#
|
|
|
|
check_objs()
|
|
{
|
|
for i in *.o
|
|
do
|
|
${nm} $i | grep "T ${symprefix}${1}$" >/dev/null
|
|
if [ $? -eq 0 ] ; then
|
|
echo $i
|
|
return 0
|
|
fi
|
|
done
|
|
return 1
|
|
}
|
|
per_manager()
|
|
{
|
|
docfile=$1
|
|
shift
|
|
subdirs=$*
|
|
grep ^@item ${docfile} | grep "@code.* - " | \
|
|
grep -v "@item E" | \
|
|
grep -v "@code{CONFIGURE" | \
|
|
grep -v "@value{RPREFIX" | \
|
|
sed -e 's/@value{DIRPREFIX}/rtems_/' | \
|
|
cut -d'{' -f2 | sed -e 's/}//' | cut -d'-' -f1 >/tmp/XXX.size
|
|
|
|
if [ `wc -c </tmp/XXX.size` -eq 1 ] ; then
|
|
return
|
|
fi
|
|
echo "====> `grep ^@chapter ${docfile} | sed -e 's/@chapter //'`"
|
|
cat /tmp/XXX.size | while read line
|
|
do
|
|
# echo $line
|
|
found=no
|
|
for subd in ${subdirs}
|
|
do
|
|
if [ ${found} = "no" ] ; then
|
|
cd ${objdir}/${subd}/o-optimize/
|
|
objfile=`check_objs $line`
|
|
if [ $? -eq 0 ] ; then
|
|
found=yes
|
|
#echo ${objfile}
|
|
objcode=`${size} ${objfile} | tail -1 | cut -f1`
|
|
objdata=`${size} ${objfile} | tail -1 | cut -f2`
|
|
objbss=`${size} ${objfile} | tail -1 | cut -f3`
|
|
objcode=`echo ${objcode}`
|
|
objdata=`echo ${objdata}`
|
|
objbss=`echo ${objbss}`
|
|
echo "${line} - ${objcode}, ${objdata}, ${objbss}"
|
|
fi
|
|
fi
|
|
done
|
|
if [ ${found} = "no" ] ; then
|
|
echo "$line - macro or not implemented"
|
|
fi
|
|
|
|
done
|
|
}
|
|
|
|
|
|
# extract libc
|
|
if [ ! -d ${objdir}/newlib_extract/o-optimize ] ; then
|
|
mkdir -p ${objdir}/newlib_extract/o-optimize
|
|
cd ${objdir}/newlib_extract/o-optimize
|
|
list=`${ar} t ${libc}`
|
|
for i in $list
|
|
do
|
|
${ar} x ${libc} ${i}
|
|
done
|
|
fi
|
|
|
|
# extract libm
|
|
if [ ! -d ${objdir}/libm_extract/o-optimize ] ; then
|
|
mkdir -p ${objdir}/libm_extract/o-optimize
|
|
cd ${objdir}/libm_extract/o-optimize
|
|
list=`${ar} t ${libm}`
|
|
for i in $list
|
|
do
|
|
${ar} x ${libm} ${i}
|
|
done
|
|
fi
|
|
|
|
# grab the size of the Classic API
|
|
#
|
|
# NOTE: This API is always configured.
|
|
#
|
|
cd ${docdir}/user
|
|
echo
|
|
echo "=============================================================="
|
|
echo "=============================================================="
|
|
echo "==== ===="
|
|
echo "==== CLASSIC API SIZE INFORMATION ===="
|
|
echo "==== ===="
|
|
echo "=============================================================="
|
|
echo "=============================================================="
|
|
echo
|
|
if [ -r ${objdir}/../../../${bsp}/lib/librtems.a ] ; then
|
|
for i in *.t
|
|
do
|
|
per_manager $i exec/rtems/src exec/sapi/src lib/libc
|
|
done
|
|
else
|
|
echo "RTEMS Classic API not configured."
|
|
fi
|
|
|
|
# Grab the size of the POSIX API
|
|
cd ${docdir}/posix_users
|
|
echo
|
|
echo "=============================================================="
|
|
echo "=============================================================="
|
|
echo "==== ===="
|
|
echo "==== POSIX 1003.1b API SIZE INFORMATION ===="
|
|
echo "==== ===="
|
|
echo "=============================================================="
|
|
echo "=============================================================="
|
|
echo
|
|
if [ -r ${objdir}/../../../${bsp}/lib/libposix.a ] ; then
|
|
for i in `ls -1 *.t | grep -v libc.t | grep -v libm.t`
|
|
do
|
|
per_manager $i exec/posix/src lib/libc newlib_extract
|
|
done
|
|
else
|
|
echo "POSIX API not configured."
|
|
fi
|
|
|
|
# Grab the size of the POSIX routines provided by the C Library
|
|
cd ${docdir}/posix_users
|
|
echo
|
|
echo "=============================================================="
|
|
echo "=============================================================="
|
|
echo "==== ===="
|
|
echo "==== LIBC API SIZE INFORMATION ===="
|
|
echo "==== ===="
|
|
echo "=============================================================="
|
|
echo "=============================================================="
|
|
echo
|
|
for i in libc.t
|
|
do
|
|
per_manager $i exec/posix/src lib/libc newlib_extract
|
|
done
|
|
|
|
# Grab the size of the libm routines
|
|
cd ${docdir}/posix_users
|
|
echo
|
|
echo "=============================================================="
|
|
echo "=============================================================="
|
|
echo "==== ===="
|
|
echo "==== LIBM API SIZE INFORMATION ===="
|
|
echo "==== ===="
|
|
echo "=============================================================="
|
|
echo "=============================================================="
|
|
echo
|
|
for i in libm.t
|
|
do
|
|
per_manager $i exec/posix/src lib/libc libm_extract
|
|
done
|
|
|
|
|