2
2
#
3
3
.NOTPARALLEL :
4
4
5
+ TOOLCHAIN_VERSION: =20181106.0
6
+
5
7
# SDK base version, as released by Espressif
6
8
SDK_BASE_VER: =2.2.1
7
9
@@ -47,7 +49,7 @@ ifeq ($(OS),Windows_NT)
47
49
OBJCOPY = xt-objcopy
48
50
# MAKE = xt-make
49
51
CCFLAGS += --rename-section .text=.irom0.text --rename-section .literal=.irom0.literal
50
- else
52
+ else
51
53
# It is gcc, may be cygwin
52
54
# Can we use -fdata-sections?
53
55
CCFLAGS += -ffunction-sections -fno-jump-tables -fdata-sections
@@ -73,11 +75,13 @@ ifeq ($(OS),Windows_NT)
73
75
else
74
76
# We are under other system, may be Linux. Assume using gcc.
75
77
# Can we use -fdata-sections?
78
+ PLATFORM:=linux-x86_64
76
79
ifndef COMPORT
77
80
ESPPORT = /dev/ttyUSB0
78
81
else
79
82
ESPPORT = $(COMPORT)
80
83
endif
84
+ export PATH := $(PATH):$(TOP_DIR)/tools/toolchains/esp8266-$(PLATFORM)-$(TOOLCHAIN_VERSION)/bin/
81
85
CCFLAGS += -ffunction-sections -fno-jump-tables -fdata-sections
82
86
AR = xtensa-lx106-elf-ar
83
87
CC = $(WRAPCC) xtensa-lx106-elf-gcc
@@ -145,9 +149,9 @@ endif
145
149
endif
146
150
147
151
#
148
- # Note:
152
+ # Note:
149
153
# https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
150
- # If you add global optimize options like "-O2" here
154
+ # If you add global optimize options like "-O2" here
151
155
# they will override "-Os" defined above.
152
156
# "-Os" should be used to reduce code size
153
157
#
@@ -161,7 +165,7 @@ CCFLAGS += \
161
165
-nostdlib \
162
166
-mlongcalls \
163
167
-mtext-section-literals
164
- # -Wall
168
+ # -Wall
165
169
166
170
CFLAGS = $(CCFLAGS ) $(DEFINES ) $(EXTRA_CCFLAGS ) $(STD_CFLAGS ) $(INCLUDES )
167
171
DFLAGS = $(CCFLAGS ) $(DDEFINES ) $(EXTRA_CCFLAGS ) $(STD_CFLAGS ) $(INCLUDES )
@@ -191,7 +195,7 @@ DEP_LIBS_$(1) = $$(foreach lib,$$(filter %.a,$$(COMPONENTS_$(1))),$$(dir $$(lib)
191
195
DEP_OBJS_$(1 ) = $$(foreach obj,$$(filter % .o,$$(COMPONENTS_$(1 ) ) ) ,$$(dir $$(obj ) )$$(OBJODIR ) /$$(notdir $$(obj ) ) )
192
196
$$(IMAGEODIR ) /$(1 ) .out: $$(OBJS ) $$(DEP_OBJS_$(1 ) ) $$(DEP_LIBS_$(1 ) ) $$(DEPENDS_$(1 ) )
193
197
@mkdir -p $$(IMAGEODIR )
194
- $$(CC ) $$(LDFLAGS ) $$(if $$(LINKFLAGS_$(1 ) ) ,$$(LINKFLAGS_$(1 ) ) ,$$(LINKFLAGS_DEFAULT ) $$(OBJS ) $$(DEP_OBJS_$(1 ) ) $$(DEP_LIBS_$(1 ) ) ) -o $$@
198
+ $$(CC ) $$(LDFLAGS ) $$(if $$(LINKFLAGS_$(1 ) ) ,$$(LINKFLAGS_$(1 ) ) ,$$(LINKFLAGS_DEFAULT ) $$(OBJS ) $$(DEP_OBJS_$(1 ) ) $$(DEP_LIBS_$(1 ) ) ) -o $$@
195
199
endef
196
200
197
201
$(BINODIR ) /% .bin : $(IMAGEODIR ) /% .out
@@ -204,16 +208,32 @@ $(BINODIR)/%.bin: $(IMAGEODIR)/%.out
204
208
# Should be done in top-level makefile only
205
209
#
206
210
207
- all : sdk_pruned pre_build .subdirs $(OBJS ) $(OLIBS ) $(OIMAGES ) $(OBINS ) $(SPECIAL_MKTARGETS )
211
+ all : toolchain sdk_pruned pre_build .subdirs $(OBJS ) $(OLIBS ) $(OIMAGES ) $(OBINS ) $(SPECIAL_MKTARGETS )
208
212
209
213
.PHONY : sdk_extracted
210
214
.PHONY : sdk_patched
211
215
.PHONY : sdk_pruned
216
+ .PHONY : toolchain
212
217
213
218
sdk_extracted : $(TOP_DIR ) /sdk/.extracted-$(SDK_BASE_VER )
214
219
sdk_patched : sdk_extracted $(TOP_DIR ) /sdk/.patched-$(SDK_VER )
215
220
sdk_pruned : $(SDK_DIR_DEPENDS ) $(TOP_DIR ) /sdk/.pruned-$(SDK_VER )
216
221
222
+ ifeq ($(OS ) ,Windows_NT)
223
+ toolchain :
224
+ else
225
+ toolchain : $(TOP_DIR ) /tools/toolchains/esp8266-$(PLATFORM ) -$(TOOLCHAIN_VERSION ) /bin/xtensa-lx106-elf-gcc
226
+
227
+ $(TOP_DIR ) /tools/toolchains/esp8266-$(PLATFORM ) -$(TOOLCHAIN_VERSION ) /bin/xtensa-lx106-elf-gcc : $(TOP_DIR ) /cache/toolchain-esp8266-$(PLATFORM ) -$(TOOLCHAIN_VERSION ) .tar.xz
228
+ mkdir -p $(TOP_DIR ) /tools/toolchains/
229
+ tar -xJf $< -C $(TOP_DIR ) /tools/toolchains/
230
+ touch $@
231
+
232
+ $(TOP_DIR ) /cache/toolchain-esp8266-$(PLATFORM ) -$(TOOLCHAIN_VERSION ) .tar.xz :
233
+ mkdir -p $(TOP_DIR ) /cache
234
+ wget --tries=10 --timeout=15 --waitretry=30 --read-timeout=20 --retry-connrefused https://github.com/jmattsson/esp-toolchains/releases/download/$(PLATFORM ) -$(TOOLCHAIN_VERSION ) /toolchain-esp8266-$(PLATFORM ) -$(TOOLCHAIN_VERSION ) .tar.xz -O $@ || { rm -f " $@ " ; exit 1; }
235
+ endif
236
+
217
237
$(TOP_DIR ) /sdk/.extracted-$(SDK_BASE_VER ) : $(TOP_DIR ) /cache/v$(SDK_FILE_VER ) .zip
218
238
mkdir -p " $( dir $@ ) "
219
239
(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)
0 commit comments