Note

You are reading the documentation for an ESP-IDF release version that is end of life. The latest stable version is v5.4

Setup Toolchain for Mac OS from Scratch

[中文]

Package Manager

To set up the toolchain from scratch, rather than downloading a pre-compiled toolchain, you will need to install either the MacPorts or Homebrew package manager.

MacPorts needs a full XCode installation, while Homebrew only needs XCode command line tools.

See Customized Setup of Toolchain section for some of the reasons why installing the toolchain from scratch may be necessary.

Install Prerequisites

  • install pip:

    sudo easy_install pip
    
    Copy to clipboard
  • install pyserial:

    pip install --user pyserial
    
    Copy to clipboard
  • install CMake & Ninja build:

    • If you have Homebrew, you can run:

      brew install cmake ninja dfu-util
      
      Copy to clipboard
    • If you have MacPorts, you can run:

      sudo port install cmake ninja dfu-util
      
      Copy to clipboard

Compile the Toolchain from Source

Install dependencies:

  • with MacPorts:

    sudo port install gsed gawk binutils gperf grep gettext wget libtool autoconf automake make
    
    Copy to clipboard
  • with Homebrew:

    brew install gnu-sed gawk binutils gperftools gettext wget help2man libtool autoconf automake make
    
    Copy to clipboard

Create a case-sensitive filesystem image:

hdiutil create ~/esp/crosstool.dmg -volname "ctng" -size 10g -fs "Case-sensitive HFS+"
Copy to clipboard

Mount it:

hdiutil mount ~/esp/crosstool.dmg
Copy to clipboard

Create a symlink to your work directory:

mkdir -p ~/esp
ln -s /Volumes/ctng ~/esp/ctng-volume
Copy to clipboard

Go into the newly created directory:

cd ~/esp/ctng-volume
Copy to clipboard

Download crosstool-NG and build it:

git clone https://github.com/espressif/crosstool-NG.git
cd crosstool-NG
git checkout esp-2021r2
git submodule update --init
./bootstrap && ./configure --enable-local && make
Copy to clipboard

Build the toolchain:

./ct-ng xtensa-esp32s2-elf
./ct-ng build
chmod -R u+w builds/xtensa-esp32s2-elf
Copy to clipboard

Toolchain will be built in ~/esp/ctng-volume/crosstool-NG/builds/xtensa-esp32s2-elf. To use it, you need to add ~/esp/ctng-volume/crosstool-NG/builds/xtensa-esp32s2-elf/bin to PATH environment variable.

Next Steps

To carry on with development environment setup, proceed to Step 2. Get ESP-IDF.