Add support for TP-Link TL-WR810N (QCA9531 based)
[oweals/u-boot_mod.git] / Makefile
1 #
2 # Copyright (C) 2016 Piotr Dymacz <piotr@dymacz.pl>
3 #
4 # SPDX-License-Identifier: GPL-2.0
5 #
6
7 SHELL = bash
8
9 HOSTARCH := $(shell uname -m |        \
10               sed -e s/i.86/x86_32/   \
11                   -e s/sun4u/sparc64/ \
12                   -e s/arm.*/arm/     \
13                   -e s/sa110/arm/     \
14                   -e s/powerpc/ppc/   \
15                   -e s/macppc/ppc/)
16
17 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
18             sed -e 's/\(cygwin\).*/cygwin/')
19
20 ifneq ($(HOSTOS), darwin)
21   ifneq ($(HOSTOS), linux)
22     $(error Error! Unsupported host operating system/arch: "$(HOSTOS)-$(HOSTARCH)")
23   endif
24 endif
25
26 export HOSTOS
27 export HOSTARCH
28 export BUILD_TOPDIR = $(PWD)
29 export STAGING_DIR  = $(BUILD_TOPDIR)/tmp
30 export SOURCE_DIR   = $(BUILD_TOPDIR)/u-boot
31 export BIN_DIR      = $(BUILD_TOPDIR)/bin
32 export SUB_MAKE_CMD = $(MAKE) --silent --no-print-directory \
33                       ARCH=mips V=1 SHELL=$(SHELL)
34
35 # ==========================================================================
36 # You can override some default configuration options below or pass them on
37 # command line, for example:
38 # make ... IMG_SIZE=256 IMG_LZMA=0 CROSS_COMPILE=...
39
40 # Set to 1 if you want to build RAM-loadable image, without low level
41 # initialization of the hardware (PLL/clocks, DRAM):
42 # IMG_RAM =
43
44 # You can change limit of the image size in KB with below option (image will
45 # be filled up to the selected size with 0xFF):
46 # IMG_SIZE =
47
48 # If you don't want LZMA compressed image, set below option to 1 (by default
49 # images for all targets are LZMA compressed):
50 # IMG_LZMA =
51
52 # Define _absolute_ path to your toolchain directory, for example:
53 # export TOOLCHAIN_DIR:=/home/user/toolchain-mips_24kc_gcc-5.4.0_musl-1.1.15
54 # export PATH:=$(TOOLCHAIN_DIR)/bin:$(PATH)
55
56 ifndef CROSS_COMPILE
57   CROSS_COMPILE = mips-openwrt-linux-musl-
58 endif
59 export CROSS_COMPILE
60
61 # ==========================================================================
62
63 # =======================
64 # CUSTOM HELPER FUNCTIONS
65 # =======================
66
67 define echo_green
68   echo -e "\e[92m$(1)\e[0m"
69 endef
70
71 define echo_red
72   echo -e "\e[91m$(1)\e[0m"
73 endef
74
75 define echo_blue
76   echo -e "\e[96m$(1)\e[0m"
77 endef
78
79 # $(1): size
80 define img_size
81 $(if $(IMG_SIZE),$(strip $(IMG_SIZE)),$(strip $(1)))
82 endef
83
84 # $(1): value
85 define is_lzma
86 $(if $(IMG_LZMA),\
87   $(if $(filter $(strip $(IMG_LZMA)),1),1,0),\
88   $(if $(filter $(strip $(1)),1),1,0)\
89 )
90 endef
91
92 # $(1): file extension
93 define img_name
94 u-boot_mod__$(shell date +"%Y%m%d")__$@$(if \
95 $(filter $(IMG_RAM),1),__RAM-LOAD-ONLY)$(if $(1),.$(1))
96 endef
97
98 define md5_sum
99   $(call echo_green,Calculating MD5 sum for the final image...)
100
101   md5sum $(BIN_DIR)/$(call img_name,bin) | \
102          awk '{print $$1}' | \
103          tr -d '\n' > $(BIN_DIR)/$(call img_name).md5
104
105   echo ' *'$(call img_name,bin) >> $(BIN_DIR)/$(call img_name,md5)
106 endef
107
108 # $(1): size
109 define padded_img
110   $(call echo_green,Preparing $(1) KB image padded with 0xFF...)
111   tr "\000" "\377" < /dev/zero | dd ibs=1k count=$(1) \
112      of=$(BIN_DIR)/$(call img_name,bin) 2> /dev/null
113 endef
114
115 define final_img
116   $(call echo_green,Preparing final image...)
117   dd if=$(BIN_DIR)/temp.bin of=$(BIN_DIR)/$(call img_name,bin) \
118      conv=notrunc 2> /dev/null
119
120   rm -f $(BIN_DIR)/temp.bin
121 endef
122
123 # $(1): path to image
124 # $(2): size limit in KB
125 define size_chk
126   $(call echo_green,Checking size of the image...)
127
128   if [ `wc -c < $(1)` -gt $$(($(2) * 1024)) ]; then \
129     echo; \
130     $(call echo_red,  ======================); \
131     $(call echo_red,  IMAGE SIZE IS TOO BIG!); \
132     $(call echo_red,  ======================); \
133     echo; \
134     rm -f $(1); \
135     exit 1; \
136   fi;
137 endef
138
139 # $(1): filename of image to copy
140 # $(2): image size limit (check if set)
141 define copy_img
142   echo;
143   $(call echo_green,Copying compiled image...)
144
145   cp $(SOURCE_DIR)/$(strip $(1)).bin $(BIN_DIR)/temp.bin
146   $(if $(2),$(call size_chk,$(BIN_DIR)/temp.bin,$(2)))
147 endef
148
149 # $(1): size limit in KB
150 # $(2): if set to 1, use LZMA
151 # $(3): other parameters passed to subdir make
152 define build
153   args="IMG_SIZE=$$((1024*$(call img_size,$(1)))) \
154         IMG_LZMA=$(strip $(call is_lzma,$(2))) \
155         $(strip $(3))"; \
156   cd $(SOURCE_DIR) && \
157      $(SUB_MAKE_CMD) $@ $$args && \
158      $(SUB_MAKE_CMD) all $$args
159
160   $(if $(filter $(IMG_RAM),1),\
161     $(call copy_img,u-boot), \
162     $(if $(filter $(strip $(call is_lzma,$(2))),1), \
163       $(call copy_img,tuboot,$(call img_size,$(1))), \
164       $(call copy_img,u-boot,$(call img_size,$(1))) \
165     ) \
166   )
167
168   $(if $(filter $(IMG_RAM),1),,$(call padded_img,$(1)))
169   $(call final_img)
170   $(call md5_sum)
171   echo;
172   $(call echo_green,DONE!)
173   $(call echo_green,Image 'bin/$(call img_name,bin)' is ready!)
174
175   if [ "x$$IMG_RAM" = "x1" ]; then \
176     echo; \
177     $(call echo_blue,  ================================); \
178     $(call echo_blue,  THIS IMAGE IS ONLY FOR RAM LOAD!); \
179     $(call echo_blue,  DO NOT WRITE IT INTO FLASH CHIP!); \
180     $(call echo_blue,  ================================); \
181     echo; \
182   fi;
183 endef
184
185 # ===========================================
186 # TARGETS IN ALPHABETICAL ORDER, SHARED FIRST
187 # ===========================================
188
189 COMMON_AR933X_TARGETS = \
190         gainstrong_oolite_v1_dev \
191         gl-innovations_gl-inet-6416 \
192         tp-link_tl-mr10u \
193         tp-link_tl-mr13u \
194         tp-link_tl-mr3020 \
195         tp-link_tl-mr3040 \
196         tp-link_tl-mr3220_v2 \
197         tp-link_tl-wr703n \
198         tp-link_tl-wr710n \
199         tp-link_tl-wr720n_v3_CN \
200         tp-link_tl-wr740n_v4
201
202 $(COMMON_AR933X_TARGETS):
203         @$(call build,123,1)
204
205 COMMON_ETHS27_TARGETS = \
206         tp-link_tl-mr3420_v2 \
207         tp-link_tl-wa801nd_v2 \
208         tp-link_tl-wa830re_v2 \
209         tp-link_tl-wdr3500 \
210         tp-link_tl-wr802n \
211         tp-link_tl-wr810n \
212         tp-link_tl-wr820n_CN \
213         tp-link_tl-wr841n_v10 \
214         tp-link_tl-wr841n_v11 \
215         tp-link_tl-wr841n_v8 \
216         tp-link_tl-wr841n_v9
217
218 $(COMMON_ETHS27_TARGETS):
219         @$(call build,123,1,ETH_CONFIG=_s27)
220
221 8devices_carambola2 \
222 alfa-network_hornet-ub \
223 gl-innovations_gl-ar150:
224         @$(call build,256,1)
225
226 comfast_cf-e314n \
227 comfast_cf-e320n_v2 \
228 comfast_cf-e520n \
229 comfast_cf-e530n:
230         @$(call build,64,1,ETH_CONFIG=_s27)
231
232 d-link_dir-505:
233         @$(call build,64,1)
234
235 dragino_v2_ms14:
236         @$(call build,192,1,DEVICE_VENDOR=dragino)
237
238 tp-link_tl-wdr3600 \
239 tp-link_tl-wdr43x0:
240         @$(call build,123,1,ETH_CONFIG=_s17)
241
242 unwireddevices_unwired-one:
243         @$(call build,128,1,DEVICE_VENDOR=SE)
244
245 village-telco_mesh-potato_v2:
246         @$(call build,192,1,DEVICE_VENDOR=villagetelco)
247
248 wallys_dr531:
249         @$(call build,192,1,ETH_CONFIG=_s27)
250
251 yuncore_ap90q \
252 yuncore_cpe830:
253         @$(call build,256,1,ETH_CONFIG=_s27)
254
255 yuncore_cpe870:
256         @$(call build,64,1,ETH_CONFIG=_s27)
257
258 zbtlink_zbt-we1526:
259         @$(call build,256,1,ETH_CONFIG=_s27)
260
261 # =============
262 # CLEAN TARGETS
263 # =============
264
265 lzma_host_clean:
266         @cd $(SOURCE_DIR) && $(SUB_MAKE_CMD) $@
267
268 clean:
269         @cd $(SOURCE_DIR) && $(SUB_MAKE_CMD) distclean
270         @rm -f $(SOURCE_DIR)/httpd/fsdata.c
271
272 clean_all: clean
273         @$(call echo_green,Removing all binary images...)
274         @rm -f $(BIN_DIR)/*.bin
275         @rm -f $(BIN_DIR)/*.md5