diff --git a/tools/README.txt b/tools/README.txt index e9932b43c3f..6ce63d36deb 100644 --- a/tools/README.txt +++ b/tools/README.txt @@ -963,21 +963,20 @@ testbuild.sh The test list file is a sequence of build descriptons, one per line. One build descriptions consists of two comma separated values. For example: - stm32f429i-disco/nsh,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + stm32f429i-disco:nsh,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + /arm,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL The first value is the usual configuration description of the form - form / and must correspond to a - configuration in the nuttx/boards directory. + : or / and must correspond to a + configuration or folder in the nuttx/boards directory. The second value is valid name for a toolchain configuration to use when building the configuration. The set of valid toolchain configuration names depends on the underlying architecture of the configured board. - NOTE: The environment variable APPSDIR should be set to the relative - path to the application directory when running this script like: - - $ export APPSDIR=../apps + The prefix '-' can be used to skip a configruation: + -stm32f429i-disco/nsh,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL uncrustify.cfg -------------- diff --git a/tools/testbuild.sh b/tools/testbuild.sh index 167ec5f0be5..a009fc03941 100755 --- a/tools/testbuild.sh +++ b/tools/testbuild.sh @@ -123,10 +123,21 @@ if [ ! -d "$nuttx" ]; then showusage fi +if [ ! -d $APPSDIR ]; then + echo "ERROR: No directory found at $APPSDIR" + exit 1 +fi + +export APPSDIR + +testlist=`grep -v "^-" $testfile` +blacklist=`grep "^-" $testfile` + +cd $nuttx || { echo "ERROR: failed to CD to $nuttx"; exit 1; } + # Clean up after the last build function distclean { - cd $nuttx || { echo "ERROR: failed to CD to $nuttx"; exit 1; } if [ -f .config ]; then echo " Cleaning..." ${MAKE} ${JOPTION} ${MAKE_FLAGS} distclean 1>/dev/null @@ -136,9 +147,8 @@ function distclean { # Configure for the next build function configure { - cd $nuttx/tools || { echo "ERROR: failed to CD to $nuttx/tools"; exit 1; } echo " Configuring..." - ./configure.sh ${HOPTION} $config + ./tools/configure.sh ${HOPTION} $config if [ "X$toolchain" != "X" ]; then setting=`grep _TOOLCHAIN_ $nuttx/.config | grep -v CONFIG_ARCH_TOOLCHAIN_*=y | grep =y` @@ -156,7 +166,6 @@ function configure { # Perform the next build function build { - cd $nuttx || { echo "ERROR: failed to CD to $nuttx"; exit 1; } echo " Building NuttX..." echo "------------------------------------------------------------------------------------" ${MAKE} ${JOPTION} ${MAKE_FLAGS} 1>/dev/null @@ -165,37 +174,16 @@ function build { # Coordinate the steps for the next build test function dotest { - echo "------------------------------------------------------------------------------------" - distclean - configure - build -} - -# Perform the build test for each entry in the test list file - -if [ ! -d $APPSDIR ]; then - echo "ERROR: No directory found at $APPSDIR" - exit 1 -fi - -export APPSDIR - -# Shouldn't have to do this - -testlist=`cat $testfile` - -#while read -r line || [[ -n $line ]]; do -for line in $testlist; do echo "====================================================================================" - firstch=${line:0:1} - if [ "X$firstch" == "X#" ]; then - echo "Skipping: $line" + config=`echo $1 | cut -d',' -f1` + re=\\b${config/\//:}\\b + if [[ $blacklist =~ $re ]]; then + echo "Skipping: $1" else - echo "Configuration/Tool: $line" + echo "Configuration/Tool: $1" # Parse the next line - config=`echo $line | cut -d',' -f1` configdir=`echo $config | cut -s -d':' -f2` if [ -z "${configdir}" ]; then configdir=`echo $config | cut -s -d'/' -f2` @@ -216,8 +204,8 @@ for line in $testlist; do fi unset toolchain; - if [ "X$config" != "X$line" ]; then - toolchain=`echo $line | cut -d',' -f2` + if [ "X$config" != "X$1" ]; then + toolchain=`echo $1 | cut -d',' -f2` if [ -z "$toolchain" ]; then echo " Warning: no tool configuration" fi @@ -225,9 +213,26 @@ for line in $testlist; do # Perform the build test - dotest + echo "------------------------------------------------------------------------------------" + distclean + configure + build fi - cd $WD || { echo "ERROR: Failed to CD to $WD"; exit 1; } -done # < $testfile +} + +# Perform the build test for each entry in the test list file + +for line in $testlist; do + firstch=${line:0:1} + if [ "X$firstch" == "X/" ]; then + dir=`echo $line | cut -d',' -f1` + list=`find boards$dir -name defconfig | cut -d'/' -f4,6` + for i in ${list}; do + dotest $i${line/$dir/} + done + elif [ "X$firstch" != "X#" ]; then + dotest $line + fi +done echo "===================================================================================="