2014-11-25 02:21:46 +02:00
|
|
|
TOP = $(PWD)
|
|
|
|
TOOLCHAIN = $(TOP)/xtensa-lx106-elf
|
2015-04-25 14:35:40 +01:00
|
|
|
VENDOR_SDK = 1.0.1
|
2014-11-24 02:14:33 +02:00
|
|
|
|
2014-11-25 02:21:46 +02:00
|
|
|
UNZIP = unzip -q -o
|
|
|
|
|
2014-11-24 02:14:33 +02:00
|
|
|
VENDOR_SDK_ZIP = $(VENDOR_SDK_ZIP_$(VENDOR_SDK))
|
|
|
|
VENDOR_SDK_DIR = $(VENDOR_SDK_DIR_$(VENDOR_SDK))
|
|
|
|
|
2015-04-25 14:35:40 +01:00
|
|
|
VENDOR_SDK_ZIP_1.0.1 = esp_iot_sdk_v1.0.1_15_04_24.zip
|
|
|
|
VENDOR_SDK_DIR_1.0.1 = esp_iot_sdk_v1.0.1
|
2015-04-21 19:33:48 +03:00
|
|
|
VENDOR_SDK_ZIP_1.0.1b2 = esp_iot_sdk_v1.0.1_b2_15_04_10.zip
|
|
|
|
VENDOR_SDK_DIR_1.0.1b2 = esp_iot_sdk_v1.0.1_b2
|
2015-04-05 22:14:30 +02:00
|
|
|
VENDOR_SDK_ZIP_1.0.1b1 = esp_iot_sdk_v1.0.1_b1_15_04_02.zip
|
|
|
|
VENDOR_SDK_DIR_1.0.1b1 = esp_iot_sdk_v1.0.1_b1
|
2015-03-20 18:12:01 +01:00
|
|
|
VENDOR_SDK_ZIP_1.0.0 = esp_iot_sdk_v1.0.0_15_03_20.zip
|
|
|
|
VENDOR_SDK_DIR_1.0.0 = esp_iot_sdk_v1.0.0
|
2015-03-15 01:03:22 +00:00
|
|
|
VENDOR_SDK_ZIP_0.9.6b1 = esp_iot_sdk_v0.9.6_b1_15_02_15.zip
|
|
|
|
VENDOR_SDK_DIR_0.9.6b1 = esp_iot_sdk_v0.9.6_b1
|
2015-01-26 21:26:27 +00:00
|
|
|
VENDOR_SDK_ZIP_0.9.5 = esp_iot_sdk_v0.9.5_15_01_23.zip
|
|
|
|
VENDOR_SDK_DIR_0.9.5 = esp_iot_sdk_v0.9.5
|
2014-12-23 02:33:09 +02:00
|
|
|
VENDOR_SDK_ZIP_0.9.4 = esp_iot_sdk_v0.9.4_14_12_19.zip
|
|
|
|
VENDOR_SDK_DIR_0.9.4 = esp_iot_sdk_v0.9.4
|
2014-11-25 02:21:46 +02:00
|
|
|
VENDOR_SDK_ZIP_0.9.3 = esp_iot_sdk_v0.9.3_14_11_21.zip
|
|
|
|
VENDOR_SDK_DIR_0.9.3 = esp_iot_sdk_v0.9.3
|
|
|
|
VENDOR_SDK_ZIP_0.9.2 = esp_iot_sdk_v0.9.2_14_10_24.zip
|
|
|
|
VENDOR_SDK_DIR_0.9.2 = esp_iot_sdk_v0.9.2
|
|
|
|
STANDALONE = y
|
2014-11-15 23:52:44 +02:00
|
|
|
|
2014-11-24 02:14:33 +02:00
|
|
|
.PHONY: crosstool-NG toolchain libhal libcirom sdk
|
2014-11-19 01:45:11 +02:00
|
|
|
|
2014-11-24 02:14:33 +02:00
|
|
|
all: esptool libcirom standalone sdk sdk_patch $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/libhal.a $(TOOLCHAIN)/bin/xtensa-lx106-elf-gcc
|
2014-11-15 23:52:44 +02:00
|
|
|
@echo
|
|
|
|
@echo "Xtensa toolchain is built, to use it:"
|
|
|
|
@echo
|
|
|
|
@echo 'export PATH=$(TOOLCHAIN)/bin:$$PATH'
|
|
|
|
@echo
|
2014-11-18 21:52:44 +02:00
|
|
|
ifneq ($(STANDALONE),y)
|
2014-11-18 22:14:32 +03:00
|
|
|
@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
|
2014-11-18 21:52:44 +02:00
|
|
|
@echo "Espressif ESP8266 SDK is installed, its libraries and headers are merged with the toolchain"
|
2014-11-15 23:52:44 +02:00
|
|
|
@echo
|
2014-11-18 22:14:32 +03:00
|
|
|
endif
|
|
|
|
|
2014-11-19 14:18:22 +02:00
|
|
|
esptool: toolchain
|
|
|
|
cp esptool/esptool.py $(TOOLCHAIN)/bin/
|
2014-11-15 23:52:44 +02:00
|
|
|
|
2014-11-25 02:21:46 +02:00
|
|
|
$(TOOLCHAIN)/xtensa-lx106-elf/sysroot/lib/libcirom.a: $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/lib/libc.a $(TOOLCHAIN)/bin/xtensa-lx106-elf-gcc
|
2014-11-20 23:48:53 +03:00
|
|
|
@echo "Creating irom version of libc..."
|
|
|
|
$(TOOLCHAIN)/bin/xtensa-lx106-elf-objcopy --rename-section .text=.irom0.text \
|
|
|
|
--rename-section .literal=.irom0.literal $(<) $(@);
|
|
|
|
|
|
|
|
libcirom: $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/lib/libcirom.a
|
|
|
|
|
2014-11-24 02:14:33 +02:00
|
|
|
sdk_patch: .sdk_patch_$(VENDOR_SDK)
|
|
|
|
|
2015-05-15 17:32:03 +02:00
|
|
|
.sdk_patch_1.0.1: libnet80211.zip
|
|
|
|
$(UNZIP) $<
|
|
|
|
mv libnet80211.a $(VENDOR_SDK_DIR)/lib/
|
|
|
|
rm libnet80211.zip
|
2015-04-25 14:35:40 +01:00
|
|
|
patch -d $(VENDOR_SDK_DIR_1.0.1) -p1 < c_types-c99.patch
|
|
|
|
@touch $@
|
|
|
|
|
2015-04-21 19:33:48 +03:00
|
|
|
.sdk_patch_1.0.1b2: libssl.zip esp_iot_sdk_v1.0.1_b2/.dir
|
|
|
|
$(UNZIP) $<
|
|
|
|
mv libssl/libssl.a $(VENDOR_SDK_DIR_1.0.1b2)/lib/
|
2015-05-15 17:32:03 +02:00
|
|
|
rm -r libssl libssl.zip
|
2015-04-21 19:33:48 +03:00
|
|
|
patch -d $(VENDOR_SDK_DIR_1.0.1b2) -p1 < c_types-c99.patch
|
|
|
|
@touch $@
|
|
|
|
|
2015-04-05 22:14:30 +02:00
|
|
|
.sdk_patch_1.0.1b1:
|
|
|
|
patch -d $(VENDOR_SDK_DIR_1.0.1b1) -p1 < c_types-c99.patch
|
|
|
|
@touch $@
|
|
|
|
|
2015-03-20 18:12:01 +01:00
|
|
|
.sdk_patch_1.0.0:
|
|
|
|
patch -d $(VENDOR_SDK_DIR_1.0.0) -p1 < c_types-c99.patch
|
|
|
|
@touch $@
|
|
|
|
|
2015-03-15 01:03:22 +00:00
|
|
|
.sdk_patch_0.9.6b1:
|
|
|
|
patch -d $(VENDOR_SDK_DIR_0.9.6b1) -p1 < c_types-c99.patch
|
|
|
|
@touch $@
|
|
|
|
|
2015-01-26 21:26:27 +00:00
|
|
|
.sdk_patch_0.9.5: sdk095_patch1.zip esp_iot_sdk_v0.9.5/.dir
|
|
|
|
$(UNZIP) $<
|
|
|
|
mv libmain_fix_0.9.5.a $(VENDOR_SDK_DIR)/lib/libmain.a
|
|
|
|
mv user_interface.h $(VENDOR_SDK_DIR)/include/
|
|
|
|
patch -d $(VENDOR_SDK_DIR_0.9.5) -p1 < c_types-c99.patch
|
2015-01-13 16:31:42 +00:00
|
|
|
@touch $@
|
|
|
|
|
2014-12-23 02:33:09 +02:00
|
|
|
.sdk_patch_0.9.4:
|
2015-01-17 19:54:51 +02:00
|
|
|
patch -d $(VENDOR_SDK_DIR_0.9.4) -p1 < c_types-c99.patch
|
2014-12-23 02:33:09 +02:00
|
|
|
@touch $@
|
|
|
|
|
2014-11-24 02:14:33 +02:00
|
|
|
.sdk_patch_0.9.3: esp_iot_sdk_v0.9.3_14_11_21_patch1.zip esp_iot_sdk_v0.9.3/.dir
|
2014-11-25 02:21:46 +02:00
|
|
|
$(UNZIP) $<
|
2014-11-24 02:14:33 +02:00
|
|
|
@touch $@
|
|
|
|
|
|
|
|
.sdk_patch_0.9.2: FRM_ERR_PATCH.rar esp_iot_sdk_v0.9.2/.dir
|
|
|
|
unrar x -o+ $<
|
|
|
|
cp FRM_ERR_PATCH/*.a $(VENDOR_SDK_DIR)/lib/
|
|
|
|
@touch $@
|
|
|
|
|
|
|
|
standalone: sdk sdk_patch toolchain
|
2014-11-19 00:08:26 +02:00
|
|
|
ifeq ($(STANDALONE),y)
|
2014-11-19 22:44:08 +02:00
|
|
|
@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"
|
2014-11-19 23:29:19 +02:00
|
|
|
@sed -e 's/\r//' sdk/ld/eagle.app.v6.ld | sed -e s@../ld/@@ >$(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/eagle.app.v6.ld
|
|
|
|
@sed -e 's/\r//' sdk/ld/eagle.rom.addr.v6.ld >$(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/eagle.rom.addr.v6.ld
|
2014-11-19 00:08:26 +02:00
|
|
|
endif
|
2014-11-15 23:52:44 +02:00
|
|
|
|
|
|
|
FRM_ERR_PATCH.rar:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=10"
|
2014-11-24 02:14:33 +02:00
|
|
|
esp_iot_sdk_v0.9.3_14_11_21_patch1.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=73"
|
2015-01-26 21:26:27 +00:00
|
|
|
sdk095_patch1.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=190"
|
2015-04-21 19:33:48 +03:00
|
|
|
libssl.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=316"
|
2015-05-15 17:32:03 +02:00
|
|
|
libnet80211.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=361"
|
2014-11-15 23:52:44 +02:00
|
|
|
|
2014-11-24 02:14:33 +02:00
|
|
|
sdk: $(VENDOR_SDK_DIR)/.dir
|
|
|
|
ln -snf $(VENDOR_SDK_DIR) sdk
|
|
|
|
|
|
|
|
$(VENDOR_SDK_DIR)/.dir: $(VENDOR_SDK_ZIP)
|
2014-11-25 02:21:46 +02:00
|
|
|
$(UNZIP) $^
|
2014-11-25 02:05:07 +02:00
|
|
|
-mv License $(VENDOR_SDK_DIR)
|
2014-11-15 23:52:44 +02:00
|
|
|
touch $@
|
|
|
|
|
2015-04-25 14:35:40 +01:00
|
|
|
esp_iot_sdk_v1.0.1_15_04_24.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=325"
|
|
|
|
|
2015-04-21 19:33:48 +03:00
|
|
|
esp_iot_sdk_v1.0.1_b2_15_04_10.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=293"
|
|
|
|
|
2015-04-05 22:14:30 +02:00
|
|
|
esp_iot_sdk_v1.0.1_b1_15_04_02.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=276"
|
|
|
|
|
2015-03-20 18:12:01 +01:00
|
|
|
esp_iot_sdk_v1.0.0_15_03_20.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=250"
|
|
|
|
|
2015-03-15 01:03:22 +00:00
|
|
|
esp_iot_sdk_v0.9.6_b1_15_02_15.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=220"
|
|
|
|
|
2015-01-26 21:26:27 +00:00
|
|
|
esp_iot_sdk_v0.9.5_15_01_23.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=189"
|
2015-01-13 16:31:42 +00:00
|
|
|
|
2014-12-23 02:33:09 +02:00
|
|
|
esp_iot_sdk_v0.9.4_14_12_19.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=111"
|
|
|
|
|
2014-11-24 02:14:33 +02:00
|
|
|
esp_iot_sdk_v0.9.3_14_11_21.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=72"
|
|
|
|
|
2014-11-15 23:52:44 +02:00
|
|
|
esp_iot_sdk_v0.9.2_14_10_24.zip:
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=9"
|
|
|
|
|
2014-11-19 01:45:11 +02:00
|
|
|
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
|
2014-11-19 00:10:48 +02:00
|
|
|
make -C lx106-hal -f ../Makefile _libhal
|
2014-11-15 23:52:44 +02:00
|
|
|
|
2014-11-19 00:10:48 +02:00
|
|
|
_libhal:
|
2014-11-15 23:52:44 +02:00
|
|
|
autoreconf -i
|
2014-11-19 01:45:11 +02:00
|
|
|
PATH=$(TOOLCHAIN)/bin:$(PATH) ./configure --host=xtensa-lx106-elf --prefix=$(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr
|
2014-11-15 23:52:44 +02:00
|
|
|
PATH=$(TOOLCHAIN)/bin:$(PATH) make
|
|
|
|
PATH=$(TOOLCHAIN)/bin:$(PATH) make install
|
|
|
|
|
|
|
|
|
2014-11-19 01:45:11 +02:00
|
|
|
toolchain: $(TOOLCHAIN)/bin/xtensa-lx106-elf-gcc
|
|
|
|
|
2014-11-15 23:52:44 +02:00
|
|
|
$(TOOLCHAIN)/bin/xtensa-lx106-elf-gcc: crosstool-NG/ct-ng
|
2014-11-19 00:10:48 +02:00
|
|
|
make -C crosstool-NG -f ../Makefile _toolchain
|
2014-11-15 23:52:44 +02:00
|
|
|
|
2014-11-19 00:10:48 +02:00
|
|
|
_toolchain:
|
2014-11-15 23:52:44 +02:00
|
|
|
./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
|
2014-11-20 23:48:53 +03:00
|
|
|
cat ../crosstool-config-overrides >> .config
|
2014-11-15 23:52:44 +02:00
|
|
|
./ct-ng build
|
|
|
|
|
2014-11-19 01:45:11 +02:00
|
|
|
|
|
|
|
crosstool-NG: crosstool-NG/ct-ng
|
|
|
|
|
2014-11-16 00:24:24 +02:00
|
|
|
crosstool-NG/ct-ng: crosstool-NG/bootstrap
|
2014-11-19 00:10:48 +02:00
|
|
|
make -C crosstool-NG -f ../Makefile _ct-ng
|
2014-11-15 23:52:44 +02:00
|
|
|
|
2014-11-19 00:10:48 +02:00
|
|
|
_ct-ng:
|
2014-11-15 23:52:44 +02:00
|
|
|
./bootstrap
|
|
|
|
./configure --prefix=`pwd`
|
|
|
|
make MAKELEVEL=0
|
|
|
|
make install MAKELEVEL=0
|
2014-11-16 00:24:24 +02:00
|
|
|
|
|
|
|
crosstool-NG/bootstrap:
|
|
|
|
@echo "You cloned without --recursive, fetching submodules for you."
|
|
|
|
git submodule update --init --recursive
|
2014-11-21 21:45:41 +02:00
|
|
|
|
|
|
|
|
2014-11-25 02:21:07 +02:00
|
|
|
clean: clean-sdk
|
2014-11-21 21:45:41 +02:00
|
|
|
make -C crosstool-NG clean MAKELEVEL=0
|
|
|
|
-rm -rf $(TOOLCHAIN)
|
2014-11-25 02:21:07 +02:00
|
|
|
|
|
|
|
clean-sdk:
|
|
|
|
rm -rf $(VENDOR_SDK_DIR)
|
|
|
|
rm -f sdk
|
|
|
|
rm -f .sdk_patch_$(VENDOR_SDK)
|
|
|
|
|
|
|
|
clean-sysroot:
|
|
|
|
rm -rf $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/lib/*
|
|
|
|
rm -rf $(TOOLCHAIN)/xtensa-lx106-elf/sysroot/usr/include/*
|