diff options
Diffstat (limited to 'nuttx/tools/build_config.sh')
-rwxr-xr-x | nuttx/tools/build_config.sh | 100 |
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 |