<html><body><div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:10pt"><div><span>Hello Gedare, Joel</span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><span>Thanks for committing it. I can see it here </span><a href="http://git.rtems.org/rtems-testing/commit/?id=3486c86b95341b50876a781f5c178229c52bf26b" style="font-size: 10pt;">http://git.rtems.org/rtems-testing/commit/?id=3486c86b95341b50876a781f5c178229c52bf26b</a></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family:
arial, helvetica, sans-serif; background-color: transparent; font-style: normal;">I hope it's visible to everyone :-)</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, clean, sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, clean, sans-serif; background-color: transparent; font-style: normal;">Regards</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, clean, sans-serif; background-color: transparent; font-style: normal;"><span style="background-color:transparent;line-height:1.22;">Vipul Nayyar </span></div><div style="color: rgb(0, 0, 0); font-size: 12.727272033691406px; font-family: arial, helvetica, clean, sans-serif; background-color: transparent; font-style: normal;"><br></div><div><br></div> <div style="font-family: arial, helvetica, sans-serif; font-size: 10pt;"> <div
style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"> <div dir="ltr"> <hr size="1"> <font size="2" face="Arial"> <b><span style="font-weight:bold;">From:</span></b> Gedare Bloom <gedare@rtems.org><br> <b><span style="font-weight: bold;">To:</span></b> Joel Sherrill <joel.sherrill@oarcorp.com> <br><b><span style="font-weight: bold;">Cc:</span></b> Vipul Nayyar <nayyar_vipul@yahoo.com>; "rtems-devel@rtems.org" <rtems-devel@rtems.org> <br> <b><span style="font-weight: bold;">Sent:</span></b> Tuesday, 17 September 2013 11:39 PM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [PATCH] Bash script to review BSP File Organization<br> </font> </div> <div class="y_msg_container"><br>Hey Joel and Vipul,<br>I applied and committed it. Please verify.<br>-Gedare<br><br>On Tue, Sep 17, 2013 at 1:51 PM, Joel Sherrill<br><<a ymailto="mailto:joel.sherrill@oarcorp.com"
href="mailto:joel.sherrill@oarcorp.com">joel.sherrill@oarcorp.com</a>> wrote:<br>> I don't know what is wrong but it doesn't apply. :(<br>><br>> patching file merge-helpers/check_submission<br>> patch: **** malformed patch at line 110: '0' to give only important stuff.<br>><br>><br>> On 9/17/2013 12:24 PM, Vipul Nayyar wrote:<br>>> ---<br>>> merge-helpers/check_submission | 776 +++++++++++++++++++++++++++++++----------<br>>> 1 file changed, 590 insertions(+), 186 deletions(-)<br>>><br>>> diff --git a/merge-helpers/check_submission b/merge-helpers/check_submission<br>>> index e838121..90908f1 100755<br>>> --- a/merge-helpers/check_submission<br>>> +++ b/merge-helpers/check_submission<br>>> @@ -1,76 +1,247 @@<br>>> -#<br>>> -# Script to test for various things we want in a BSP when it is<br>>> -# submitted.<br>>> -#<br>>>
-# Test for:<br>>> -# - XXX<br>>> -#<br>>> +#! /bin/bash<br>>><br>>> -usage()<br>>> -{<br>>> -cat <<EOF<br>>> -check_submission [options] directory<br>>> - -b - check assuming directory is a BSP<br>>> - -t - check assuming directory is a test<br>>> - -v - verbose<br>>> -EOF<br>>> -}<br>>> +# Bash Script to find discrepancies in BSP file organization.<br>>> +# Author : Vipul Nayyar <<a ymailto="mailto:nayyar_vipul@yahoo.com" href="mailto:nayyar_vipul@yahoo.com">nayyar_vipul@yahoo.com</a>><br>>><br>>> -fatal()<br>>> -{<br>>> - usage<br>>> - exit 1<br>>> +<br>>> +filename="0"<br>>> +# Passing --verbose turns verbose to 1 & gives the whole story, otherwise '0' to give only important stuff.<br>>> +verbose="0"<br>>> +faults="0"<br>>> +#
Passing --warnings turns warnings to 1 & gives all the critical & non-critical bsp file org. problems.<br>>> +warnings="0"<br>>> +flag="0"<br>>> +<br>>> +calling_path=`pwd`<br>>> +path=""<br>>> +<br>>> +important="1"<br>>> +rtems_internal=""<br>>> +internal_done="0"<br>>> +do_test="0"<br>>> +format="1"<br>>> +<br>>> +<br>>> +# Finds all rtems internal functions ( name starting with '_' & type specifier)<br>>> +# that are defined in cpukit & libcpu<br>>> +function find_rtems_internal(){<br>>> + if [[ $internal_done == "1" ]]; then<br>>> + return<br>>> + fi<br>>> + echo "Compiling list of RTEMS Internal functions ..."<br>>> + internal_files=""<br>>> +<br>>> + for k in `find -name *.c`<br>>> + do<br>>> + for j in `grep -oE
"[a-z|A-Z|0-9|_]+[\ |^][_]+[a-z|A-Z|0-9|_]*[\ ]*\(" $k`<br>>> + do<br>>> + if [[ $j == "_"* ]]; then<br>>> + j=${j%%\(}<br>>> + internal_files="$j $internal_files"<br>>> + fi<br>>> +<br>>> + done<br>>> + done<br>>> +<br>>> + for k in `find ../c/src/lib/libcpu/ -name *.c`<br>>> + do<br>>> + for j in `grep -oE "[a-z|A-Z|0-9|_]+[\ |^][_]+[a-z|A-Z|0-9|_]*[\ ]*\(" $k`<br>>> + do<br>>> + if [[ $j == "_"* ]]; then<br>>> + j=${j%%\(}<br>>> + internal_files="$j $internal_files"<br>>> + fi<br>>> +<br>>> + done<br>>> + done<br>>> +<br>>> + for k in
$internal_files<br>>> + do<br>>> + if echo $rtems_internal |grep -q $k ; then<br>>> + echo > /dev/null<br>>> + else<br>>> + rtems_internal="$k $rtems_internal"<br>>> + fi<br>>> + done<br>>> +<br>>> + internal_done="1"<br>>> }<br>>><br>>> -toggle()<br>>> -{<br>>> - case $1 in<br>>> - no) echo "yes" ;;<br>>> - yes) echo "no" ;;<br>>> - *) fatal "Unknown value to toggle ($1)" ;;<br>>> - esac<br>>> +# Finds all internal functions common in bsp and (cpukit + libcpu)<br>>> +function find_bsp_internal(){<br>>> + bsp_methods=""<br>>> + common_internal_methods=""<br>>> +<br>>> +# Searching for internal functions starting with '_' called(i.e
ending with a ';')<br>>> + for i in `find -name *.c`<br>>> + do<br>>> + file_contents=`tr -d '\n' < $i | grep -oE "[ |^][_]+[a-z|A-Z|0-9|_]*[ ]*[\n]*\([^;]*\)[ ]*;" | tr -d '\n' `<br>>> +<br>>> + for j in `echo "$file_contents" | grep -oE "[_]+[a-z|A-Z|0-9|_]*[ ]*\("`<br>>> + do<br>>> + if `echo "$bsp_methods" |grep -q "${j%%\(}"` ; then<br>>> + echo > /dev/null<br>>> + else<br>>> + bsp_methods="${j%%\(} $bsp_methods"<br>>> + fi<br>>> + done<br>>> + done<br>>> +<br>>> +# Identifying common fucntions between $rtems_interval & $bsp_methods<br>>> + for i in $rtems_internal<br>>> + do<br>>> + if [[ $i == "__asm__" || $i ==
"__attribute__" || $i == "__volatile__" || $i == "__"* ]];then<br>>> + continue<br>>> + fi<br>>> + for j in $bsp_methods<br>>> + do<br>>> + if [[ $i == $j ]]; then<br>>> + common_internal_methods="$j $common_internal_methods"<br>>> + fi<br>>> + done<br>>> + done<br>>> +<br>>> + if [[ $common_internal_methods != "" ]]; then<br>>> + echo -e "$bsp : RTEMS Internal functions used : \c"<br>>> + for i in $common_internal_methods<br>>> + do<br>>> + echo -e "${i}() \c"<br>>> + done<br>>> + flag="1"<br>>> + fi<br>>> }<br>>><br>>> -verbose="no"<br>>> -do_bsp="no"<br>>>
-do_test="no"<br>>> -<br>>> -while getopts vbt OPT<br>>> -do<br>>> - case "$OPT" in<br>>> - b) do_bsp="yes" ; do_test="no" ;;<br>>> - t) do_bsp="no" ; do_test="yes" ;;<br>>> - v) verbose=`toggle ${verbose}` ;;<br>>> - *) fatal ;;<br>>> - esac<br>>> -done<br>>><br>>> -########################### Grab Directory ###########################<br>>> +# Passing 1 initially to any check function states that the file/method/header<br>>> +# being checked is of critical nature<br>>> +function check_file(){<br>>> + filename="0"<br>>> + if [[ $1 == 1 ]]; then<br>>> + important="1"<br>>> + shift<br>>> + else<br>>> + important="0"<br>>>
+ fi<br>>><br>>> -shiftcount=`expr $OPTIND - 1`<br>>> -shift $shiftcount<br>>> +#Grabbing the path of file being evaluated from Makefile.am<br>>> + if grep -wqE "[ ]*[^\ ]*/($1)" Makefile.am ; then<br>>> + file_path=`grep -woE "[ ]*[^\ ]*/($1)" Makefile.am | head --lines=1`<br>>> + cd `dirname $file_path`<br>>> + filename=$1<br>>> + file_path=`pwd`<br>>> +<br>>> + cd - > /dev/null<br>>> + shift<br>>> +<br>>> +# Checking if file lies in correct directory path<br>>> + for i in $*<br>>> + do<br>>> + if [[ -d $i ]]; then<br>>> + cd $i<br>>> + else<br>>> + continue<br>>> + fi<br>>> +<br>>>
+<br>>> + if [[ "$file_path" == `pwd` ]]; then<br>>> + filename="$file_path/$filename"<br>>> + cd - >/dev/null<br>>> + return<br>>> + fi<br>>> + cd - > /dev/null<br>>> + done<br>>> + echo "$bsp : $filename not present in correct path"<br>>> + filename="$file_path/$filename"<br>>> + return<br>>> + else<br>>> + if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]]; then<br>>> + flag="1"<br>>> + echo "$bsp : $1 not compiled"<br>>> + fi<br>>> + fi<br>>><br>>> -basedir=${1}<br>>> + filename="0"<br>>> + faults="1"<br>>> +
return<br>>> +}<br>>><br>>> -if [ "${basedir}X" = "X" ] ; then<br>>> - basedir=.<br>>> -fi<br>>> +# Checking presence of functions in specific files<br>>> +function check_methods(){<br>>> + if [[ $1 == 1 ]]; then<br>>> + important="1"<br>>> + shift<br>>> + else<br>>> + important="0"<br>>> + fi<br>>><br>>> -if [ ${do_bsp} = "no" -a ${do_test} = "no" ] ; then<br>>> - fatal must select test or bsp check mode<br>>> -fi<br>>> + for i in $*<br>>> + do<br>>><br>>> -if [ ! -d ${basedir} ] ; then<br>>> - fatal ${basedir} is not a directory<br>>> -fi<br>>> +# When correct file for this function does not exist<br>>> + if [[ $filename == "0" ]];then<br>>> + if grep -rqlE "[a-z|A-Z|0-9|_]+[
]*$i[ ]*\(" * ;then<br>>> + if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]];then<br>>> + echo $bsp : ${i%(*}"()" present in file `grep -rlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" *`<br>>> + fi<br>>> + fi<br>>> + else<br>>> +<br>>> +# When correct file for this function exists<br>>> + if grep -Eq "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" $filename ; then<br>>> + if [[ $verbose -eq "1" ]] ;then<br>>> + echo "$bsp : `basename $filename` : ${i%(*}() present in file"<br>>> + fi<br>>> + else<br>>> + if grep -rqlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" * ;then<br>>> + if [[
$warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]];then<br>>> + echo $bsp : ${i%(*}"()" present in file `grep -rlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" *`<br>>> + fi<br>>> + else<br>>> + if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]]; then<br>>> + echo "$bsp : `basename $filename` : ${i%(*}() function does not exist in $filename "<br>>> + flag="1"<br>>> + fi<br>>> + faults="1"<br>>> + fi<br>>> + fi<br>>> +<br>>> + fi<br>>> + done<br>>> +}<br>>><br>>> +# Checking presence of
headers installed by bsp<br>>> +function check_header(){<br>>> + if [[ $1 == 1 ]]; then<br>>> + important="1"<br>>> + shift<br>>> + else<br>>> + important="0"<br>>> + fi<br>>><br>>> -cd ${basedir}<br>>> -if [ $? -ne 0 ] ; then<br>>> - echo Unable to cd to ${basedir}<br>>> - exit 1<br>>> -fi<br>>> + for i in $*<br>>> + do<br>>> + if grep -wq "$i" Makefile.am ;then<br>>> + if [[ ! -f "$i" && ! -f "${i}.in" ]] ;then<br>>> + continue<br>>> + fi<br>>> + if [[ $verbose -eq "1" ]] ;then<br>>> + cd `dirname $i`<br>>> + echo "$bsp : `basename $i` installed from directory"
${PWD##*/c/src/lib/}<br>>> + cd - > /dev/null<br>>> + fi<br>>> + return<br>>> + fi<br>>> + done<br>>> +<br>>> + if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]]; then<br>>> + echo "${bsp%%[\ ]*} : `basename $1` not installed "<br>>> + flag="1"<br>>> + fi<br>>> + filename="0"<br>>> + faults="1"<br>>> + return<br>>><br>>> +}<br>>><br>>> test_its_there()<br>>> {<br>>> @@ -79,7 +250,7 @@ test_its_there()<br>>> fi<br>>> grep ${2} ${1} >/dev/null<br>>> if [ $? -ne 0 ] ; then<br>>> - echo "${2} is NOT in ${basedir}/${1}"<br>>> + echo "$bsp : ${2} is NOT in
${1##./}"<br>>> fi<br>>><br>>> }<br>>> @@ -91,7 +262,7 @@ test_its_there_all_case()<br>>> fi<br>>> grep -i ${2} ${1} >/dev/null<br>>> if [ $? -ne 0 ] ; then<br>>> - echo "${2} is NOT in ${basedir}/${1} - case independent check"<br>>> + echo "$bsp : ${2} is NOT in ${1##./} - case independent check"<br>>> fi<br>>><br>>> }<br>>> @@ -105,7 +276,7 @@ test_its_NOT_there_all_case()<br>>> shift<br>>> grep -i "${*}" ${FILE} >/dev/null<br>>> if [ $? -eq 0 ] ; then<br>>> - echo "(${*}) SHOULD NOT BE IN ${basedir}/${FILE} - case independent check"<br>>> + echo "$bsp : (${*}) SHOULD NOT BE IN ${FILE##./} - case independent check"<br>>> fi<br>>>
}<br>>><br>>> @@ -118,14 +289,14 @@ test_its_NOT_there()<br>>> shift<br>>> grep "${*}" ${FILE} >/dev/null<br>>> if [ $? -eq 0 ] ; then<br>>> - echo "(${*}) SHOULD NOT BE IN ${basedir}/${FILE}"<br>>> + echo "$bsp : (${*}) SHOULD NOT BE IN ${FILE##./}"<br>>> fi<br>>> }<br>>><br>>> find_source()<br>>> {<br>>> findArgs=<br>>> - while getopts "cCm" OPT<br>>> + while getopts "cCdm" OPT<br>>> do<br>>> case "$OPT" in<br>>> c) findArgs="${findArgs} -o -name configure.ac" ;;<br>>> @@ -144,145 +315,378 @@ find_source()<br>>> find . -name "*.[chS]" ${findArgs}<br>>> }<br>>><br>>> -# Verify no lines longer than 80 columns<br>>> -echo
"=== Checking for lines greater than 79 columns"<br>>> -find_source -m -c -C | while read f<br>>> -do<br>>> - grep ".\{80,\}" ${f} >/dev/null<br>>> - if [ $? -eq 0 ] ; then<br>>> - echo "*** ${basedir}/${f} has the following lines that are too long"<br>>> - grep -n '.\{80,\}' ${f}<br>>> - fi<br>>> -done<br>>> -<br>>> -# really need to make the copyright strings consistent in BSPs<br>>> -echo "=== Checking for copyright notices"<br>>> -find_source | while read f<br>>> -do<br>>> - test_its_there_all_case ${f} COPYRIGHT<br>>> -done<br>>> -<br>>> -# We want CVS Id strings everywhere possible<br>>> -echo "=== Checking for CVS Id strings"<br>>> -find_source -d | while read f<br>>> -do<br>>> - test_its_NOT_there ${f} "\$Id"<br>>> -done<br>>> -<br>>> -# We
do not want the reformatted license notice<br>>> -echo "=== Checking for reformatted RTEMS license notices"<br>>> -find_source -m -c -C | while read f<br>>> -do<br>>> - test_its_NOT_there ${f} "this file may be found in the file"<br>>> -done<br>>> -<br>>> -# We do not want spaces at the end of lines<br>>> -echo "=== Checking for spaces at the end of lines"<br>>> -find_source -m -c -C | while read f<br>>> -do<br>>> - egrep " +$" $f >/dev/null<br>>> - test $? -eq 0 && echo "$f has spaces at the end of one or more lines."<br>>> -done<br>>> -<br>>> -# We do not want tabs in source files<br>>> -echo "=== Checking for tabs in source files"<br>>> -find_source | while read f<br>>> -do<br>>> - grep -P '\t' $f >/dev/null<br>>> - if [ $? -eq 0 ]; then<br>>> - echo "*** ${basedir}/${f}
has the following lines with tabs"<br>>> - grep -P '\t' $f<br>>> - fi<br>>> -done<br>>> -<br>>> -# We do not want GPL code<br>>> -echo "=== Checking for hints of GPL code"<br>>> -find_source -m -c -C | while read f<br>>> -do<br>>> - test_its_NOT_there ${f} "Free Software Foundation"<br>>> - test_its_NOT_there ${f} "program is free software"<br>>> - test_its_NOT_there ${f} "General Public License"<br>>> -done<br>>> -<br>>> -# We do not want hints that there are things left to do<br>>> -echo "=== Checking for TODO hints"<br>>> -find_source -m -c -C | while read f<br>>> -do<br>>> - test_its_NOT_there ${f} XXX<br>>> - test_its_NOT_there ${f} TODO<br>>> - test_its_NOT_there ${f} TBD<br>>> -done<br>>> +function check_format(){<br>>><br>>> -#<br>>> -# BSP
specific checks<br>>> -#<br>>> -if [ ${do_bsp} = "yes" ] ; then<br>>> - # We do not want stdio in a BSP<br>>> - echo "=== Checking for stdio"<br>>> + # Verify no lines longer than 80 columns<br>>> + echo "=== Checking for lines greater than 80 columns"<br>>> + find_source -m -c -C | while read f<br>>> + do<br>>> + grep ".\{81,\}" ${f} >/dev/null<br>>> + if [ $? -eq 0 ] ; then<br>>> + echo -e "\n$bsp : ${f#./} has more than 80 character lines"<br>>> + for i in `grep -n '.\{80,\}' ${f} | cut -f1 -d:`<br>>> + do<br>>> + echo -e "$i \c"<br>>> + done<br>>> + fi<br>>> + done<br>>> +<br>>> + # really need to make the copyright strings consistent in
BSPs<br>>> + echo -e "\n=== Checking for copyright notices"<br>>> + find_source | while read f<br>>> + do<br>>> + test_its_there_all_case ${f} COPYRIGHT<br>>> + done<br>>> +<br>>> + # We want CVS Id strings everywhere possible<br>>> + echo "=== Checking for CVS Id strings"<br>>> + find_source -d | while read f<br>>> + do<br>>> + test_its_NOT_there ${f} "\$Id"<br>>> + done<br>>> +<br>>> + # We do not want the reformatted license notice<br>>> + echo "=== Checking for reformatted RTEMS license notices"<br>>> + find_source -m -c -C | while read f<br>>> + do<br>>> + test_its_NOT_there ${f} "this file may be found in the file"<br>>> + done<br>>> +<br>>> + # We do not want spaces at the end of
lines<br>>> + echo "=== Checking for spaces at the end of lines"<br>>> + find_source -m -c -C | while read f<br>>> + do<br>>> + egrep " +$" $f >/dev/null<br>>> + test $? -eq 0 && echo -e "${f##./} \c"<br>>> + done<br>>> +<br>>> + # We do not want tabs in source files<br>>> + echo -e "\n=== Checking for tabs in source files"<br>>> + find_source | while read f<br>>> + do<br>>> + grep -P '\t' $f >/dev/null<br>>> + test $? -eq 0 && echo -e "${f##./} \c"<br>>> + done<br>>> +<br>>> + # We do not want GPL code<br>>> + echo -e "\n=== Checking for hints of GPL code"<br>>> find_source -m -c -C | while read f<br>>> do<br>>> - test_its_NOT_there ${f} printf<br>>>
- test_its_NOT_there ${f} "puts("<br>>> + test_its_NOT_there ${f} "Free Software Foundation"<br>>> + test_its_NOT_there ${f} "program is free software"<br>>> + test_its_NOT_there ${f} "General Public License"<br>>> done<br>>><br>>> - # BSPs should include RTEMS_BSP_CLEANUP_OPTIONS and maybe<br>>> - # RTEMS_BSP_BOOTCARD_OPTIONS<br>>> - if [ -r configure.ac ] ; then<br>>> - echo "=== Checking for RTEMS_BSP_BOOTCARD_OPTIONS in BSP configure.ac"<br>>> - test_its_not_there configure.ac RTEMS_BSP_BOOTCARD_OPTIONS<br>>> - echo "=== Checking for RTEMS_BSP_CLEANUP_OPTIONS in BSP configure.ac"<br>>> - test_its_there configure.ac RTEMS_BSP_CLEANUP_OPTIONS<br>>> + # We do not want hints that there are things left to do<br>>> + echo
"=== Checking for TODO hints"<br>>> + find_source -m -c -C | while read f<br>>> + do<br>>> + test_its_NOT_there ${f} XXX<br>>> + test_its_NOT_there ${f} TODO<br>>> + test_its_NOT_there ${f} TBD<br>>> + done<br>>> +}<br>>> +<br>>> +# Reviewing for a BSP Starts<br>>> +function main(){<br>>> +<br>>> + if [[ $format -eq "1" ]]; then<br>>> + check_format<br>>> fi<br>>><br>>> - # If not using -O2, then we really want to know<br>>> - # BSPs should normally use -O2<br>>> - echo "=== Checking for not using -O2"<br>>> - grep -H "\-O[013456789]" make/custom/*.cfg<br>>> + # We do not want stdio in a BSP<br>>> + echo "=== Checking for stdio"<br>>> + find_source -m -c -C | while read
f<br>>> + do<br>>> + test_its_NOT_there ${f} printf<br>>> + test_its_NOT_there ${f} "puts("<br>>> + done<br>>> +<br>>> + # BSPs should include RTEMS_BSP_CLEANUP_OPTIONS and maybe<br>>> + # RTEMS_BSP_BOOTCARD_OPTIONS<br>>> + if [ -r configure.ac ] ; then<br>>> + echo "=== Checking for RTEMS_BSP_BOOTCARD_OPTIONS in BSP configure.ac"<br>>> + test_its_NOT_there configure.ac RTEMS_BSP_BOOTCARD_OPTIONS<br>>> + echo "=== Checking for RTEMS_BSP_CLEANUP_OPTIONS in BSP configure.ac"<br>>> + test_its_there configure.ac RTEMS_BSP_CLEANUP_OPTIONS<br>>> + fi<br>>> +<br>>> + # If not using -O2, then we really want to know<br>>> + # BSPs should
normally use -O2<br>>> + echo "=== Checking for not using -O2"<br>>> + grep -H "\-O[013456789]" make/custom/*.cfg<br>>><br>>> - # BSPs should not turn on extra warnings<br>>> - echo "=== Checking for turning on extra GCC warning checks"<br>>> - grep -H "\-W" make/custom/*.cfg<br>>> + # BSPs should not turn on extra warnings<br>>> + echo "=== Checking for turning on extra GCC warning checks"<br>>> + grep -H "\-W" make/custom/*.cfg<br>>><br>>> - # Hopefully have some output from the tmtests<br>>> - echo "=== Checking for timing information"<br>>> - c=`ls -1 times* 2>/dev/null | wc -l`<br>>> - if [ ${c} -eq 0 ] ; then<br>>> - echo "Please run the timing tests and include the results."<br>>> + # Hopefully have some output from
the tmtests<br>>> + echo "=== Checking for timing information"<br>>> + c=`ls -1 times* 2>/dev/null | wc -l`<br>>> + if [ ${c} -eq 0 ] ; then<br>>> + echo "Please run the timing tests and include the results."<br>>> fi<br>>> -fi ## END OF IF BSP<br>>><br>>> -#<br>>> + echo -e "\n=== Starting BSP Unified way checks"<br>>> +<br>>> + flag="0"<br>>> +<br>>> + check_file 1 start.S ../shared/start/ start/<br>>> + if [[ $filename != "0" ]];then<br>>> + if grep -wq "start" "$filename" || grep -wq "_start" "$filename"; then<br>>> + if [[ $verbose -eq "1" ]] ;then<br>>> + echo "$bsp : `basename $filename` start() present in $filename"<br>>> + fi<br>>> +
else<br>>> + echo "$bsp : `basename $filename` start() does not exist in start.S"<br>>> + fi<br>>> + fi<br>>> +<br>>> + check_file 1 bspstart.c ../../shared/ ../shared/ startup/<br>>> + check_methods "bsp_start"<br>>> +<br>>> + check_file 1 bspreset.c ../../shared/ ../shared/ startup/<br>>> + check_methods 1 "bsp_reset"<br>>> +<br>>> +<br>>> + check_file 1 bootcard.c ../../shared/<br>>> + check_header ../../shared/include/bootcard.h<br>>> +<br>>> + check_file 1 bspclean.c ../../shared/ startup/<br>>> + check_methods "bsp_fatal_extension"<br>>> +<br>>> + check_file 1 bspgetworkarea.c ../../shared/ ../../shared/startup ../shared/ ../shared/startup/ startup/<br>>> + check_methods 1 "bsp_work_area_initialize"<br>>> +<br>>> +<br>>>
+ check_file 1 bsplibc.c ../../shared/<br>>> + check_methods "bsp_libc_init"<br>>> +<br>>> + check_file 1 bsppost.c ../../shared/<br>>> + check_methods "bsp_postdriver_hook"<br>>> +<br>>> + check_file 1 bsppredriverhook.c ../../shared/ ../shared/startup/ startup/<br>>> + check_methods "bsp_predriver_hook"<br>>> +<br>>> +<br>>> + check_file gnatinstallhandler.c ../../shared/<br>>> +<br>>> + check_file sbrk.c ../../shared/ ../../shared/ startup/<br>>> + check_methods "sbrk"<br>>> +<br>>> +<br>>> + check_file stackalloc.c ../../shared/src/<br>>> + check_methods "bsp_stack_allocate_init" "bsp_stack_allocate" "bsp_stack_free"<br>>> +<br>>> + check_header ../../shared/include/stackalloc.h<br>>> +<br>>> + # Interrupt Files<br>>> + check_file 1
irq.c irq/<br>>> + check_methods "bsp_interrupt_vector_enable" "bsp_interrupt_vector_disable" "bsp_interrupt_facility_initialize" "bsp_interrupt_dispatch"<br>>> + check_header 1 include/irq.h<br>>> +<br>>> + # PIC Support<br>>> +<br>>> + check_file irq-default-handler.c ../../shared/src/<br>>> +<br>>> + check_file 1 irq-generic.c ../../shared/src/<br>>> + check_header 1 ../../shared/include/irq-generic.h<br>>> +<br>>> + check_file irq-info.c ../../shared/src/<br>>> + check_header ../../shared/include/irq-info.h<br>>> +<br>>> + check_file irq-legacy.c ../../shared/src/<br>>> + check_file irq-server.c ../../shared/src/<br>>> + check_file irq-shell.c ../../shared/src/<br>>> +<br>>> + # Real Time Clock<br>>> + check_file rtc-config.c rtc/<br>>> +
check_methods "bsp_rtc_initialize" "bsp_rtc_get_time" "bsp_rtc_set_time" "bsp_rtc_probe"<br>>> +<br>>> +<br>>> + check_file 1 tod.c ../../shared/ tod/<br>>> +<br>>> + # Benchmark Timers<br>>> + check_file benchmark_timer.c benchmark_timer/<br>>> + check_methods "benchmark_timer_initialize" "benchmark_timer_read" "benchmark_timer_disable_subtracting_average_overhead"<br>>> +<br>>> +<br>>> + # Standard Headers<br>>> +<br>>> + check_header 1 include/bsp.h<br>>> + check_header include/bspopts.h<br>>> + check_header 1 ../../shared/include/coverhd.h include/coverhd.h<br>>> + check_header ../../shared/include/utility.h<br>>> + check_header 1 ../../shared/include/tm27.h include/tm27.h<br>>> +<br>>> + cd ../../../../../../cpukit<br>>> + find_rtems_internal<br>>> + cd
- > /dev/null<br>>> +<br>>> + # Finding all internal functions being used in a bsp<br>>> + find_bsp_internal<br>>> +<br>>> + if [[ $flag == "1" ]]; then<br>>> + echo -e "\n"<br>>> + fi<br>>> +<br>>> + #<br>>> # Test specific checks<br>>> #<br>>> -if [ ${do_test} = "yes" ] ; then<br>>> - # find all the Makefile.am's with rtems_tests_PROGRAMS in them<br>>> - Makefiles=`find . -name Makefile.am | xargs -e grep -l ^rtems_tests`<br>>> - if [ "X${Makefiles}" = "X" ] ; then<br>>> - fatal "Unable to locate any test Makefile.am files."<br>>> - fi<br>>> - echo "=== Checking for missing test support files"<br>>> - for m in ${Makefiles}<br>>> - do<br>>> - directory=`dirname ${m}`<br>>> - if [
${directory} = "." ] ; then<br>>> - directory=`pwd`<br>>> + if [ ${do_test} == "1" ] ; then<br>>> +<br>>> + echo -e "\n=== Starting Test specific checks"<br>>> + # find all the Makefile.am's with rtems_tests_PROGRAMS in them<br>>> + Makefiles=`find . -name Makefile.am | xargs -e grep -l ^rtems_tests`<br>>> + if [ "X${Makefiles}" = "X" ] ; then<br>>> + echo -e "Unable to locate any test Makefile.am files.\n"<br>>> + return<br>>> fi<br>>> - testName=`basename ${directory}`<br>>> - # Does this test have a .doc file?<br>>> - if [ ! -r ${directory}/${testName}.doc ] ; then<br>>> - echo ${testName}.doc is not present<br>>> + echo "=== Checking for missing test
support files"<br>>> + for m in ${Makefiles}<br>>> + do<br>>> + directory=`dirname ${m}`<br>>> + if [ ${directory} = "." ] ; then<br>>> + directory=`pwd`<br>>> + fi<br>>> + testName=`basename ${directory}`<br>>> + # Does this test have a .doc file?<br>>> + if [ ! -r ${directory}/${testName}.doc ] ; then<br>>> + echo ${testName}.doc is not present<br>>> + fi<br>>> + case ${directory} in<br>>> + */*tmtests*) ;;<br>>> + *)<br>>> + # Does this test have a .scn file?<br>>> + if [ ! -r
${directory}/${testName}.scn ] ; then<br>>> + echo ${testName}.scn is not present<br>>> + fi<br>>> + ;;<br>>> + esac<br>>> + done<br>>> +<br>>> + fi<br>>> +}<br>>> +<br>>> +# Verifying if the directory given or pwd is a valid bsp, shared architecture, or libbsp directory<br>>> +function check_given_dir(){<br>>> + if echo $cur_dir | grep -Eq "c/src/lib/libbsp/([^/]+)/([^/]+)/([^/]+)*" ; then<br>>> + return 0<br>>> +<br>>> + elif echo $cur_dir | grep -Eq "c/src/lib/libbsp/([^/]+)/([^/]+)" ; then<br>>> +# BSP given<br>>> + bsp=${cur_dir##*/}<br>>> +<br>>> + if [[ $bsp == "shared" || $bsp == "autom4te.cache" || $bsp == "no_bsp" ]]; then<br>>>
+ return 0<br>>> + else<br>>> + main<br>>> fi<br>>> - case ${directory} in<br>>> - */*tmtests*) ;;<br>>> - *)<br>>> - # Does this test have a .scn file?<br>>> - if [ ! -r ${directory}/${testName}.scn ] ; then<br>>> - echo ${testName}.scn is not present<br>>> + elif echo $cur_dir | grep -Eq "c/src/lib/libbsp/([^/]+)" ; then<br>>> +# Shared architecture given<br>>> + for i in *<br>>> + do<br>>> + if [[ -d $i ]]; then<br>>> + if [[ $i == "shared" || $i == "autom4te.cache" || $i == "no_bsp" ]]; then<br>>> + echo -n<br>>> +
else<br>>> + bsp=$i<br>>> +<br>>> + cd $bsp<br>>> + main<br>>> + cd .. > /dev/null<br>>> + fi<br>>> + fi<br>>> + done<br>>> + elif echo $cur_dir | grep -Eq "c/src/lib/libbsp" ; then<br>>> +# libbsp given<br>>> + for i in */*/Makefile.am<br>>> + do<br>>> + i=`dirname $i`<br>>> + if [[ -d $i ]]; then<br>>> + if [[ $i == "shared" || $i == "autom4te.cache" || $i == "no_cpu/no_bsp" ]]; then<br>>> + echo -n<br>>> + else<br>>> + bsp=$i<br>>>
+<br>>> + cd $bsp<br>>> + main<br>>> + cd ../../ > /dev/null<br>>> fi<br>>> - ;;<br>>> + fi<br>>> + done<br>>> +<br>>> + else<br>>> + return 0<br>>> + fi<br>>> +}<br>>> +<br>>> +# Evaluating Command Line Arguments<br>>> +function start(){<br>>> +<br>>> + for i in $*<br>>> + do<br>>> + case $i in<br>>> + "--verbose") verbose="1" # The whole story<br>>> + ;;<br>>> +<br>>> + "--warnings") warnings="1" # All warnings<br>>> + verbose="0"<br>>> +
;;<br>>> +<br>>> + "--no_format") format="0" # Disabling format checks<br>>> + verbose="0"<br>>> + ;;<br>>> +<br>>> + "--tests") do_test="1" # Enabling check of tests<br>>> + verbose="0"<br>>> + ;;<br>>> +<br>>> + "--help") echo "Help to be provided"<br>>> + ;;<br>>> +<br>>> + "--"* | "-"* ) echo "Invalid options provided"<br>>> + ;;<br>>> +<br>>> + *) path="$path $i" ;; # If not above options, then assumed to be a path for bsp<br>>> esac<br>>> done<br>>> -<br>>> -fi<br>>><br>>> -exit 0<br>>> +#
No path given, search for bsp from pwd<br>>> + if [[ -z $path ]];then<br>>> + path=$PWD<br>>> + cur_dir=`pwd`<br>>> + check_given_dir<br>>> + if [[ $? -eq 1 ]];then<br>>> + echo "Current directory does not seem a valid RTEMS directory"<br>>> + fi<br>>> +<br>>> + else<br>>> + for i in $path<br>>> + do<br>>> + if [[ -d $i ]]; then<br>>> + echo > /dev/null<br>>> + else<br>>> + echo "$i is an invalid directory."<br>>> + continue<br>>> + fi<br>>> +<br>>> + cd $i<br>>> + cur_dir=`pwd`<br>>> +
check_given_dir<br>>> + if [[ $? -eq 1 ]];then<br>>> + echo "$i does not seem a valid RTEMS directory"<br>>> + fi<br>>> + cd $calling_path<br>>> +<br>>> + done<br>>> + fi<br>>> +}<br>>> +<br>>> +# Let the Game begin !!<br>>> +start $*<br>>> +<br>>> +# End of Checks<br>>> +if [[ $faults -eq "0" ]] ; then<br>>> + echo -e "\nNo faults found in BSP organization"<br>>> +fi<br>>> --<br>>> 1.7.11.7<br>>><br>>> _______________________________________________<br>>> rtems-devel mailing list<br>>> <a ymailto="mailto:rtems-devel@rtems.org" href="mailto:rtems-devel@rtems.org">rtems-devel@rtems.org</a><br>>> <a href="http://www.rtems.org/mailman/listinfo/rtems-devel"
target="_blank">http://www.rtems.org/mailman/listinfo/rtems-devel</a><br>>><br>><br>><br>><br>> --<br>> Joel Sherrill, Ph.D. Director of Research & Development<br>> <a ymailto="mailto:joel.sherrill@OARcorp.com" href="mailto:joel.sherrill@OARcorp.com">joel.sherrill@OARcorp.com</a> On-Line Applications Research<br>> Ask me about RTEMS: a free RTOS Huntsville AL 35805<br>> Support Available (256) 722-9985<br>> _______________________________________________<br>> rtems-devel mailing list<br>> <a ymailto="mailto:rtems-devel@rtems.org" href="mailto:rtems-devel@rtems.org">rtems-devel@rtems.org</a><br>> <a href="http://www.rtems.org/mailman/listinfo/rtems-devel" target="_blank">http://www.rtems.org/mailman/listinfo/rtems-devel</a><br><br><br></div> </div> </div> </div></body></html>