diff --git a/esp32/scripts/install_esp32_xcompiler_scratch.sh b/esp32/scripts/install_esp32_xcompiler_scratch.sh new file mode 100755 index 0000000..ad66f55 --- /dev/null +++ b/esp32/scripts/install_esp32_xcompiler_scratch.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# This script downloads the esp32 cross-compiler and compile it from scratch with crosstool-NG. +# It doesn't install esp-idf tools. +# Installation instructions from https://docs.espressif.com/projects/esp-idf/en/stable/get-started/linux-setup-scratch.html + +set -e + +SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" # dir from where this script is run +CROSSTOOLNG_ESP_VERSION=2019r2 + +### install some dependencies ### +sudo apt-get install -y git wget libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools ninja-build ccache libffi-dev libssl-dev + +sudo apt-get install -y gawk gperf grep gettext python python-dev automake bison flex texinfo help2man libtool libtool-bin make git + + +### Download and build cross-compilation toolchain ### +if [ -z "$1" ] + then + INSTALLDIR = $DEFAULTINSTALLDIR +else + INSTALLDIR = $1 +fi + +mkdir -p $INSTALLDIR && cd $INSTALLDIR + +# download crosstool-NG and build it +git clone https://github.com/espressif/crosstool-NG.git +cd crosstool-NG +git checkout esp-$CROSSTOOLNG_ESP_VERSION +git submodule update --init +./bootstrap && ./configure --enable-local && make -j8 + +# build the toolchain (will be in esp/crosstool-NG/builds/xtensa-esp32-elf) +./ct-ng xtensa-esp32-elf +./ct-ng build +chmod -R u+w builds/xtensa-esp32-elf