summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx')
-rwxr-xr-xnuttx/tools/autobuild.sh34
-rwxr-xr-xnuttx/tools/build_config.sh100
2 files changed, 134 insertions, 0 deletions
diff --git a/nuttx/tools/autobuild.sh b/nuttx/tools/autobuild.sh
new file mode 100755
index 000000000..d8ae8c3e2
--- /dev/null
+++ b/nuttx/tools/autobuild.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Build job count
+BUILDJOBS=${BUILDJOBS:-2}
+BUILDJOBID=${BUILDJOBID:-a}
+
+# Config count
+CONFCOUNT=`find nuttx/configs -name \*defconfig -print | wc -l`
+# Number of non-commented (#) and non-empty lines in ignore file
+IGNORECOUNT=`cat .travis_ignored_configs.txt | sed '/^\s*#/d;/^\s*$/d' | wc -l`
+# Get rid of whitespace
+CONFCOUNT=$(echo $CONFCOUNT )
+IGNORECOUNT=$(echo $IGNORECOUNT )
+
+echo -e "\n"
+echo -e "\0033[34mNuttX Configs: $CONFCOUNT total, $IGNORECOUNT excluded from build\0033[0m"
+echo -e "(Add or remove configs to file .travis_ignored_configs to exclude)"
+echo -e "----------------------------------------------------------------------------\n"
+
+CONFIGS=configs.txt
+
+find nuttx/configs -name \*defconfig -print > $CONFIGS
+
+# Lines per file
+LINES_TOTAL=$(wc -l <${CONFIGS})
+((LINES_PER_FILE = (LINES_TOTAL + BUILDJOBS - 1) / BUILDJOBS))
+
+# Perform the split
+split -a1 -l${LINES_PER_FILE} ${CONFIGS} configparts.
+
+echo -e "Operating total $BUILDJOBS build jobs"
+echo -e "Running job: configparts.$BUILDJOBID"
+
+cat "configparts.$BUILDJOBID" | xargs -L1 nuttx/tools/build_config.sh
diff --git a/nuttx/tools/build_config.sh b/nuttx/tools/build_config.sh
new file mode 100755
index 000000000..16a927139
--- /dev/null
+++ b/nuttx/tools/build_config.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+
+CONFIGPATH=$1
+BASE=`pwd`
+
+CONFIGBASEPATH=`dirname $CONFIGPATH`
+PREFIX=nuttx\/configs\/
+LOGSDIR=$BASE/travis_output
+
+IGNORED=`cat .travis_ignored_configs.txt | grep $CONFIGPATH`
+
+if [[ $IGNORED ]] && [[ $IGNORED != "#"* ]]
+then
+ echo -e "\0033[90mIgnoring config $CONFIGPATH\0033[0m"
+ exit 0
+fi
+
+# Config is valid, build it
+
+CONFIG=${CONFIGBASEPATH#$PREFIX}
+LOGDIR="$LOGSDIR/${CONFIG//\//_}"
+BUILDLOG="$LOGDIR/buildlog.txt"
+FAILED_CONFIGS="$LOGSDIR/failed_configs.txt"
+SUCCESSFUL_CONFIGS="$LOGSDIR/successful_configs.txt"
+
+echo -e "\nBUILDING CONFIG $CONFIG"
+echo -e "BUILD ARTIFACTS: $LOGDIR"
+echo -e "LOG: $BUILDLOG"
+mkdir -p $LOGDIR
+
+# Manually reconfigure for Linux toolchain
+# XXX this should be menuconfig, but doing this headless isn't trivial
+sed -i"" 's/# CONFIG_HOST_LINUX is not set.*/CONFIG_HOST_LINUX=y/g' $CONFIGPATH
+sed -i"" 's/CONFIG_HOST_WINDOWS=y.*/# CONFIG_HOST_WINDOWS is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_HOST_OSX=y.*/# CONFIG_HOST_OSX is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_HOST_OTHER=y.*/# CONFIG_HOST_OTHER is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_WINDOWS_NATIVE=y.*/# CONFIG_WINDOWS_NATIVE is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_WINDOWS_CYGWIN=y.*/# CONFIG_WINDOWS_CYGWIN is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_WINDOWS_MSYS=y.*/# CONFIG_WINDOWS_MSYS is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_WINDOWS_OTHER=y.*/# CONFIG_WINDOWS_OTHER is not set/g' $CONFIGPATH
+
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=y.*/# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_CODEREDL=y.*/# CONFIG_ARMV7M_TOOLCHAIN_CODEREDL is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL=y.*/# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_ATOLLIC=y.*/# CONFIG_ARMV7M_TOOLCHAIN_ATOLLIC is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_CODEREDW=y.*/# CONFIG_ARMV7M_TOOLCHAIN_CODEREDW is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y.*/# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_DEVKITARM=y.*/# CONFIG_ARMV7M_TOOLCHAIN_DEVKITARM is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y.*/# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_RAISONANCE=y.*/# CONFIG_ARMV7M_TOOLCHAIN_RAISONANCE is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_GNU_OABI=y.*/# CONFIG_ARMV7M_TOOLCHAIN_GNU_OABI is not set/g' $CONFIGPATH
+sed -i"" 's/# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set.*/CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y/g' $CONFIGPATH
+
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_BUILDROOT=y.*/# CONFIG_ARMV7A_TOOLCHAIN_BUILDROOT is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_CODEREDL=y.*/# CONFIG_ARMV7A_TOOLCHAIN_CODEREDL is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYL=y.*/# CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYL is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_ATOLLIC=y.*/# CONFIG_ARMV7A_TOOLCHAIN_ATOLLIC is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_CODEREDW=y.*/# CONFIG_ARMV7A_TOOLCHAIN_CODEREDW is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYW=y.*/# CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYW is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_DEVKITARM=y.*/# CONFIG_ARMV7A_TOOLCHAIN_DEVKITARM is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIW=y.*/# CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIW is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_RAISONANCE=y.*/# CONFIG_ARMV7A_TOOLCHAIN_RAISONANCE is not set/g' $CONFIGPATH
+sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_GNU_OABI=y.*/# CONFIG_ARMV7A_TOOLCHAIN_GNU_OABI is not set/g' $CONFIGPATH
+sed -i"" 's/# CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIL is not set.*/CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIL=y/g' $CONFIGPATH
+
+
+sed -i"" 's/# CONFIG_AVR_LINUXGCC is not set.*/CONFIG_AVR_LINUXGCC=y/g' $CONFIGPATH
+sed -i"" 's/CONFIG_AVR_BUILDROOT=y.*/# CONFIG_AVR_BUILDROOT is not set/g' $CONFIGPATH
+
+sed -i"" 's/CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_LITE=y.*/# CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_LITE is not set/g' $CONFIGPATH
+sed -i"" 's/# CONFIG_MIPS32_TOOLCHAIN_PINGUINOW is not set.*/CONFIG_MIPS32_TOOLCHAIN_PINGUINOW=y/g' $CONFIGPATH
+
+# Simulation target configs
+
+# Force 64bit host build
+sed -i"" 's/# CONFIG_HOST_X86_64 is not set.*/CONFIG_HOST_X86_64=y/g' $CONFIGPATH
+echo "CONFIG_HOST_X86_64=y" >> $CONFIGPATH
+
+# Clean build dir
+cd nuttx
+git clean -d -f -x > /dev/null
+cd ..
+
+cd nuttx/tools
+./configure.sh $CONFIG
+cd ..
+make oldconfig &> $BUILDLOG
+cp .config $LOGDIR/config
+if ! (make &> $BUILDLOG); then
+ echo -e "\0033[31mCONFIG $CONFIG: FAILED BUILD\0033[0m\n"
+ make distclean &> /dev/null
+ echo $CONFIGPATH >> $FAILED_CONFIGS
+ exit 1;
+else
+ echo -e "\0033[32mCONFIG $CONFIG: SUCCESSFUL BUILD\0033[0m\n"
+ cp nuttx $LOGDIR/.
+ make distclean &> /dev/null
+ echo $CONFIGPATH >> $SUCCESSFUL_CONFIGS
+ exit 0;
+fi