From d751cecbb1ca1b7ac0a7bc8492e0e61e6c5fc0c7 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 17 May 2011 20:39:40 +0000 Subject: * 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. --- tools/cpu/generic/size_rtems.in | 284 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 284 insertions(+) create mode 100644 tools/cpu/generic/size_rtems.in (limited to 'tools/cpu/generic/size_rtems.in') 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 -- cgit v1.2.3