summaryrefslogtreecommitdiff
path: root/nuttx/tools/build_config.sh
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/tools/build_config.sh')
-rwxr-xr-xnuttx/tools/build_config.sh100
1 files changed, 100 insertions, 0 deletions
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