OpenWrt – Blame information for rev 3
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | # |
2 | # Copyright (C) 2008-2011 OpenWrt.org |
||
3 | # |
||
4 | # This is free software, licensed under the GNU General Public License v2. |
||
5 | # See /LICENSE for more information. |
||
6 | # |
||
7 | include $(TOPDIR)/rules.mk |
||
8 | include $(INCLUDE_DIR)/image.mk |
||
9 | |||
3 | office | 10 | define imgname |
11 | $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1) |
||
12 | endef |
||
13 | |||
14 | define sysupname |
||
15 | $(call imgname,$(1),$(2))-sysupgrade.bin |
||
16 | endef |
||
17 | |||
18 | VMLINUX:=$(IMG_PREFIX)-vmlinux |
||
19 | UIMAGE:=$(IMG_PREFIX)-uImage |
||
20 | |||
21 | define Image/Build/Initramfs |
||
22 | $(call Image/Build/Profile/$(PROFILE),initramfs) |
||
23 | endef |
||
24 | |||
1 | office | 25 | DEVICE_VARS += DTS IMAGE_SIZE NETGEAR_BOARD_ID NETGEAR_HW_ID |
26 | DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR |
||
27 | |||
28 | loadaddr-y := 0x80000000 |
||
29 | loadaddr-$(CONFIG_TARGET_ramips_rt288x) := 0x88000000 |
||
30 | loadaddr-$(CONFIG_TARGET_ramips_mt7621) := 0x80001000 |
||
31 | |||
32 | KERNEL_LOADADDR := $(loadaddr-y) |
||
33 | |||
3 | office | 34 | KERNEL_DTB = kernel-bin | patch-dtb | lzma -d21 |
1 | office | 35 | define Device/Default |
36 | PROFILES = Default $$(DTS) |
||
37 | KERNEL_DEPENDS = $$(wildcard ../dts/$$(DTS).dts) |
||
38 | KERNEL := $(KERNEL_DTB) | uImage lzma |
||
39 | DEVICE_DTS_DIR := ../dts |
||
40 | IMAGES := sysupgrade.bin |
||
41 | IMAGE_SIZE := $(ralink_default_fw_size_8M) |
||
42 | SUPPORTED_DEVICES := $(subst _,$(comma),$(1)) |
||
43 | sysupgrade_bin := append-kernel | append-rootfs | pad-rootfs |
||
44 | IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE) |
||
45 | endef |
||
46 | |||
47 | define Build/patch-dtb |
||
48 | $(call Image/BuildDTB,../dts/$(DTS).dts,$@.dtb) |
||
49 | $(STAGING_DIR_HOST)/bin/patch-dtb $@ $@.dtb |
||
50 | endef |
||
51 | |||
52 | define Build/trx |
||
53 | $(STAGING_DIR_HOST)/bin/trx $(1) \ |
||
54 | -o $@ \ |
||
55 | -m $(IMAGE_SIZE) \ |
||
56 | -f $(IMAGE_KERNEL) \ |
||
57 | -a 4 -f $(IMAGE_ROOTFS) |
||
58 | endef |
||
59 | |||
60 | define Build/loader-common |
||
61 | rm -rf $@.src |
||
62 | $(MAKE) -C lzma-loader \ |
||
63 | PKG_BUILD_DIR="$@.src" \ |
||
64 | TARGET_DIR="$(dir $@)" LOADER_NAME="$(notdir $@)" \ |
||
65 | BOARD="$(BOARDNAME)" PLATFORM="$(PLATFORM)" \ |
||
66 | LZMA_TEXT_START=0x82000000 LOADADDR=$(KERNEL_LOADADDR) \ |
||
67 | $(1) compile loader.$(LOADER_TYPE) |
||
68 | mv "$@.$(LOADER_TYPE)" "$@" |
||
69 | rm -rf $@.src |
||
70 | endef |
||
71 | |||
72 | define Build/loader-kernel |
||
73 | $(call Build/loader-common,LOADER_DATA="$@") |
||
74 | endef |
||
75 | |||
76 | define Build/relocate-kernel |
||
77 | ( \ |
||
3 | office | 78 | dd if=$(KDIR)/loader.bin bs=32 conv=sync && \ |
1 | office | 79 | perl -e '@s = stat("$@"); print pack("V", @s[7])' && \ |
80 | cat $@ \ |
||
81 | ) > $@.new |
||
82 | mv $@.new $@ |
||
83 | endef |
||
84 | |||
3 | office | 85 | define MkCombineduImage |
86 | $(call PatchKernelLzma,$(2),$(3)) |
||
87 | if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt `expr $(4) - 64` ]; then \ |
||
88 | echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big" >&2; \ |
||
89 | else if [ `stat -c%s "$(KDIR)/root.$(1)"` -gt $(5) ]; then \ |
||
90 | echo "Warning: $(KDIR)/root.$(1) is too big" >&2; \ |
||
91 | else \ |
||
92 | ( dd if=$(KDIR)/vmlinux-$(2).bin.lzma bs=`expr $(4) - 64` conv=sync ; dd if=$(KDIR)/root.$(1) ) > $(KDIR)/vmlinux-$(2).bin.lzma.combined ; \ |
||
93 | fi ; fi |
||
94 | $(call MkImage,lzma,$(KDIR)/vmlinux-$(2).bin.lzma.combined,$(call sysupname,$(1),$(2)),$(6)) |
||
95 | endef |
||
96 | |||
1 | office | 97 | define Build/umedia-header |
98 | fix-u-media-header -T 0x46 -B $(1) -i $@ -o $@.new && mv $@.new $@ |
||
99 | endef |
||
100 | |||
101 | define Build/edimax-header |
||
102 | $(STAGING_DIR_HOST)/bin/mkedimaximg -i $@ -o $@.new $(1) |
||
103 | @mv $@.new $@ |
||
104 | endef |
||
105 | |||
106 | define Build/poray-header |
||
107 | $(STAGING_DIR_HOST)/bin/mkporayfw $(1) -f $@ -o $@.new |
||
108 | mv $@.new $@ |
||
109 | endef |
||
110 | |||
3 | office | 111 | define Build/senao-header |
112 | $(STAGING_DIR_HOST)/bin/mksenaofw $(1) -e $@ -o $@.new |
||
113 | mv $@.new $@ |
||
114 | endef |
||
115 | |||
116 | define Build/seama |
||
117 | $(STAGING_DIR_HOST)/bin/seama -i $@ $(1) |
||
118 | mv $@.seama $@ |
||
119 | endef |
||
120 | |||
121 | define Build/seama-seal |
||
122 | $(call Build/seama,-s $@.seama $(1)) |
||
123 | endef |
||
124 | |||
1 | office | 125 | define Build/wrg-header |
126 | mkwrgimg -i $@ -d "/dev/mtdblock/2" -s $(1) -o $@.new |
||
127 | mv $@.new $@ |
||
128 | endef |
||
129 | |||
130 | # combine kernel and rootfs into one image |
||
131 | # mkdlinkfw <type> <optional extra arguments to mkdlinkfw binary> |
||
132 | |||
133 | define Build/mkdlinkfw |
||
134 | -$(STAGING_DIR_HOST)/bin/mkdlinkfw \ |
||
135 | -k $(IMAGE_KERNEL) \ |
||
136 | -r $(IMAGE_ROOTFS) \ |
||
137 | -o $@ \ |
||
138 | -s $(DLINK_FIRMWARE_SIZE) |
||
139 | endef |
||
140 | |||
141 | define Build/mkdlinkfw-factory |
||
142 | -$(STAGING_DIR_HOST)/bin/mkdlinkfw \ |
||
143 | -m $(DLINK_ROM_ID) -f $(DLINK_FAMILY_MEMBER) \ |
||
144 | -F $@ \ |
||
145 | -o $@.new \ |
||
146 | -s $(DLINK_FIRMWARE_SIZE) |
||
147 | mv $@.new $@ |
||
148 | endef |
||
149 | |||
3 | office | 150 | # |
151 | # The real magic happens inside these templates |
||
152 | # |
||
153 | # $(1), compression method |
||
154 | # $(2), filename of image data |
||
155 | # $(3), output filename |
||
156 | define MkImage |
||
157 | $(eval imagename=$(if $(4),$(4),MIPS $(VERSION_DIST) Linux-$(LINUX_VERSION))) |
||
158 | -mkimage -A mips -O linux -T kernel -C $(1) -a $(loadaddr-y) -e $(loadaddr-y) \ |
||
159 | -n "$(imagename)" \ |
||
160 | -d $(2) $(3) |
||
1 | office | 161 | endef |
162 | |||
3 | office | 163 | define CompressLzma |
164 | $(STAGING_DIR_HOST)/bin/lzma e $(1) -lc1 -lp2 -pb2 $(2) |
||
165 | endef |
||
166 | |||
167 | define MkImageSysupgrade/squashfs |
||
168 | $(eval output_name=$(IMG_PREFIX)-$(2)-$(1)-$(if $(4),$(4),sysupgrade).bin) |
||
169 | cat $(KDIR)/vmlinux-$(2).uImage $(KDIR)/root.$(1) > $(KDIR)/$(output_name) |
||
170 | $(call prepare_generic_squashfs,$(KDIR)/$(output_name)) |
||
171 | if [ `stat -c%s "$(KDIR)/$(output_name)"` -gt $(3) ]; then \ |
||
172 | echo "Warning: $(KDIR)/$(output_name) is too big" >&2; \ |
||
173 | else \ |
||
174 | $(CP) $(KDIR)/$(output_name) $(BIN_DIR)/$(output_name); \ |
||
175 | fi |
||
176 | endef |
||
177 | |||
178 | # $(1), lowercase board name like "mt7620a_v22sg" |
||
179 | # $(2), DTS filename without .dts extension |
||
180 | # $(3), optional filename suffix, e.g. "-initramfs" |
||
181 | define PatchKernelLzmaDtb |
||
182 | cp $(KDIR)/vmlinux$(3) $(KDIR)/vmlinux-$(1)$(3) |
||
183 | $(call Image/BuildDTB,../dts/$(2).dts,$(KDIR)/$(2).dtb) |
||
184 | $(STAGING_DIR_HOST)/bin/patch-dtb $(KDIR)/vmlinux-$(1)$(3) $(KDIR)/$(2).dtb |
||
185 | $(call CompressLzma,$(KDIR)/vmlinux-$(1)$(3),$(KDIR)/vmlinux-$(1)$(3).bin.lzma) |
||
186 | endef |
||
187 | |||
188 | # $(1), lowercase board name |
||
189 | # $(2), DTS filename without .dts extension |
||
190 | # $(3), ih_name field of uImage header |
||
191 | # $(4), optional filename suffix, e.g. "-initramfs" |
||
192 | define MkImageLzmaDtb |
||
193 | $(call PatchKernelLzmaDtb,$(1),$(2),$(4)) |
||
194 | $(call MkImage,lzma,$(KDIR)/vmlinux-$(1)$(4).bin.lzma,$(KDIR)/vmlinux-$(1)$(4).uImage,$(3)) |
||
195 | endef |
||
196 | |||
197 | # $(1), Rootfs type, e.g. squashfs |
||
198 | # $(2), lowercase board name |
||
199 | # $(3), DTS filename without .dts extension |
||
200 | # $(4), maximum size of sysupgrade image |
||
201 | # $(5), uImage header's ih_name field |
||
202 | define BuildFirmware/OF |
||
203 | $(call MkImageLzmaDtb,$(2),$(3),$(5)) |
||
204 | $(call MkImageSysupgrade/$(1),$(1),$(2),$(4),$(6)) |
||
205 | endef |
||
206 | |||
207 | # $(1), squashfs/initramfs |
||
208 | # $(2), lowercase board name |
||
209 | # $(3), DTS filename without .dts extension |
||
210 | # $(4), ih_name field of uImage header |
||
211 | define BuildFirmware/OF/initramfs |
||
212 | $(call MkImageLzmaDtb,$(2),$(3),$(4),-initramfs) |
||
213 | $(CP) $(KDIR)/vmlinux-$(2)-initramfs.uImage $(call imgname,$(1),$(2))-uImage.bin |
||
214 | endef |
||
215 | |||
216 | # Build images for default ralink layout for 4MB flash |
||
217 | # kernel + roots = 0x3b0000 |
||
218 | # $(1) = squashfs/initramfs |
||
219 | # $(2) = lowercase board name |
||
220 | # $(3) = dts file |
||
1 | office | 221 | ralink_default_fw_size_4M=3866624 |
3 | office | 222 | BuildFirmware/Default4M/squashfs=$(call BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_4M),$(4)) |
223 | BuildFirmware/Default4M/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4)) |
||
224 | |||
1 | office | 225 | ralink_default_fw_size_8M=8060928 |
226 | ralink_default_fw_size_16M=16121856 |
||
227 | ralink_default_fw_size_32M=33226752 |
||
228 | |||
3 | office | 229 | |
1 | office | 230 | ifeq ($(SUBTARGET),rt288x) |
231 | include rt288x.mk |
||
232 | endif |
||
233 | |||
234 | ifeq ($(SUBTARGET),rt305x) |
||
235 | include rt305x.mk |
||
3 | office | 236 | include rt305x-legacy.mk |
1 | office | 237 | endif |
238 | |||
239 | ifeq ($(SUBTARGET),rt3883) |
||
240 | include rt3883.mk |
||
241 | endif |
||
242 | |||
243 | ifeq ($(SUBTARGET),mt7620) |
||
244 | include mt7620.mk |
||
245 | endif |
||
246 | |||
247 | ifeq ($(SUBTARGET),mt7621) |
||
248 | include mt7621.mk |
||
249 | endif |
||
250 | |||
251 | ifeq ($(SUBTARGET),mt76x8) |
||
252 | include mt76x8.mk |
||
253 | endif |
||
254 | |||
3 | office | 255 | ifdef LEGACY_DEVICES |
256 | # |
||
257 | # Generic Targets - only needed for legacy image building code |
||
258 | # |
||
259 | define Image/BuildKernel |
||
260 | cp $(KDIR)/vmlinux.elf $(BIN_DIR)/$(VMLINUX).elf |
||
261 | cp $(KDIR)/vmlinux $(BIN_DIR)/$(VMLINUX).bin |
||
262 | $(call CompressLzma,$(KDIR)/vmlinux,$(KDIR)/vmlinux.bin.lzma) |
||
263 | $(call MkImage,lzma,$(KDIR)/vmlinux.bin.lzma,$(KDIR)/uImage.lzma) |
||
264 | cp $(KDIR)/uImage.lzma $(BIN_DIR)/$(UIMAGE).bin |
||
265 | endef |
||
266 | |||
267 | define Image/BuildKernel/Initramfs |
||
268 | cp $(KDIR)/vmlinux-initramfs.elf $(BIN_DIR)/$(VMLINUX)-initramfs.elf |
||
269 | cp $(KDIR)/vmlinux-initramfs $(BIN_DIR)/$(VMLINUX)-initramfs.bin |
||
270 | $(call CompressLzma,$(KDIR)/vmlinux-initramfs,$(KDIR)/vmlinux-initramfs.bin.lzma) |
||
271 | $(call MkImage,lzma,$(KDIR)/vmlinux-initramfs.bin.lzma,$(KDIR)/uImage-initramfs.lzma) |
||
272 | cp $(KDIR)/uImage-initramfs.lzma $(BIN_DIR)/$(UIMAGE)-initramfs.bin |
||
273 | $(call Image/Build/Initramfs) |
||
274 | endef |
||
275 | |||
276 | define Image/Build |
||
277 | $(call Image/Build/$(1)) |
||
278 | dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync |
||
279 | endef |
||
280 | |||
281 | define Image/Build/Profile |
||
282 | $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(call Image/Build/Profile/$(1),initramfs)) |
||
283 | $(call Image/Build/Profile/$(1),$(2)) |
||
284 | endef |
||
285 | |||
286 | endif |
||
287 | |||
1 | office | 288 | $(eval $(call BuildImage)) |