TOP=$(PWD) TOOLCHAIN=$(TOP)/xtensa-lx106-elf STANDALONE=y .PHONY: crosstool-NG toolchain libhal all: esptool .sdk_patch $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/libhal.a $(TOOLCHAIN)/bin/xtensa-lx106-elf-gcc @echo @echo "Xtensa toolchain is built, to use it:" @echo @echo 'export PATH=$(TOOLCHAIN)/bin:$$PATH' @echo ifneq ($(STANDALONE),y) @echo "Espressif ESP8266 SDK is installed. Toolchain contains only Open Source components" @echo "To link external proprietary libraries add:" @echo @echo "xtensa-lx106-elf-gcc -I$(TOP)/sdk/include -L$(TOP)/sdk/lib" @echo else @echo "Espressif ESP8266 SDK is installed, its libraries and headers are merged with the toolchain" @echo endif esptool: toolchain cp esptool/esptool.py $(TOOLCHAIN)/bin/ .sdk_patch: sdk/lib/libpp.a $(TOOLCHAIN)/bin/xtensa-lx106-elf-gcc ifeq ($(STANDALONE),y) @echo "Installing vendor SDK headers into toolchain sysroot" @cp -Rf sdk/include/* $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/include/ @echo "Installing vendor SDK libs into toolchain sysroot" @cp -Rf sdk/lib/* $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/ @echo "Installing vendor SDK linker scripts into toolchain sysroot" @sed -e 's/\r//' sdk/ld/eagle.app.v6.ld >$(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/eagle.app.v6.ld @sed -e 's/\r//' sdk/ld/eagle.rom.addr.v6.ld | sed -e s@../ld/@@ >$(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/eagle.rom.addr.v6.ld endif @touch $@ sdk/lib/libpp.a: esp_iot_sdk_v0.9.2/.dir FRM_ERR_PATCH.rar unrar x -o+ FRM_ERR_PATCH.rar cp FRM_ERR_PATCH/*.a $$(dirname $@) FRM_ERR_PATCH.rar: wget --content-disposition "http://bbs.espressif.com/download/file.php?id=10" esp_iot_sdk_v0.9.2/.dir: esp_iot_sdk_v0.9.2_14_10_24.zip unzip $^ ln -s $$(dirname $@) sdk touch $@ esp_iot_sdk_v0.9.2_14_10_24.zip: wget --content-disposition "http://bbs.espressif.com/download/file.php?id=9" libhal: $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/libhal.a $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/libhal.a: $(TOOLCHAIN)/bin/xtensa-lx106-elf-gcc make -C lx106-hal -f ../Makefile _libhal _libhal: autoreconf -i PATH=$(TOOLCHAIN)/bin:$(PATH) ./configure --host=xtensa-lx106-elf --prefix=$(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr PATH=$(TOOLCHAIN)/bin:$(PATH) make PATH=$(TOOLCHAIN)/bin:$(PATH) make install toolchain: $(TOOLCHAIN)/bin/xtensa-lx106-elf-gcc $(TOOLCHAIN)/bin/xtensa-lx106-elf-gcc: crosstool-NG/ct-ng make -C crosstool-NG -f ../Makefile _toolchain _toolchain: ./ct-ng xtensa-lx106-elf sed -r -i.org s%CT_PREFIX_DIR=.*%CT_PREFIX_DIR="$(TOOLCHAIN)"% .config sed -r -i s%CT_INSTALL_DIR_RO=y%"#"CT_INSTALL_DIR_RO=y% .config echo CT_STATIC_TOOLCHAIN=y >> .config ./ct-ng build crosstool-NG: crosstool-NG/ct-ng crosstool-NG/ct-ng: crosstool-NG/bootstrap make -C crosstool-NG -f ../Makefile _ct-ng _ct-ng: ./bootstrap ./configure --prefix=`pwd` make MAKELEVEL=0 make install MAKELEVEL=0 crosstool-NG/bootstrap: @echo "You cloned without --recursive, fetching submodules for you." git submodule update --init --recursive