3 HOSTARCH := $(shell uname -m | \
4 sed -e s/i.86/x86_32/ \
11 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
12 sed -e 's/\(cygwin\).*/cygwin/')
14 ifneq ($(HOSTOS), darwin)
15 ifneq ($(HOSTOS), linux)
16 $(error Error! Unsupported host operating system/arch: "$(HOSTOS)-$(HOSTARCH)")
22 export BUILD_TOPDIR=$(PWD)
23 export STAGING_DIR=$(BUILD_TOPDIR)/tmp
25 # --------------------------------------------------------------------------
26 # Define absolute path to your toolchain directory here, for example:
28 # export TOOLCHAIN_DIR:=/home/user/toolchain-mips_34kc_gcc-5.4.0_musl-1.1.15
29 # export PATH:=$(TOOLCHAIN_DIR)/bin:$(PATH)
30 # --------------------------------------------------------------------------
33 CROSS_COMPILE = mips-openwrt-linux-musl-
37 export MAKECMD=make --silent --no-print-directory ARCH=mips
39 # boot delay (time to autostart boot command)
40 export CONFIG_BOOTDELAY=1
42 # uncomment following line, to build RAM version images (without low level initialization)
43 #export CONFIG_SKIP_LOWLEVEL_INIT=1
45 tplink_mr3020: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-mr3020
46 tplink_mr3020: export CONFIG_MAX_UBOOT_SIZE_KB=123
47 ifndef CONFIG_SKIP_LOWLEVEL_INIT
48 tplink_mr3020: export COMPRESSED_UBOOT=1
51 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) mr3020_config
52 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
53 @make --no-print-directory show_size
55 tplink_wr703n: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wr703n
56 tplink_wr703n: export CONFIG_MAX_UBOOT_SIZE_KB=123
57 ifndef CONFIG_SKIP_LOWLEVEL_INIT
58 tplink_wr703n: export COMPRESSED_UBOOT=1
61 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wr703n_config
62 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
63 @make --no-print-directory show_size
65 tplink_wr720n_v3_CN: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wr720n_v3_CN
66 tplink_wr720n_v3_CN: export CONFIG_MAX_UBOOT_SIZE_KB=123
67 ifndef CONFIG_SKIP_LOWLEVEL_INIT
68 tplink_wr720n_v3_CN: export COMPRESSED_UBOOT=1
71 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wr720n_v3_CN_config
72 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
73 @make --no-print-directory show_size
75 tplink_wr710n: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wr710n
76 tplink_wr710n: export CONFIG_MAX_UBOOT_SIZE_KB=123
77 ifndef CONFIG_SKIP_LOWLEVEL_INIT
78 tplink_wr710n: export COMPRESSED_UBOOT=1
81 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wr710n_config
82 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
83 @make --no-print-directory show_size
85 tplink_mr3040: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-mr3040
86 tplink_mr3040: export CONFIG_MAX_UBOOT_SIZE_KB=123
87 ifndef CONFIG_SKIP_LOWLEVEL_INIT
88 tplink_mr3040: export COMPRESSED_UBOOT=1
91 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) mr3040_config
92 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
93 @make --no-print-directory show_size
95 tplink_mr10u: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-mr10u
96 tplink_mr10u: export CONFIG_MAX_UBOOT_SIZE_KB=123
97 ifndef CONFIG_SKIP_LOWLEVEL_INIT
98 tplink_mr10u: export COMPRESSED_UBOOT=1
101 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) mr10u_config
102 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
103 @make --no-print-directory show_size
105 tplink_mr13u: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-mr13u
106 tplink_mr13u: export CONFIG_MAX_UBOOT_SIZE_KB=123
107 ifndef CONFIG_SKIP_LOWLEVEL_INIT
108 tplink_mr13u: export COMPRESSED_UBOOT=1
111 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) mr13u_config
112 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
113 @make --no-print-directory show_size
115 tplink_wr740n_v4: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wr740n_v4
116 tplink_wr740n_v4: export CONFIG_MAX_UBOOT_SIZE_KB=123
117 ifndef CONFIG_SKIP_LOWLEVEL_INIT
118 tplink_wr740n_v4: export COMPRESSED_UBOOT=1
121 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wr740n_v4_config
122 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
123 @make --no-print-directory show_size
125 tplink_mr3220_v2: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-mr3220_v2
126 tplink_mr3220_v2: export CONFIG_MAX_UBOOT_SIZE_KB=123
127 ifndef CONFIG_SKIP_LOWLEVEL_INIT
128 tplink_mr3220_v2: export COMPRESSED_UBOOT=1
131 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) mr3220_v2_config
132 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
133 @make --no-print-directory show_size
135 tplink_wdr3600_43x0: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wdr3600-43x0
136 tplink_wdr3600_43x0: export CONFIG_MAX_UBOOT_SIZE_KB=123
137 ifndef CONFIG_SKIP_LOWLEVEL_INIT
138 tplink_wdr3600_43x0: export COMPRESSED_UBOOT=1
140 tplink_wdr3600_43x0: export ETH_CONFIG=_s17
142 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wdr3600_43x0_config
143 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
144 @make --no-print-directory show_size
146 tplink_wdr3500: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wdr3500
147 tplink_wdr3500: export CONFIG_MAX_UBOOT_SIZE_KB=123
148 ifndef CONFIG_SKIP_LOWLEVEL_INIT
149 tplink_wdr3500: export COMPRESSED_UBOOT=1
151 tplink_wdr3500: export ETH_CONFIG=_s27
153 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wdr3500_config
154 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
155 @make --no-print-directory show_size
157 tplink_mr3420_v2: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-mr3420_v2
158 tplink_mr3420_v2: export CONFIG_MAX_UBOOT_SIZE_KB=123
159 ifndef CONFIG_SKIP_LOWLEVEL_INIT
160 tplink_mr3420_v2: export COMPRESSED_UBOOT=1
162 tplink_mr3420_v2: export ETH_CONFIG=_s27
164 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) mr3420_v2_config
165 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
166 @make --no-print-directory show_size
168 tplink_wr841n_v8: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wr841n_v8
169 tplink_wr841n_v8: export CONFIG_MAX_UBOOT_SIZE_KB=123
170 ifndef CONFIG_SKIP_LOWLEVEL_INIT
171 tplink_wr841n_v8: export COMPRESSED_UBOOT=1
173 tplink_wr841n_v8: export ETH_CONFIG=_s27
175 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wr841n_v8_config
176 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
177 @make --no-print-directory show_size
179 tplink_wr841n_v9: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wr841n_v9
180 tplink_wr841n_v9: export CONFIG_MAX_UBOOT_SIZE_KB=123
181 ifndef CONFIG_SKIP_LOWLEVEL_INIT
182 tplink_wr841n_v9: export COMPRESSED_UBOOT=1
184 tplink_wr841n_v9: export ETH_CONFIG=_s27
186 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wr841n_v9_config
187 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
188 @make --no-print-directory show_size
190 tplink_wa830re_v2_wa801nd_v2: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wa830re_v2_tl-wa801nd_v2
191 tplink_wa830re_v2_wa801nd_v2: export CONFIG_MAX_UBOOT_SIZE_KB=123
192 ifndef CONFIG_SKIP_LOWLEVEL_INIT
193 tplink_wa830re_v2_wa801nd_v2: export COMPRESSED_UBOOT=1
195 tplink_wa830re_v2_wa801nd_v2: export ETH_CONFIG=_s27
196 tplink_wa830re_v2_wa801nd_v2:
197 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wa830re_v2_wa801nd_v2_config
198 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
199 @make --no-print-directory show_size
201 tplink_wr820n_CN: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wr820n_CN
202 tplink_wr820n_CN: export CONFIG_MAX_UBOOT_SIZE_KB=123
203 ifndef CONFIG_SKIP_LOWLEVEL_INIT
204 tplink_wr820n_CN: export COMPRESSED_UBOOT=1
206 tplink_wr820n_CN: export ETH_CONFIG=_s27
208 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wr820n_CN_config
209 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
210 @make --no-print-directory show_size
212 tplink_wr802n: export UBOOT_FILE_NAME=uboot_for_tp-link_tl-wr802n
213 tplink_wr802n: export CONFIG_MAX_UBOOT_SIZE_KB=123
214 ifndef CONFIG_SKIP_LOWLEVEL_INIT
215 tplink_wr802n: export COMPRESSED_UBOOT=1
217 tplink_wr802n: export ETH_CONFIG=_s27
219 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) wr802n_config
220 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
221 @make --no-print-directory show_size
223 dlink_dir505: export UBOOT_FILE_NAME=uboot_for_d-link_dir-505
224 dlink_dir505: export CONFIG_MAX_UBOOT_SIZE_KB=64
225 ifndef CONFIG_SKIP_LOWLEVEL_INIT
226 dlink_dir505: export COMPRESSED_UBOOT=1
229 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) dir505_config
230 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
231 @make --no-print-directory show_size
233 gs-oolite_v1_dev: export UBOOT_FILE_NAME=uboot_for_gs-oolite_v1_dev
234 gs-oolite_v1_dev: export CONFIG_MAX_UBOOT_SIZE_KB=123
235 ifndef CONFIG_SKIP_LOWLEVEL_INIT
236 gs-oolite_v1_dev: export COMPRESSED_UBOOT=1
239 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) gs_oolite_v1_dev_config
240 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
241 @make --no-print-directory show_size
243 8devices_carambola2: export UBOOT_FILE_NAME=uboot_for_8devices_carambola2
244 8devices_carambola2: export CONFIG_MAX_UBOOT_SIZE_KB=256
246 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) carambola2_config
247 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
248 @make --no-print-directory show_size
250 dragino_v2_ms14: export UBOOT_FILE_NAME=uboot_for_dragino_v2_ms14
251 dragino_v2_ms14: export CONFIG_MAX_UBOOT_SIZE_KB=192
252 dragino_v2_ms14: export DEVICE_VENDOR=dragino
254 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) dragino_v2_ms14_config
255 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
256 @make --no-print-directory show_size
258 black_swift_board: export UBOOT_FILE_NAME=uboot_for_black_swift_board
259 black_swift_board: export CONFIG_MAX_UBOOT_SIZE_KB=128
260 black_swift_board: export COMPRESSED_UBOOT=1
261 black_swift_board: export DEVICE_VENDOR=SE
263 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) black_swift_board_config
264 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
265 @make --no-print-directory show_size
267 villagetelco_mp2: export UBOOT_FILE_NAME=uboot_for_villagetelco_mp2
268 villagetelco_mp2: export CONFIG_MAX_UBOOT_SIZE_KB=192
269 villagetelco_mp2: export DEVICE_VENDOR=villagetelco
271 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) villagetelco_mp2_config
272 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
273 @make --no-print-directory show_size
275 gl-inet: export UBOOT_FILE_NAME=uboot_for_gl-inet
276 gl-inet: export CONFIG_MAX_UBOOT_SIZE_KB=123
277 ifndef CONFIG_SKIP_LOWLEVEL_INIT
278 gl-inet: export COMPRESSED_UBOOT=1
281 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) gl-inet_config
282 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
283 @make --no-print-directory show_size
285 wallys_dr531: export UBOOT_FILE_NAME=uboot_for_wallys_dr531
286 wallys_dr531: export CONFIG_MAX_UBOOT_SIZE_KB=192
287 ifndef CONFIG_SKIP_LOWLEVEL_INIT
288 wallys_dr531: export COMPRESSED_UBOOT=1
290 wallys_dr531: export ETH_CONFIG=_s27
292 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) dr531_config
293 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
294 @make --no-print-directory show_size
296 zbtlink_zbt_we1526: export UBOOT_FILE_NAME=uboot_for_zbtlink_zbt-we1526
297 zbtlink_zbt_we1526: export CONFIG_MAX_UBOOT_SIZE_KB=256
298 zbtlink_zbt_we1526: export ETH_CONFIG=_s27
300 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) zbt-we1526_config
301 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) ENDIANNESS=-EB V=1 all
302 @make --no-print-directory show_size
304 ifdef CONFIG_SKIP_LOWLEVEL_INIT
305 show_size: export UBOOT_FILE_NAME_SUFFIX=__RAM
308 ifdef COMPRESSED_UBOOT
309 @cp $(BUILD_TOPDIR)/u-boot/tuboot.bin $(BUILD_TOPDIR)/bin/temp.bin
311 @cp $(BUILD_TOPDIR)/u-boot/u-boot.bin $(BUILD_TOPDIR)/bin/temp.bin
314 ifndef CONFIG_SKIP_LOWLEVEL_INIT
315 @echo "> Preparing $(CONFIG_MAX_UBOOT_SIZE_KB)KB file filled with 0xFF..."
316 @`tr "\000" "\377" < /dev/zero | dd ibs=1k count=$(CONFIG_MAX_UBOOT_SIZE_KB) of=$(BUILD_TOPDIR)/bin/$(UBOOT_FILE_NAME)$(UBOOT_FILE_NAME_SUFFIX).bin 2> /dev/null`
317 @echo "> Copying U-Boot image..."
318 @`dd if=$(BUILD_TOPDIR)/bin/temp.bin of=$(BUILD_TOPDIR)/bin/$(UBOOT_FILE_NAME)$(UBOOT_FILE_NAME_SUFFIX).bin conv=notrunc 2> /dev/null`
319 @`rm $(BUILD_TOPDIR)/bin/temp.bin`
321 @echo "> Copying U-Boot image..."
322 @`mv $(BUILD_TOPDIR)/bin/temp.bin $(BUILD_TOPDIR)/bin/$(UBOOT_FILE_NAME)$(UBOOT_FILE_NAME_SUFFIX).bin`
324 @echo "> U-Boot image ready, size:" `wc -c < $(BUILD_TOPDIR)/bin/$(UBOOT_FILE_NAME)$(UBOOT_FILE_NAME_SUFFIX).bin`" bytes"
325 @`md5sum $(BUILD_TOPDIR)/bin/$(UBOOT_FILE_NAME)$(UBOOT_FILE_NAME_SUFFIX).bin | awk '{print $$1}' | tr -d '\n' > $(BUILD_TOPDIR)/bin/$(UBOOT_FILE_NAME)$(UBOOT_FILE_NAME_SUFFIX).md5`
326 @`echo ' *'$(UBOOT_FILE_NAME)$(UBOOT_FILE_NAME_SUFFIX).bin >> $(BUILD_TOPDIR)/bin/$(UBOOT_FILE_NAME)$(UBOOT_FILE_NAME_SUFFIX).md5`
327 # Do not check image size for RAM version
328 ifndef CONFIG_SKIP_LOWLEVEL_INIT
329 @if [ "`wc -c < $(BUILD_TOPDIR)/bin/$(UBOOT_FILE_NAME)$(UBOOT_FILE_NAME_SUFFIX).bin`" -gt "`echo '$(CONFIG_MAX_UBOOT_SIZE_KB)*1024' | bc`" ]; then \
330 echo -e "\e[31m\n**************************************************"; \
331 echo "* WARNING: U-BOOT IMAGE SIZE IS TOO BIG! *"; \
332 echo -e "**************************************************"; \
338 @cd $(BUILD_TOPDIR)/u-boot/ && $(MAKECMD) --no-print-directory distclean
339 @rm -f $(BUILD_TOPDIR)/u-boot/httpd/fsdata.c
342 @echo -e "\e[32m> Removing all binary images...\e[0m"
343 @rm -f $(BUILD_TOPDIR)/bin/*.bin
344 @rm -f $(BUILD_TOPDIR)/bin/*.md5