summaryrefslogblamecommitdiffstats
path: root/rtems-coverage/run_coverage
blob: 5f28e6924f71ff34dfb097ba4d9af68ed72b0a56 (plain) (tree)
1
2
3
4

            
                                           
 
















                                                           
                                            

                                                                  











































                                                               

          

                                                                                  
                                  
                              





                                         
                                          
                                          
                                                   
                                             







                                                                         

                      
 
                     


                  

                                                         




                                       







                                         












                             
                                                      
                                                                           



                                                         
















                                               
         

                
                                                
        






















                                                            


                                               




                                                                               












                                     
#! /bin/bash
#
#  Script to help running coverage profiles
#

vfile=`dirname $0`/VERSIONS-COVERAGE
if [ ! -r ${vfile} ] ; then
  echo VERSIONS-COVERAGE file not found
  exit 1
fi

source ${vfile}

if [ ! -d ${BASEDIR} ] ; then
  echo Have you set the BASEDIR in VERSIONS correctly?
  exit 1
fi

progname=${0##*/}        # fast basename hack for ksh, bash

USAGE=\
"usage: $progname [ -opts ] cmd [ more cmds]
        -t        -- publish the results to ftp site (default=yes)
        -f        -- save the results locally (default=yes)
	-v	   -- verbose

where cmds are:
  update          - to update the RTEMS and Test Support source
  BSP_TESTSET     - to perform TESTSET on BSP
                    TESTSET may be baseline, O2, or Os
"

#   log an error to stderr
prerr()
{
    echo "$*" >&2
}

fatal() {
    prerr "$USAGE"
    [ "$1" ] && (prerr ; prerr $*);
    exit 1
}

warn() {
    [ "$1" ] && prerr $*
}

check_status()
{
  if [ $1 -ne 0 ] ; then
    shift 
    echo "FAILED: " "$*" >&2
    exit 1
  fi
}

toggle()
{
  case $1 in
    no)  echo "yes" ;;
    yes) echo "no" ;;
    *)   fatal "Unknown value to toggle ($1)" ;;
  esac
}

do_one()
{
  bsp=${1}
  shift
  echo "time ${COVBASE}/do_coverage -A -v -u -m ${SAVE} ${PUBLISH} ${*} -B ${bsp}"
  time ${COVBASE}/do_coverage -A -v -u -m ${SAVE} ${PUBLISH} ${*} -B ${bsp}
  check_status $? "FAILED ${bsp}" 
  rm -rf b-${bsp} ${bsp}-tests
}

validate_bsp()
{
  case ${1} in
    edb7312|gumstix|smdk2410)    ;; # ARM
    pc386|qemu)                  ;; # i386
    lm32_evr)                    ;; # lm32
    uC5282)                      ;; # m68k/Coldfire
    qemuppc)                     ;; # PowerPC
    erc32|leon2|leon3)           ;; # SPARC
    *)
      echo "ERROR - does BSP (${bsp}) really exist and support coverage?"
      exit 1
  esac
}

verbose="no"
do_publish="yes"
do_save_tarballs="yes"

while getopts ftv OPT
do

    case "$OPT" in
      f) do_publish=`toggle ${do_publish}` ;;
      t) do_save_tarballs=`toggle ${do_save_tarballs}` ;;
      v) verbose=`toggle ${verbose}` ;;
      *) fatal;;
    esac
done

# Set the publish and save options
if [ ${do_publish} = "yes" ] ; then
  PUBLISH="-f"
fi
if [ ${do_save_tarballs} = "yes" ] ; then
  SAVE="-t"
fi

shiftcount=`expr $OPTIND - 1`
shift $shiftcount

args=$*

if [ $# -eq 0 ] ; then
  echo "No actions requested"
  exit 0
fi

for cmd in $*
do
  case ${cmd} in
    update) ;;                       # general command
    *_O[sS2][pP][dD]|*_baseline)            # one BSP at specific -Ox level
      case ${cmd} in
        lm32_evr*) bsp=lm32_evr ;;
        *)         bsp=`echo $cmd | sed -e 's/_.*$//'` ;;
      esac
      validate_bsp ${bsp}
      ;;
    *)
      echo "Unknown command (${cmd})"
      exit 1
      ;;
  esac
done

START=`date`

cd ${BASEDIR}

RESULTSDIR=${BASEDIR}/covrun-results
test -d ${RESULTSDIR} || mkdir -p ${RESULTSDIR}
for cmd in $*
do
echo $cmd
  case ${cmd} in
    update) 
      time ${COVBASE}/do_coverage -u -m -B erc32
      ;;
    *_O[sS2][pP][dD])
      bsp=`echo $cmd | sed -e 's/_O.*$//'`
      args=`echo $cmd | sed -e 's/^.*_//'`
      Olevel=`echo $cmd | sed -e 's/.*_O\(.\).*$/\1/'`
      posix=`echo $cmd | sed -e 's/.*_O.\(.\).*$/\1/'`
      devel=`echo $cmd | sed -e 's/.*_O..\(.\)$/\1/'`

      echo $bsp $args $Olevel $posix $devel
      optArg="-S"
      if [ ${Olevel} = "2" ] ; then
        optArg=""
      fi
      posixArg=""
      if [ ${posix} = "p" ] ; then
        posixArg="-P"
      fi
      develArg=""
      if [ ${devel} = "d" ] ; then
        develArg="-D"
      fi

      # echo do_one ${bsp} ${optArg} ${posixArg} ${develArg}
      do_one ${bsp} ${optArg} ${posixArg} ${develArg}
      ;;
    *_baseline) 
      bsp=`echo $cmd | sed -e 's/_baseline$//'`
      # Each run does both developmental and core.  So this is 8 configurations
      do_one ${bsp} -S          # -Os / POSIX enabled
      do_one ${bsp} -S -P       # -Os / POSIX disabled
      do_one ${bsp}             # -O2 / POSIX enabled
      do_one ${bsp}    -P       # -O2 / POSIX disabled
      ;;
    *)
      echo "Unknown command (${cmd})"
      exit 1
      ;;
  esac
done

STOP=`date`
echo "STARTED AT: " ${START}
echo "STOPPED AT: " ${STOP}

exit 0