summaryrefslogtreecommitdiffstats
path: root/tools/cpu/generic/size_rtems.in
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2011-05-17 20:39:40 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2011-05-17 20:39:40 +0000
commitd751cecbb1ca1b7ac0a7bc8492e0e61e6c5fc0c7 (patch)
tree84a74c59b9f7f096e0fae3dd351e5274bf836bb5 /tools/cpu/generic/size_rtems.in
parent2011-05-17 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-d751cecbb1ca1b7ac0a7bc8492e0e61e6c5fc0c7.tar.bz2
* tools/build/.cvsignore, tools/build/ChangeLog,
tools/build/Makefile.am, tools/build/README, tools/build/binpatch.c, tools/build/cklength.c, tools/build/config.h.in, tools/build/configure.ac, tools/build/cvsignore-add.sh, tools/build/doxy-filter, tools/build/eolstrip.c, tools/build/install-if-change.in, tools/build/multigen, tools/build/packhex.c, tools/build/rtems-bin2c.c, tools/build/search-id.sh, tools/build/unhex.c, tools/cpu/.cvsignore, tools/cpu/ChangeLog, tools/cpu/Makefile.am, tools/cpu/configure.ac, tools/cpu/generic/.cvsignore, tools/cpu/generic/ChangeLog, tools/cpu/generic/Makefile.am, tools/cpu/generic/configure.ac, tools/cpu/generic/size_rtems.in, tools/cpu/nios2/.cvsignore, tools/cpu/nios2/ChangeLog, tools/cpu/nios2/Makefile.am, tools/cpu/nios2/README, tools/cpu/nios2/bridges.c, tools/cpu/nios2/bridges.h, tools/cpu/nios2/clocks.c, tools/cpu/nios2/clocks.h, tools/cpu/nios2/configure.ac, tools/cpu/nios2/devices.c, tools/cpu/nios2/devices.h, tools/cpu/nios2/linkcmds.c, tools/cpu/nios2/linkcmds.h, tools/cpu/nios2/memory.c, tools/cpu/nios2/memory.h, tools/cpu/nios2/nios2gen.c, tools/cpu/nios2/output.c, tools/cpu/nios2/output.h, tools/cpu/nios2/ptf.c, tools/cpu/nios2/ptf.h, tools/cpu/nios2/sample.ptf, tools/cpu/sh/.cvsignore, tools/cpu/sh/AUTHORS, tools/cpu/sh/COPYING, tools/cpu/sh/ChangeLog, tools/cpu/sh/Makefile.am, tools/cpu/sh/TODO, tools/cpu/sh/configure.ac, tools/cpu/sh/sci.c, tools/cpu/sh/sci.h, tools/cpu/sh/shgen.c: New files.
Diffstat (limited to '')
-rw-r--r--tools/cpu/generic/size_rtems.in284
1 files changed, 284 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..93fa1d59c6
--- /dev/null
+++ b/tools/cpu/generic/size_rtems.in
@@ -0,0 +1,284 @@
+#!@KSH@ -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-1999.
+# On-Line Applications Research Corporation (OAR).
+#
+# The license and distribution terms for this file may be
+# found in the file LICENSE in this distribution or at
+# http://www.rtems.com/license/LICENSE.
+#
+# $Id$
+#
+
+target=@target@
+program_prefix=@program_prefix@
+
+gnusize=${program_prefix}size
+
+# check usage
+if [ $# -ne 2 ] ; then
+ echo usage ${0}: bsp object_directory
+ exit 1
+fi
+
+bsp=$1
+board=$1
+ARCH=$2
+
+cpu=`echo $target | sed -e 's/-.*//'`
+
+case $target in
+ sparc-sun-solaris*)
+ rtems_cpu=unix
+ bsp=solaris2
+ echo Not supported on unix port.
+ exit 0
+ ;;
+ i[34567]86-pc-linux-gnu)
+ echo linux
+ rtems_cpu=unix
+ bsp=linux1
+ echo Not supported on unix port.
+ exit 0
+ ;;
+ i[34567]86-unknown-freebsd2.[12]*)
+ echo freebsd
+ rtems_cpu=unix
+ bsp=freebsd2
+ echo Not supported on unix port.
+ exit 0
+ ;;
+ *-rtems*)
+ cpu=`echo $target | sed -e 's/-.*//'`
+ rtems_cpu=$cpu
+ ;;
+ *)
+ echo unknown target $target
+ exit 1
+ ;;
+esac
+
+case $ARCH in
+ *debug*) VARIANT=debug ;;
+ *profile*) VARIANT=profile ;;
+ *) VARIANT=optimized;;
+esac
+
+echo
+echo Size Information for the Following Configuration:
+echo CPU: ${cpu}
+echo BSP: ${board}
+echo VARIANT: ${VARIANT}
+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 ../${board} ] ; then
+ echo "${board} does not exist ... is the current directory the build directory?"
+ exit 1
+fi
+
+#DIRLIST -- so greps for DIRLIST will find this file
+CPUOBJ=exec/score/cpu/${rtems_cpu}/wrap/${ARCH}
+COREOBJ=exec/score/src/${ARCH}
+RTEMSOBJ=exec/rtems/src/${ARCH}
+SAPIOBJ=exec/sapi/src/${ARCH}
+OPTOBJ=exec/rtems/optman/${ARCH}
+
+# XXX These have been split up
+MANLIST=" \
+${RTEMSOBJ}/clockget.o \
+${RTEMSOBJ}/clockset.o \
+${RTEMSOBJ}/clocktick.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}/exinit.o \
+${SAPIOBJ}/io.o \
+${SAPIOBJ}/rtemsapi.o \
+"
+
+if [ -r ${RTEMSOBJ}/mp.o ] ; then
+ 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 \
+ "
+
+ MPOBJLIST=${OPTOBJ}/no-mp.rel
+fi
+
+OPTMANLIST="\
+${OPTOBJ}/no-dpmem.rel \
+${OPTOBJ}/no-event.rel \
+${MPOBJLIST} \
+${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}/exinit.o \
+${RTEMSOBJ}/tasks.o \
+${RTEMSOBJ}/intr.o \
+${SAPIOBJ}/fatal.o \
+"
+# XXX parts of these have been split up
+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 the numbers passed on the command line
+addit()
+{
+ sumx=0
+ for x in $*
+ do
+ sumx=`expr $sumx + $x`
+ done
+ echo $sumx
+}
+
+# adds a column from the output of sizedir
+addsizes()
+{
+ # dc version is not portable enough -- It can be left out during
+ # installing linux and may not be available on non-UNIX hosts.
+ #cut -d' ' -f${2} ${1} | sed -e '2,$s/$/ + /' -e '$,$s/$/ p/' | dc
+
+ # This may not be as fast but it is probably more portable.
+ addit `cut -d' ' -f${2} ${1}`
+}
+
+# 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