From 2ab1b3ac52768d1738e2273a3defa4b9911c9570 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 22 Dec 1997 17:28:32 +0000 Subject: Now generating this file with autoconf to avoid having to embed so much target specific information in the script. --- tools/cpu/generic/size_rtems.in | 221 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 tools/cpu/generic/size_rtems.in (limited to 'tools/cpu') 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 -- cgit v1.2.3