diff --git a/Makefile b/Makefile index 2af0707c..07a2ff9d 100644 --- a/Makefile +++ b/Makefile @@ -2,23 +2,25 @@ # .NOTPARALLEL: -# SDK version NodeMCU is locked to -SDK_VER:=2.2.0 +# SDK base version, as released by Espressif +SDK_BASE_VER:=2.2.0 -# no patch: SDK_BASE_VER equals SDK_VER and sdk dir depends on sdk_extracted -SDK_BASE_VER:=$(SDK_VER) -SDK_DIR_DEPENDS:=sdk_extracted -# with patch: SDK_BASE_VER differs from SDK_VER and sdk dir depends on sdk_patched -#SDK_BASE_VER:=1.5.4 -#SDK_DIR_DEPENDS:=sdk_patched +# no patch: SDK_VER equals SDK_BASE_VER and sdk dir depends on sdk_extracted +#SDK_VER:=$(SDK_BASE_VER) +#SDK_DIR_DEPENDS:=sdk_extracted + +# with patch: SDK_VER differs from SDK_BASE_VER and sdk dir depends on sdk_patched +SDK_PATCH_VER:=f8f27ce +SDK_VER:=$(SDK_BASE_VER)-$(SDK_PATCH_VER) +SDK_DIR_DEPENDS:=sdk_patched SDK_FILE_VER:=$(SDK_BASE_VER) SDK_FILE_SHA1:=8b63f1066d3560ff77f119e8ba30a9c39e7baaad -#SDK_PATCH_VER:=$(SDK_VER)_patch_20160704 -#SDK_PATCH_SHA1:=388d9e91df74e3b49fca126da482cf822cf1ebf1 +SDK_PATCH_SHA1:=0bc21ec77b08488f04d3e1c9d161b711d07201a8 # Ensure we search "our" SDK before the tool-chain's SDK (if any) TOP_DIR:=$(abspath $(dir $(lastword $(MAKEFILE_LIST)))) -SDK_DIR:=$(TOP_DIR)/sdk/esp_iot_sdk_v$(SDK_VER) +SDK_REL_DIR=sdk/esp_iot_sdk_v$(SDK_VER) +SDK_DIR:=$(TOP_DIR)/$(SDK_REL_DIR) CCFLAGS:= -I$(TOP_DIR)/sdk-overrides/include -I$(TOP_DIR)/app/include/lwip/app -I$(SDK_DIR)/include LDFLAGS:= -L$(SDK_DIR)/lib -L$(SDK_DIR)/ld $(LDFLAGS) @@ -202,38 +204,41 @@ $(BINODIR)/%.bin: $(IMAGEODIR)/%.out # Should be done in top-level makefile only # -all: $(SDK_DIR_DEPENDS) pre_build .subdirs $(OBJS) $(OLIBS) $(OIMAGES) $(OBINS) $(SPECIAL_MKTARGETS) +all: sdk_pruned pre_build .subdirs $(OBJS) $(OLIBS) $(OIMAGES) $(OBINS) $(SPECIAL_MKTARGETS) .PHONY: sdk_extracted .PHONY: sdk_patched +.PHONY: sdk_pruned sdk_extracted: $(TOP_DIR)/sdk/.extracted-$(SDK_BASE_VER) sdk_patched: sdk_extracted $(TOP_DIR)/sdk/.patched-$(SDK_VER) +sdk_pruned: $(SDK_DIR_DEPENDS) $(TOP_DIR)/sdk/.pruned-$(SDK_VER) $(TOP_DIR)/sdk/.extracted-$(SDK_BASE_VER): $(TOP_DIR)/cache/v$(SDK_FILE_VER).zip mkdir -p "$(dir $@)" - (cd "$(dir $@)" && rm -fr esp_iot_sdk_v$(SDK_VER) ESP8266_NONOS_SDK-$(SDK_VER) && unzip $(TOP_DIR)/cache/v$(SDK_FILE_VER).zip ESP8266_NONOS_SDK-$(SDK_VER)/lib/* ESP8266_NONOS_SDK-$(SDK_VER)/ld/eagle.rom.addr.v6.ld ESP8266_NONOS_SDK-$(SDK_VER)/include/* ESP8266_NONOS_SDK-$(SDK_VER)/bin/esp_init_data_default_v05.bin) - mv $(dir $@)/ESP8266_NONOS_SDK-$(SDK_VER) $(dir $@)/esp_iot_sdk_v$(SDK_VER) + (cd "$(dir $@)" && rm -fr esp_iot_sdk_v$(SDK_VER) ESP8266_NONOS_SDK-$(SDK_BASE_VER) && unzip $(TOP_DIR)/cache/v$(SDK_FILE_VER).zip ESP8266_NONOS_SDK-$(SDK_BASE_VER)/lib/* ESP8266_NONOS_SDK-$(SDK_BASE_VER)/ld/eagle.rom.addr.v6.ld ESP8266_NONOS_SDK-$(SDK_BASE_VER)/include/* ESP8266_NONOS_SDK-$(SDK_BASE_VER)/bin/esp_init_data_default_v05.bin) + mv $(dir $@)/ESP8266_NONOS_SDK-$(SDK_BASE_VER) $(dir $@)/esp_iot_sdk_v$(SDK_BASE_VER) + touch $@ + +$(TOP_DIR)/sdk/.patched-$(SDK_VER): $(TOP_DIR)/cache/$(SDK_PATCH_VER).patch + mv $(dir $@)/esp_iot_sdk_v$(SDK_BASE_VER) $(dir $@)/esp_iot_sdk_v$(SDK_VER) + git apply --verbose -p1 --exclude='*VERSION' --exclude='*bin/at*' --directory=$(SDK_REL_DIR) $< + touch $@ + +$(TOP_DIR)/sdk/.pruned-$(SDK_VER): rm -f $(SDK_DIR)/lib/liblwip.a $(SDK_DIR)/lib/libssl.a $(SDK_DIR)/lib/libmbedtls.a ar d $(SDK_DIR)/lib/libmain.a time.o ar d $(SDK_DIR)/lib/libc.a lib_a-time.o touch $@ -$(TOP_DIR)/sdk/.patched-$(SDK_VER): $(TOP_DIR)/cache/esp_iot_sdk_v$(SDK_PATCH_VER).zip - mkdir -p "$(dir $@)/patch" - (cd "$(dir $@)/patch" && unzip $(TOP_DIR)/cache/esp_iot_sdk_v$(SDK_PATCH_VER)*.zip *.a esp_init_data_default.bin && mv *.a $(SDK_DIR)/lib/ && mv esp_init_data_default.bin $(SDK_DIR)/bin/) - rmdir $(dir $@)/patch - rm -f $(SDK_DIR)/lib/liblwip.a - touch $@ - $(TOP_DIR)/cache/v$(SDK_FILE_VER).zip: mkdir -p "$(dir $@)" wget --tries=10 --timeout=15 --waitretry=30 --read-timeout=20 --retry-connrefused https://github.com/espressif/ESP8266_NONOS_SDK/archive/v$(SDK_FILE_VER).zip -O $@ || { rm -f "$@"; exit 1; } (echo "$(SDK_FILE_SHA1) $@" | sha1sum -c -) || { rm -f "$@"; exit 1; } -$(TOP_DIR)/cache/esp_iot_sdk_v$(SDK_PATCH_VER).zip: +$(TOP_DIR)/cache/$(SDK_PATCH_VER).patch: mkdir -p "$(dir $@)" - wget --tries=10 --timeout=15 --waitretry=30 --read-timeout=20 --retry-connrefused http://espressif.com/sites/default/files/sdks/esp8266_nonos_sdk_v$(SDK_PATCH_VER).zip -O $@ || { rm -f "$@"; exit 1; } + wget --tries=10 --timeout=15 --waitretry=30 --read-timeout=20 --retry-connrefused "https://github.com/espressif/ESP8266_NONOS_SDK/compare/v$(SDK_BASE_VER)...$(SDK_PATCH_VER).patch" -O $@ || { rm -f "$@"; exit 1; } (echo "$(SDK_PATCH_SHA1) $@" | sha1sum -c -) || { rm -f "$@"; exit 1; } clean: