Index: c/src/exec/score/tools/generic/size_rtems.in
===================================================================
--- c/src/exec/score/tools/generic/size_rtems.in	(revision 2ab1b3ac52768d1738e2273a3defa4b9911c9570)
+++ c/src/exec/score/tools/generic/size_rtems.in	(revision 2ab1b3ac52768d1738e2273a3defa4b9911c9570)
@@ -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
