[PATCH] Bash script to review BSP File Organization
Vipul Nayyar
nayyar_vipul at yahoo.com
Tue Sep 17 17:32:22 UTC 2013
Hello Joel,
Updated the contents of the script so that a single file only needs to be run for a bsp. I'm sending the attached output of the new script for all bsps. Pls have a look at it.
Can you also check in or review the patch I sent in regarding the addition of PIC API to the documentation ? :-)
Regards
Vipul Nayyar
________________________________
From: Vipul Nayyar <nayyar_vipul at yahoo.com>
To: rtems-devel at rtems.org
Sent: Tuesday, 17 September 2013 10:54 PM
Subject: [PATCH] Bash script to review BSP File Organization
---
merge-helpers/check_submission | 776 +++++++++++++++++++++++++++++++----------
1 file changed, 590 insertions(+), 186 deletions(-)
diff --git a/merge-helpers/check_submission b/merge-helpers/check_submission
index e838121..90908f1 100755
--- a/merge-helpers/check_submission
+++ b/merge-helpers/check_submission
@@ -1,76 +1,247 @@
-#
-# Script to test for various things we want in a BSP when it is
-# submitted.
-#
-# Test for:
-# - XXX
-#
+#! /bin/bash
-usage()
-{
-cat <<EOF
-check_submission [options] directory
- -b - check assuming directory is a BSP
- -t - check assuming directory is a test
- -v - verbose
-EOF
-}
+# Bash Script to find discrepancies in BSP file organization.
+# Author : Vipul Nayyar <nayyar_vipul at yahoo.com>
-fatal()
-{
- usage
- exit 1
+
+filename="0"
+# Passing --verbose turns verbose to 1 & gives the whole story, otherwise '0' to give only important stuff.
+verbose="0"
+faults="0"
+# Passing --warnings turns warnings to 1 & gives all the critical & non-critical bsp file org. problems.
+warnings="0"
+flag="0"
+
+calling_path=`pwd`
+path=""
+
+important="1"
+rtems_internal=""
+internal_done="0"
+do_test="0"
+format="1"
+
+
+# Finds all rtems internal functions ( name starting with '_' & type specifier)
+# that are defined in cpukit & libcpu
+function find_rtems_internal(){
+ if [[ $internal_done == "1" ]]; then
+ return
+ fi
+ echo "Compiling list of RTEMS Internal functions ..."
+ internal_files=""
+
+ for k in `find -name *.c`
+ do
+ for j in `grep -oE "[a-z|A-Z|0-9|_]+[\ |^][_]+[a-z|A-Z|0-9|_]*[\ ]*\(" $k`
+ do
+ if [[ $j == "_"* ]]; then
+ j=${j%%\(}
+ internal_files="$j $internal_files"
+ fi
+
+ done
+ done
+
+ for k in `find ../c/src/lib/libcpu/ -name *.c`
+ do
+ for j in `grep -oE "[a-z|A-Z|0-9|_]+[\ |^][_]+[a-z|A-Z|0-9|_]*[\ ]*\(" $k`
+ do
+ if [[ $j == "_"* ]]; then
+ j=${j%%\(}
+ internal_files="$j $internal_files"
+ fi
+
+ done
+ done
+
+ for k in $internal_files
+ do
+ if echo $rtems_internal |grep -q $k ; then
+ echo > /dev/null
+ else
+ rtems_internal="$k $rtems_internal"
+ fi
+ done
+
+ internal_done="1"
}
-toggle()
-{
- case $1 in
- no) echo "yes" ;;
- yes) echo "no" ;;
- *) fatal "Unknown value to toggle ($1)" ;;
- esac
+# Finds all internal functions common in bsp and (cpukit + libcpu)
+function find_bsp_internal(){
+ bsp_methods=""
+ common_internal_methods=""
+
+# Searching for internal functions starting with '_' called(i.e ending with a ';')
+ for i in `find -name *.c`
+ do
+ file_contents=`tr -d '\n' < $i | grep -oE "[ |^][_]+[a-z|A-Z|0-9|_]*[ ]*[\n]*\([^;]*\)[ ]*;" | tr -d '\n' `
+
+ for j in `echo "$file_contents" | grep -oE "[_]+[a-z|A-Z|0-9|_]*[ ]*\("`
+ do
+ if `echo "$bsp_methods" |grep -q "${j%%\(}"` ; then
+ echo > /dev/null
+ else
+ bsp_methods="${j%%\(} $bsp_methods"
+ fi
+ done
+ done
+
+# Identifying common fucntions between $rtems_interval & $bsp_methods
+ for i in $rtems_internal
+ do
+ if [[ $i == "__asm__" || $i == "__attribute__" || $i == "__volatile__" || $i == "__"* ]];then
+ continue
+ fi
+ for j in $bsp_methods
+ do
+ if [[ $i == $j ]]; then
+ common_internal_methods="$j $common_internal_methods"
+ fi
+ done
+ done
+
+ if [[ $common_internal_methods != "" ]]; then
+ echo -e "$bsp : RTEMS Internal functions used : \c"
+ for i in $common_internal_methods
+ do
+ echo -e "${i}() \c"
+ done
+ flag="1"
+ fi
}
-verbose="no"
-do_bsp="no"
-do_test="no"
-
-while getopts vbt OPT
-do
- case "$OPT" in
- b) do_bsp="yes" ; do_test="no" ;;
- t) do_bsp="no" ; do_test="yes" ;;
- v) verbose=`toggle ${verbose}` ;;
- *) fatal ;;
- esac
-done
-########################### Grab Directory ###########################
+# Passing 1 initially to any check function states that the file/method/header
+# being checked is of critical nature
+function check_file(){
+ filename="0"
+ if [[ $1 == 1 ]]; then
+ important="1"
+ shift
+ else
+ important="0"
+ fi
-shiftcount=`expr $OPTIND - 1`
-shift $shiftcount
+#Grabbing the path of file being evaluated from Makefile.am
+ if grep -wqE "[ ]*[^\ ]*/($1)" Makefile.am ; then
+ file_path=`grep -woE "[ ]*[^\ ]*/($1)" Makefile.am | head --lines=1`
+ cd `dirname $file_path`
+ filename=$1
+ file_path=`pwd`
+
+ cd - > /dev/null
+ shift
+
+# Checking if file lies in correct directory path
+ for i in $*
+ do
+ if [[ -d $i ]]; then
+ cd $i
+ else
+ continue
+ fi
+
+
+ if [[ "$file_path" == `pwd` ]]; then
+ filename="$file_path/$filename"
+ cd - >/dev/null
+ return
+ fi
+ cd - > /dev/null
+ done
+ echo "$bsp : $filename not present in correct path"
+ filename="$file_path/$filename"
+ return
+ else
+ if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]]; then
+ flag="1"
+ echo "$bsp : $1 not compiled"
+ fi
+ fi
-basedir=${1}
+ filename="0"
+ faults="1"
+ return
+}
-if [ "${basedir}X" = "X" ] ; then
- basedir=.
-fi
+# Checking presence of functions in specific files
+function check_methods(){
+ if [[ $1 == 1 ]]; then
+ important="1"
+ shift
+ else
+ important="0"
+ fi
-if [ ${do_bsp} = "no" -a ${do_test} = "no" ] ; then
- fatal must select test or bsp check mode
-fi
+ for i in $*
+ do
-if [ ! -d ${basedir} ] ; then
- fatal ${basedir} is not a directory
-fi
+# When correct file for this function does not exist
+ if [[ $filename == "0" ]];then
+ if grep -rqlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" * ;then
+ if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]];then
+ echo $bsp : ${i%(*}"()" present in file `grep -rlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" *`
+ fi
+ fi
+ else
+
+# When correct file for this function exists
+ if grep -Eq "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" $filename ; then
+ if [[ $verbose -eq "1" ]] ;then
+ echo "$bsp : `basename $filename` : ${i%(*}() present in file"
+ fi
+ else
+ if grep -rqlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" * ;then
+ if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]];then
+ echo $bsp : ${i%(*}"()" present in file `grep -rlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" *`
+ fi
+ else
+ if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]]; then
+ echo "$bsp : `basename $filename` : ${i%(*}() function does not exist in $filename "
+ flag="1"
+ fi
+ faults="1"
+ fi
+ fi
+
+ fi
+ done
+}
+# Checking presence of headers installed by bsp
+function check_header(){
+ if [[ $1 == 1 ]]; then
+ important="1"
+ shift
+ else
+ important="0"
+ fi
-cd ${basedir}
-if [ $? -ne 0 ] ; then
- echo Unable to cd to ${basedir}
- exit 1
-fi
+ for i in $*
+ do
+ if grep -wq "$i" Makefile.am ;then
+ if [[ ! -f "$i" && ! -f "${i}.in" ]] ;then
+ continue
+ fi
+ if [[ $verbose -eq "1" ]] ;then
+ cd `dirname $i`
+ echo "$bsp : `basename $i` installed from directory" ${PWD##*/c/src/lib/}
+ cd - > /dev/null
+ fi
+ return
+ fi
+ done
+
+ if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]]; then
+ echo "${bsp%%[\ ]*} : `basename $1` not installed "
+ flag="1"
+ fi
+ filename="0"
+ faults="1"
+ return
+}
test_its_there()
{
@@ -79,7 +250,7 @@ test_its_there()
fi
grep ${2} ${1} >/dev/null
if [ $? -ne 0 ] ; then
- echo "${2} is NOT in ${basedir}/${1}"
+ echo "$bsp : ${2} is NOT in ${1##./}"
fi
}
@@ -91,7 +262,7 @@ test_its_there_all_case()
fi
grep -i ${2} ${1} >/dev/null
if [ $? -ne 0 ] ; then
- echo "${2} is NOT in ${basedir}/${1} - case independent check"
+ echo "$bsp : ${2} is NOT in ${1##./} - case independent check"
fi
}
@@ -105,7 +276,7 @@ test_its_NOT_there_all_case()
shift
grep -i "${*}" ${FILE} >/dev/null
if [ $? -eq 0 ] ; then
- echo "(${*}) SHOULD NOT BE IN ${basedir}/${FILE} - case independent check"
+ echo "$bsp : (${*}) SHOULD NOT BE IN ${FILE##./} - case independent check"
fi
}
@@ -118,14 +289,14 @@ test_its_NOT_there()
shift
grep "${*}" ${FILE} >/dev/null
if [ $? -eq 0 ] ; then
- echo "(${*}) SHOULD NOT BE IN ${basedir}/${FILE}"
+ echo "$bsp : (${*}) SHOULD NOT BE IN ${FILE##./}"
fi
}
find_source()
{
findArgs=
- while getopts "cCm" OPT
+ while getopts "cCdm" OPT
do
case "$OPT" in
c) findArgs="${findArgs} -o -name configure.ac" ;;
@@ -144,145 +315,378 @@ find_source()
find . -name "*.[chS]" ${findArgs}
}
-# Verify no lines longer than 80 columns
-echo "=== Checking for lines greater than 79 columns"
-find_source -m -c -C | while read f
-do
- grep ".\{80,\}" ${f} >/dev/null
- if [ $? -eq 0 ] ; then
- echo "*** ${basedir}/${f} has the following lines that are too long"
- grep -n '.\{80,\}' ${f}
- fi
-done
-
-# really need to make the copyright strings consistent in BSPs
-echo "=== Checking for copyright notices"
-find_source | while read f
-do
- test_its_there_all_case ${f} COPYRIGHT
-done
-
-# We want CVS Id strings everywhere possible
-echo "=== Checking for CVS Id strings"
-find_source -d | while read f
-do
- test_its_NOT_there ${f} "\$Id"
-done
-
-# We do not want the reformatted license notice
-echo "=== Checking for reformatted RTEMS license notices"
-find_source -m -c -C | while read f
-do
- test_its_NOT_there ${f} "this file may be found in the file"
-done
-
-# We do not want spaces at the end of lines
-echo "=== Checking for spaces at the end of lines"
-find_source -m -c -C | while read f
-do
- egrep " +$" $f >/dev/null
- test $? -eq 0 && echo "$f has spaces at the end of one or more lines."
-done
-
-# We do not want tabs in source files
-echo "=== Checking for tabs in source files"
-find_source | while read f
-do
- grep -P '\t' $f >/dev/null
- if [ $? -eq 0 ]; then
- echo "*** ${basedir}/${f} has the following lines with tabs"
- grep -P '\t' $f
- fi
-done
-
-# We do not want GPL code
-echo "=== Checking for hints of GPL code"
-find_source -m -c -C | while read f
-do
- test_its_NOT_there ${f} "Free Software Foundation"
- test_its_NOT_there ${f} "program is free software"
- test_its_NOT_there ${f} "General Public License"
-done
-
-# We do not want hints that there are things left to do
-echo "=== Checking for TODO hints"
-find_source -m -c -C | while read f
-do
- test_its_NOT_there ${f} XXX
- test_its_NOT_there ${f} TODO
- test_its_NOT_there ${f} TBD
-done
+function check_format(){
-#
-# BSP specific checks
-#
-if [ ${do_bsp} = "yes" ] ; then
- # We do not want stdio in a BSP
- echo "=== Checking for stdio"
+ # Verify no lines longer than 80 columns
+ echo "=== Checking for lines greater than 80 columns"
+ find_source -m -c -C | while read f
+ do
+ grep ".\{81,\}" ${f} >/dev/null
+ if [ $? -eq 0 ] ; then
+ echo -e "\n$bsp : ${f#./} has more than 80 character lines"
+ for i in `grep -n '.\{80,\}' ${f} | cut -f1 -d:`
+ do
+ echo -e "$i \c"
+ done
+ fi
+ done
+
+ # really need to make the copyright strings consistent in BSPs
+ echo -e "\n=== Checking for copyright notices"
+ find_source | while read f
+ do
+ test_its_there_all_case ${f} COPYRIGHT
+ done
+
+ # We want CVS Id strings everywhere possible
+ echo "=== Checking for CVS Id strings"
+ find_source -d | while read f
+ do
+ test_its_NOT_there ${f} "\$Id"
+ done
+
+ # We do not want the reformatted license notice
+ echo "=== Checking for reformatted RTEMS license notices"
+ find_source -m -c -C | while read f
+ do
+ test_its_NOT_there ${f} "this file may be found in the file"
+ done
+
+ # We do not want spaces at the end of lines
+ echo "=== Checking for spaces at the end of lines"
+ find_source -m -c -C | while read f
+ do
+ egrep " +$" $f >/dev/null
+ test $? -eq 0 && echo -e "${f##./} \c"
+ done
+
+ # We do not want tabs in source files
+ echo -e "\n=== Checking for tabs in source files"
+ find_source | while read f
+ do
+ grep -P '\t' $f >/dev/null
+ test $? -eq 0 && echo -e "${f##./} \c"
+ done
+
+ # We do not want GPL code
+ echo -e "\n=== Checking for hints of GPL code"
find_source -m -c -C | while read f
do
- test_its_NOT_there ${f} printf
- test_its_NOT_there ${f} "puts("
+ test_its_NOT_there ${f} "Free Software Foundation"
+ test_its_NOT_there ${f} "program is free software"
+ test_its_NOT_there ${f} "General Public License"
done
- # BSPs should include RTEMS_BSP_CLEANUP_OPTIONS and maybe
- # RTEMS_BSP_BOOTCARD_OPTIONS
- if [ -r configure.ac ] ; then
- echo "=== Checking for RTEMS_BSP_BOOTCARD_OPTIONS in BSP configure.ac"
- test_its_not_there configure.ac RTEMS_BSP_BOOTCARD_OPTIONS
- echo "=== Checking for RTEMS_BSP_CLEANUP_OPTIONS in BSP configure.ac"
- test_its_there configure.ac RTEMS_BSP_CLEANUP_OPTIONS
+ # We do not want hints that there are things left to do
+ echo "=== Checking for TODO hints"
+ find_source -m -c -C | while read f
+ do
+ test_its_NOT_there ${f} XXX
+ test_its_NOT_there ${f} TODO
+ test_its_NOT_there ${f} TBD
+ done
+}
+
+# Reviewing for a BSP Starts
+function main(){
+
+ if [[ $format -eq "1" ]]; then
+ check_format
fi
- # If not using -O2, then we really want to know
- # BSPs should normally use -O2
- echo "=== Checking for not using -O2"
- grep -H "\-O[013456789]" make/custom/*.cfg
+ # We do not want stdio in a BSP
+ echo "=== Checking for stdio"
+ find_source -m -c -C | while read f
+ do
+ test_its_NOT_there ${f} printf
+ test_its_NOT_there ${f} "puts("
+ done
+
+ # BSPs should include RTEMS_BSP_CLEANUP_OPTIONS and maybe
+ # RTEMS_BSP_BOOTCARD_OPTIONS
+ if [ -r configure.ac ] ; then
+ echo "=== Checking for RTEMS_BSP_BOOTCARD_OPTIONS in BSP configure.ac"
+ test_its_NOT_there configure.ac RTEMS_BSP_BOOTCARD_OPTIONS
+ echo "=== Checking for RTEMS_BSP_CLEANUP_OPTIONS in BSP configure.ac"
+ test_its_there configure.ac RTEMS_BSP_CLEANUP_OPTIONS
+ fi
+
+ # If not using -O2, then we really want to know
+ # BSPs should normally use -O2
+ echo "=== Checking for not using -O2"
+ grep -H "\-O[013456789]" make/custom/*.cfg
- # BSPs should not turn on extra warnings
- echo "=== Checking for turning on extra GCC warning checks"
- grep -H "\-W" make/custom/*.cfg
+ # BSPs should not turn on extra warnings
+ echo "=== Checking for turning on extra GCC warning checks"
+ grep -H "\-W" make/custom/*.cfg
- # Hopefully have some output from the tmtests
- echo "=== Checking for timing information"
- c=`ls -1 times* 2>/dev/null | wc -l`
- if [ ${c} -eq 0 ] ; then
- echo "Please run the timing tests and include the results."
+ # Hopefully have some output from the tmtests
+ echo "=== Checking for timing information"
+ c=`ls -1 times* 2>/dev/null | wc -l`
+ if [ ${c} -eq 0 ] ; then
+ echo "Please run the timing tests and include the results."
fi
-fi ## END OF IF BSP
-#
+ echo -e "\n=== Starting BSP Unified way checks"
+
+ flag="0"
+
+ check_file 1 start.S ../shared/start/ start/
+ if [[ $filename != "0" ]];then
+ if grep -wq "start" "$filename" || grep -wq "_start" "$filename"; then
+ if [[ $verbose -eq "1" ]] ;then
+ echo "$bsp : `basename $filename` start() present in $filename"
+ fi
+ else
+ echo "$bsp : `basename $filename` start() does not exist in start.S"
+ fi
+ fi
+
+ check_file 1 bspstart.c ../../shared/ ../shared/ startup/
+ check_methods "bsp_start"
+
+ check_file 1 bspreset.c ../../shared/ ../shared/ startup/
+ check_methods 1 "bsp_reset"
+
+
+ check_file 1 bootcard.c ../../shared/
+ check_header ../../shared/include/bootcard.h
+
+ check_file 1 bspclean.c ../../shared/ startup/
+ check_methods "bsp_fatal_extension"
+
+ check_file 1 bspgetworkarea.c ../../shared/ ../../shared/startup ../shared/ ../shared/startup/ startup/
+ check_methods 1 "bsp_work_area_initialize"
+
+
+ check_file 1 bsplibc.c ../../shared/
+ check_methods "bsp_libc_init"
+
+ check_file 1 bsppost.c ../../shared/
+ check_methods "bsp_postdriver_hook"
+
+ check_file 1 bsppredriverhook.c ../../shared/ ../shared/startup/ startup/
+ check_methods "bsp_predriver_hook"
+
+
+ check_file gnatinstallhandler.c ../../shared/
+
+ check_file sbrk.c ../../shared/ ../../shared/ startup/
+ check_methods "sbrk"
+
+
+ check_file stackalloc.c ../../shared/src/
+ check_methods "bsp_stack_allocate_init" "bsp_stack_allocate" "bsp_stack_free"
+
+ check_header ../../shared/include/stackalloc.h
+
+ # Interrupt Files
+ check_file 1 irq.c irq/
+ check_methods "bsp_interrupt_vector_enable" "bsp_interrupt_vector_disable" "bsp_interrupt_facility_initialize" "bsp_interrupt_dispatch"
+ check_header 1 include/irq.h
+
+ # PIC Support
+
+ check_file irq-default-handler.c ../../shared/src/
+
+ check_file 1 irq-generic.c ../../shared/src/
+ check_header 1 ../../shared/include/irq-generic.h
+
+ check_file irq-info.c ../../shared/src/
+ check_header ../../shared/include/irq-info.h
+
+ check_file irq-legacy.c ../../shared/src/
+ check_file irq-server.c ../../shared/src/
+ check_file irq-shell.c ../../shared/src/
+
+ # Real Time Clock
+ check_file rtc-config.c rtc/
+ check_methods "bsp_rtc_initialize" "bsp_rtc_get_time" "bsp_rtc_set_time" "bsp_rtc_probe"
+
+
+ check_file 1 tod.c ../../shared/ tod/
+
+ # Benchmark Timers
+ check_file benchmark_timer.c benchmark_timer/
+ check_methods "benchmark_timer_initialize" "benchmark_timer_read" "benchmark_timer_disable_subtracting_average_overhead"
+
+
+ # Standard Headers
+
+ check_header 1 include/bsp.h
+ check_header include/bspopts.h
+ check_header 1 ../../shared/include/coverhd.h include/coverhd.h
+ check_header ../../shared/include/utility.h
+ check_header 1 ../../shared/include/tm27.h include/tm27.h
+
+ cd ../../../../../../cpukit
+ find_rtems_internal
+ cd - > /dev/null
+
+ # Finding all internal functions being used in a bsp
+ find_bsp_internal
+
+ if [[ $flag == "1" ]]; then
+ echo -e "\n"
+ fi
+
+ #
# Test specific checks
#
-if [ ${do_test} = "yes" ] ; then
- # find all the Makefile.am's with rtems_tests_PROGRAMS in them
- Makefiles=`find . -name Makefile.am | xargs -e grep -l ^rtems_tests`
- if [ "X${Makefiles}" = "X" ] ; then
- fatal "Unable to locate any test Makefile.am files."
- fi
- echo "=== Checking for missing test support files"
- for m in ${Makefiles}
- do
- directory=`dirname ${m}`
- if [ ${directory} = "." ] ; then
- directory=`pwd`
+ if [ ${do_test} == "1" ] ; then
+
+ echo -e "\n=== Starting Test specific checks"
+ # find all the Makefile.am's with rtems_tests_PROGRAMS in them
+ Makefiles=`find . -name Makefile.am | xargs -e grep -l ^rtems_tests`
+ if [ "X${Makefiles}" = "X" ] ; then
+ echo -e "Unable to locate any test Makefile.am files.\n"
+ return
fi
- testName=`basename ${directory}`
- # Does this test have a .doc file?
- if [ ! -r ${directory}/${testName}.doc ] ; then
- echo ${testName}.doc is not present
+ echo "=== Checking for missing test support files"
+ for m in ${Makefiles}
+ do
+ directory=`dirname ${m}`
+ if [ ${directory} = "." ] ; then
+ directory=`pwd`
+ fi
+ testName=`basename ${directory}`
+ # Does this test have a .doc file?
+ if [ ! -r ${directory}/${testName}.doc ] ; then
+ echo ${testName}.doc is not present
+ fi
+ case ${directory} in
+ */*tmtests*) ;;
+ *)
+ # Does this test have a .scn file?
+ if [ ! -r ${directory}/${testName}.scn ] ; then
+ echo ${testName}.scn is not present
+ fi
+ ;;
+ esac
+ done
+
+ fi
+}
+
+# Verifying if the directory given or pwd is a valid bsp, shared architecture, or libbsp directory
+function check_given_dir(){
+ if echo $cur_dir | grep -Eq "c/src/lib/libbsp/([^/]+)/([^/]+)/([^/]+)*" ; then
+ return 0
+
+ elif echo $cur_dir | grep -Eq "c/src/lib/libbsp/([^/]+)/([^/]+)" ; then
+# BSP given
+ bsp=${cur_dir##*/}
+
+ if [[ $bsp == "shared" || $bsp == "autom4te.cache" || $bsp == "no_bsp" ]]; then
+ return 0
+ else
+ main
fi
- case ${directory} in
- */*tmtests*) ;;
- *)
- # Does this test have a .scn file?
- if [ ! -r ${directory}/${testName}.scn ] ; then
- echo ${testName}.scn is not present
+ elif echo $cur_dir | grep -Eq "c/src/lib/libbsp/([^/]+)" ; then
+# Shared architecture given
+ for i in *
+ do
+ if [[ -d $i ]]; then
+ if [[ $i == "shared" || $i == "autom4te.cache" || $i == "no_bsp" ]]; then
+ echo -n
+ else
+ bsp=$i
+
+ cd $bsp
+ main
+ cd .. > /dev/null
+ fi
+ fi
+ done
+ elif echo $cur_dir | grep -Eq "c/src/lib/libbsp" ; then
+# libbsp given
+ for i in */*/Makefile.am
+ do
+ i=`dirname $i`
+ if [[ -d $i ]]; then
+ if [[ $i == "shared" || $i == "autom4te.cache" || $i == "no_cpu/no_bsp" ]]; then
+ echo -n
+ else
+ bsp=$i
+
+ cd $bsp
+ main
+ cd ../../ > /dev/null
fi
- ;;
+ fi
+ done
+
+ else
+ return 0
+ fi
+}
+
+# Evaluating Command Line Arguments
+function start(){
+
+ for i in $*
+ do
+ case $i in
+ "--verbose") verbose="1" # The whole story
+ ;;
+
+ "--warnings") warnings="1" # All warnings
+ verbose="0"
+ ;;
+
+ "--no_format") format="0" # Disabling format checks
+ verbose="0"
+ ;;
+
+ "--tests") do_test="1" # Enabling check of tests
+ verbose="0"
+ ;;
+
+ "--help") echo "Help to be provided"
+ ;;
+
+ "--"* | "-"* ) echo "Invalid options provided"
+ ;;
+
+ *) path="$path $i" ;; # If not above options, then assumed to be a path for bsp
esac
done
-
-fi
-exit 0
+# No path given, search for bsp from pwd
+ if [[ -z $path ]];then
+ path=$PWD
+ cur_dir=`pwd`
+ check_given_dir
+ if [[ $? -eq 1 ]];then
+ echo "Current directory does not seem a valid RTEMS directory"
+ fi
+
+ else
+ for i in $path
+ do
+ if [[ -d $i ]]; then
+ echo > /dev/null
+ else
+ echo "$i is an invalid directory."
+ continue
+ fi
+
+ cd $i
+ cur_dir=`pwd`
+ check_given_dir
+ if [[ $? -eq 1 ]];then
+ echo "$i does not seem a valid RTEMS directory"
+ fi
+ cd $calling_path
+
+ done
+ fi
+}
+
+# Let the Game begin !!
+start $*
+
+# End of Checks
+if [[ $faults -eq "0" ]] ; then
+ echo -e "\nNo faults found in BSP organization"
+fi
--
1.7.11.7
_______________________________________________
rtems-devel mailing list
rtems-devel at rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20130918/d616b2c0/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: temp
Type: application/octet-stream
Size: 217056 bytes
Desc: not available
URL: <http://lists.rtems.org/pipermail/devel/attachments/20130918/d616b2c0/attachment-0001.obj>
More information about the devel
mailing list