summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1997-12-22 17:28:32 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1997-12-22 17:28:32 +0000
commit2ab1b3ac52768d1738e2273a3defa4b9911c9570 (patch)
tree7407e09bffeb763a54b9e169080de4ad2311886b /tools
parent86765accd2c4a9f15f911c598773aebf48744e02 (diff)
downloadrtems-2ab1b3ac52768d1738e2273a3defa4b9911c9570.tar.bz2
Now generating this file with autoconf to avoid having to embed so
much target specific information in the script.
Diffstat (limited to '')
-rw-r--r--tools/cpu/generic/size_rtems.in221
1 files changed, 221 insertions, 0 deletions
diff --git a/tools/cpu/generic/size_rtems.in b/tools/cpu/generic/size_rtems.in
new file mode 100644
index 0000000000..6ab8f04d92
--- /dev/null
+++ b/tools/cpu/generic/size_rtems.in
@@ -0,0 +1,221 @@
+#!KSHELL -p
+#
+# size_rtems
+#
+# This script gathers information related to the size of RTEMS
+# using the GNU "size" command.
+#
+# This script operates by summing up the sizes of the various
+# object files which constitute a particular configuration of
+# RTEMS. This size information is gathered for placement in the
+# brochure flyers and supplement manuals.
+#
+# NOTE: The concept of the minimum executive size is buried in this script.
+#
+# COPYRIGHT (c) 1989-1997.
+# On-Line Applications Research Corporation (OAR).
+# Copyright assigned to U.S. Government, 1994.
+#
+# The license and distribution terms for this file may be
+# found in the file LICENSE in this distribution or at
+# http://www.OARcorp.com/rtems/license.html.
+#
+# $Id$
+#
+
+target=@target@
+program_prefix=@program_prefix@
+
+gnusize=${program_prefix}size
+
+# check usage
+if [ $# -ne 1 ] ; then
+ echo usage ${0}: bsp
+ exit 1
+fi
+
+cpu=`echo $target | sed -e 's/-.*//'`
+case $cpu in
+ hppa1.1) rtems_cpu=hppa1_1 ;;
+ powerpc) rtems_cpu=ppc ;;
+ *) rtems_cpu=$cpu ;;
+esac
+bsp=$1
+
+echo
+echo Generating sizes for CPU ${cpu} on board ${bsp}
+echo
+
+#
+# KLUDGE to figure out at runtime how to echo a line without a
+# newline.
+#
+count=`echo "\\c" | wc -c`
+if [ ${count} -ne 0 ] ; then
+ EARG="-n"
+ EOL=""
+else
+ EARG=""
+ EOL="\\c"
+fi
+
+if [ ! -d ${bsp} ] ; then
+ echo "${bsp} does not exist ... is the current directory the build directory?"
+ exit 1
+fi
+
+#DIRLIST -- so greps for DIRLIST will find this file
+CPUOBJ=c/src/exec/score/cpu/${rtems_cpu}/o-${bsp}
+COREOBJ=c/src/exec/score/src/o-${bsp}
+RTEMSOBJ=c/src/exec/rtems/src/o-${bsp}
+SAPIOBJ=c/src/exec/sapi/src/o-${bsp}
+OPTOBJ=${bsp}/lib
+
+MANLIST=" \
+${RTEMSOBJ}/clock.o \
+${RTEMSOBJ}/dpmem.o \
+${RTEMSOBJ}/event.o \
+${RTEMSOBJ}/intr.o \
+${RTEMSOBJ}/msg.o \
+${RTEMSOBJ}/part.o \
+${RTEMSOBJ}/ratemon.o \
+${RTEMSOBJ}/region.o \
+${RTEMSOBJ}/sem.o \
+${RTEMSOBJ}/signal.o \
+${RTEMSOBJ}/tasks.o \
+${RTEMSOBJ}/timer.o \
+${SAPIOBJ}/debug.o \
+${SAPIOBJ}/extension.o \
+${SAPIOBJ}/fatal.o \
+${SAPIOBJ}/init.o \
+${SAPIOBJ}/io.o \
+${SAPIOBJ}/rtemsapi.o \
+"
+MPLIST="\
+${RTEMSOBJ}/mp.o ${RTEMSOBJ}/eventmp.o \
+${COREOBJ}/mpci.o ${RTEMSOBJ}/msgmp.o ${COREOBJ}/objectmp.o \
+${RTEMSOBJ}/partmp.o ${RTEMSOBJ}/regionmp.o ${RTEMSOBJ}/semmp.o \
+${RTEMSOBJ}/signalmp.o ${RTEMSOBJ}/taskmp.o ${COREOBJ}/threadmp.o \
+"
+
+OPTMANLIST="\
+${OPTOBJ}/no-dpmem.rel \
+${OPTOBJ}/no-event.rel \
+${OPTOBJ}/no-mp.rel \
+${OPTOBJ}/no-msg.rel \
+${OPTOBJ}/no-part.rel \
+${OPTOBJ}/no-region.rel \
+${OPTOBJ}/no-rtmon.rel \
+${OPTOBJ}/no-sem.rel \
+${OPTOBJ}/no-signal.rel \
+${OPTOBJ}/no-timer.rel \
+"
+REQMANLIST="\
+${SAPIOBJ}/init.o \
+${RTEMSOBJ}/tasks.o \
+${RTEMSOBJ}/intr.o \
+${SAPIOBJ}/fatal.o \
+"
+CORELIST=" \
+${COREOBJ}/apiext.o ${COREOBJ}/chain.o \
+${COREOBJ}/coremsg.o ${COREOBJ}/coremutex.o ${COREOBJ}/coresem.o \
+${COREOBJ}/heap.o ${COREOBJ}/interr.o \
+${COREOBJ}/isr.o \
+${COREOBJ}/object.o \
+${SAPIOBJ}/rtemsapi.o \
+${COREOBJ}/thread.o ${COREOBJ}/threadq.o ${COREOBJ}/tod.o \
+${COREOBJ}/userext.o \
+${COREOBJ}/watchdog.o ${COREOBJ}/wkspace.o \
+"
+
+CPULIST="\
+${CPUOBJ}/rtems-cpu.rel \
+"
+
+# check directories
+for i in ${EXECOBJ} ${CPUOBJ} ${OPTOBJ}
+do
+ if [ ! -d ${i} ] ; then
+ echo "${i} does not exist ... is RTEMS compiled and installed?"
+ exit 1
+ fi
+done
+
+for i in ${MANLIST} ${MPLIST} ${OPTMANLIST} ${REQMANLIST} ${CORELIST} ${CPULIST}
+do
+ if [ ! -r ${i} ] ; then
+ echo ${i} does not exist ... is RTEMS compiled and installed?
+ exit 1
+ fi
+done
+
+# "rips" a line of gsize's output and prints size, data, bss
+parse_size()
+{
+ echo $1 $2 $3
+}
+
+# prepares a list of code, data, bss sizes for a directory
+sizedir()
+{
+ ${gnusize} $* | sed -e '1,1d' |
+ while read line
+ do
+ parse_size ${line}
+ done
+}
+
+# adds a column from the output of sizedir
+addsizes()
+{
+ cut -d' ' -f${1} | sed -e '2,$s/$/ + /' -e '$,$s/$/ p/' | dc
+}
+
+# calculates total size of a directory and prints report line
+size_files()
+{
+ trap "rm -f /tmp/size.$$ ; exit 1" 2 3
+
+ for file in $*
+ do
+ parse_size `${gnusize} $file | sed -e '/text/d'`
+ done >/tmp/size.$$
+
+ code=`cat /tmp/size.$$ | addsizes 1`
+ data=`cat /tmp/size.$$ | addsizes 2`
+ bss=` cat /tmp/size.$$ | addsizes 3`
+ echo "${code} ${data} ${bss}"
+ rm /tmp/size.$$
+}
+
+echo
+echo " RTEMS SIZE REPORT"
+echo
+echo " CODE DATA BSS"
+echo " =================="
+echo ${EARG} "MANAGERS: " ${EOL} ; size_files $MANLIST $MPLIST
+echo ${EARG} "CORE : " ${EOL} ; size_files $CORELIST $CPULIST
+echo ${EARG} "CPU : " ${EOL} ; size_files $CPULIST
+echo ${EARG} "OVERALL : " ${EOL} ; size_files $CPULIST $CORELIST $MANLIST \
+ $MPLIST
+echo ${EARG} "MINIMUM : " ${EOL} ; size_files $CPULIST $CORELIST \
+ $OPTMANLIST $REQMANLIST
+echo
+
+for file in $MANLIST
+do
+ base=`basename ${file}`
+ echo ${EARG} ""${base} : " ${EOL} " ; size_files ${file}
+done
+
+echo ${EARG} "MP : " ${EOL} ; size_files $MPLIST
+
+echo
+for file in $OPTMANLIST
+do
+ base=`basename ${file}`
+ echo ${EARG} "${base} : " ${EOL} ; size_files ${file}
+done
+
+echo
+exit 0