OpenWrt – Blame information for rev 4
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 1 | # |
2 | # Copyright (C) 2008-2015 OpenWrt.org |
||
3 | # |
||
4 | # This is free software, licensed under the GNU General Public License v2. |
||
5 | # See /LICENSE for more information. |
||
6 | # |
||
7 | |||
8 | ### DO NOT INDENT LINES CONTAINING $(call xyz) AS THIS MAY CHANGE THE CONTEXT |
||
9 | ### OF THE FIRST LINE IN THE CALLED VARIABLE (NOTE: variable!) |
||
10 | ### see http://www.gnu.org/software/make/manual/html_node/Call-Function.html#Call-Function |
||
11 | ### ACTUALLY IT IS A SIMPLE MACRO EXPANSION |
||
12 | |||
13 | ### use round brackets for make variables, and curly brackets for shell variables |
||
14 | |||
15 | |||
16 | ## Kernel mtd partition size in KiB |
||
17 | KERNEL_MTD_SIZE:=1280 |
||
18 | |||
19 | # Netgear WNR854T: erase size is 128KiB = 0x00020000 = 131072 |
||
20 | ERASE_SIZE_128K:=128 |
||
21 | |||
22 | # Linksys WRT350N v2: erase size is 64KiB = 0x00010000 = 65536 |
||
23 | ERASE_SIZE_64K:=64 |
||
24 | |||
25 | # define JFFS2 sizes for include/image.mk |
||
26 | JFFS2_BLOCKSIZE:=64k 128k |
||
27 | |||
28 | |||
29 | ### |
||
30 | ### Image/BuildKernel |
||
31 | ### |
||
32 | |||
33 | define Image/BuildKernel |
||
34 | ### Dummy comment for indented calls of Image/BuildKernel |
||
35 | |||
36 | ## Netgear WN802T: mach id 3306 (0x0cea) |
||
37 | $(call Image/BuildKernel/ARM/zImage,wn802t,"\x0c\x1c\xa0\xe3\xea\x10\x81\xe3") |
||
38 | $(call Image/BuildKernel/ARM/uImage,wn802t) |
||
39 | ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) |
||
40 | $(call Image/BuildKernel/ARM/zImage,wn802t,"\x0c\x1c\xa0\xe3\xea\x10\x81\xe3",-initramfs) |
||
41 | $(call Image/BuildKernel/ARM/uImage,wn802t,-initramfs) |
||
42 | endif |
||
43 | ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) # nothing more to do for a ramdisk build |
||
44 | $(call Image/BuildKernel/JFFS2uImage,wn802t,$(ERASE_SIZE_64K),uImage) |
||
45 | $(call Image/Default/FileSizeCheck,$(KDIR)/wn802t-uImage.jffs2,$(shell expr $(KERNEL_MTD_SIZE) \* 1024)) |
||
46 | endif |
||
47 | |||
48 | ## Netgear WNR854T: mach id 1801 (0x0709) |
||
49 | $(call Image/BuildKernel/ARM/zImage,wnr854t,"\x07\x1c\xa0\xe3\x09\x10\x81\xe3") |
||
50 | $(call Image/BuildKernel/ARM/uImage,wnr854t) |
||
51 | ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) |
||
52 | $(call Image/BuildKernel/ARM/zImage,wnr854t,"\x07\x1c\xa0\xe3\x09\x10\x81\xe3",-initramfs) |
||
53 | $(call Image/BuildKernel/ARM/uImage,wnr854t,-initramfs) |
||
54 | endif |
||
55 | ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) # nothing more to do for a ramdisk build |
||
56 | $(call Image/BuildKernel/JFFS2uImage,wnr854t,$(ERASE_SIZE_128K),uImage) |
||
57 | $(call Image/Default/FileSizeCheck,$(KDIR)/wnr854t-uImage.jffs2,$(shell expr $(KERNEL_MTD_SIZE) \* 1024)) |
||
58 | endif |
||
59 | |||
60 | ## Linksys WRT350N v2: mach id 1633 (0x0661) |
||
61 | $(call Image/BuildKernel/ARM/zImage,wrt350nv2,"\x06\x1c\xa0\xe3\x61\x10\x81\xe3") |
||
62 | $(call Image/BuildKernel/ARM/uImage,wrt350nv2) |
||
63 | ifeq ($($CONFIG_TARGET_ROOTFS_INITRAMFS),y) |
||
64 | $(call Image/BuildKernel/ARM/zImage,wrt350nv2,"\x06\x1c\xa0\xe3\x61\x10\x81\xe3",-initramfs) |
||
65 | $(call Image/BuildKernel/ARM/uImage,wrt350nv2-initramfs) |
||
66 | endif |
||
67 | ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) # nothing more to do for a ramdisk build |
||
68 | $(call Image/Default/FileSizeCheck,$(KDIR)/wrt350nv2-uImage,$(shell expr $(KERNEL_MTD_SIZE) \* 1024)) |
||
69 | endif |
||
70 | |||
71 | ## Buffalo Terastation Pro II/Live: mach id 1584 (0x0630) |
||
72 | $(call Image/BuildKernel/ARM/zImage,terastation-pro2,"\x06\x1c\xa0\xe3\x30\x10\x81\xe3") |
||
73 | $(call Image/BuildKernel/ARM/uImage,terastation-pro2) |
||
74 | ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) |
||
75 | $(call Image/BuildKernel/ARM/zImage,terastation-pro2,"\x06\x1c\xa0\xe3\x30\x10\x81\xe3",-initramfs) |
||
76 | $(call Image/BuildKernel/ARM/uImage,terastation-pro2,-initramfs) |
||
77 | endif |
||
78 | endef |
||
79 | |||
80 | define Image/BuildKernel/ARM/zImage |
||
81 | # merge machine id and regular zImage into one file |
||
82 | # parameters: 1 = machine name, 2 = machine id as string in quotes |
||
83 | # $(BOARD) kernel zImage for $(1) |
||
84 | echo -en $(2) > '$(KDIR)/$(1)-zImage$(3)' |
||
85 | cat '$(KDIR)/zImage$(3)' >> '$(KDIR)/$(1)-zImage$(3)' |
||
86 | endef |
||
87 | |||
88 | define Image/BuildKernel/ARM/uImage |
||
89 | # create uImage from zImage |
||
90 | # parameters: 1 = machine name |
||
91 | # $(BOARD) kernel uImage for $(1) |
||
92 | '$(STAGING_DIR_HOST)/bin/mkimage' -A arm -O linux -T kernel \ |
||
93 | -C none -a 0x00008000 -e 0x00008000 -n 'Linux-$(LINUX_VERSION)' \ |
||
94 | -d '$(KDIR)/$(1)-zImage$(2)' '$(KDIR)/$(1)-uImage$(2)' |
||
95 | ifeq ($(2),-initramfs) # only copy uImage for ramdisk build |
||
96 | cp '$(KDIR)/$(1)-uImage-initramfs' '$(BIN_DIR)/openwrt-$(1)-uImage-initramfs' |
||
97 | endif |
||
98 | endef |
||
99 | |||
100 | define Image/BuildKernel/JFFS2uImage |
||
101 | # create JFFS2 partition with uImage file (result is already padded to erase size) |
||
102 | # parameters: 1 = machine name, 2 = erase size in KiB, 3 = uImage file name |
||
103 | # $(BOARD) kernel uImage for $(1) in JFFS2-$(2)k partition |
||
104 | rm -rf '$(TMP_DIR)/$(1)_jffs2_uimage' |
||
105 | mkdir '$(TMP_DIR)/$(1)_jffs2_uimage' |
||
106 | cp '$(KDIR)/$(1)-uImage' '$(TMP_DIR)/$(1)_jffs2_uimage/$(3)' |
||
107 | $(STAGING_DIR_HOST)/bin/mkfs.jffs2 --compression-mode=none --pad --little-endian --squash -e $(2)KiB -o '$(KDIR)/$(1)-uImage.jffs2' -d '$(TMP_DIR)/$(1)_jffs2_uimage' |
||
108 | rm -rf '$(TMP_DIR)/$(1)_jffs2_uimage' |
||
109 | endef |
||
110 | |||
111 | define Image/Default/FileSizeCheck |
||
112 | # parameters: 1 = file path, 2 = maximum size in bytes |
||
113 | [ `stat -c %s '$(1)'` -le $(2) ] || { echo ' ERROR: $(1) too big (> $(2) bytes)'; rm -f $(1); } |
||
114 | endef |
||
115 | |||
116 | |||
117 | ### |
||
118 | ### Image/Build |
||
119 | ### |
||
120 | |||
121 | define Image/Build |
||
122 | ### Dummy comment for indented calls of Image/Build with $(1) |
||
123 | |||
124 | ## Prepare rootfs |
||
125 | $(call Image/Build/$(1),$(1)) |
||
126 | |||
127 | ## Netgear WN802T |
||
128 | $(call Image/Build/Default,$(1),wn802t,$(ERASE_SIZE_64K),$(KERNEL_MTD_SIZE),.jffs2,NG_WN802T) |
||
129 | |||
130 | ## Netgear WNR854T |
||
131 | $(call Image/Build/Default,$(1),wnr854t,$(ERASE_SIZE_128K),$(KERNEL_MTD_SIZE),.jffs2,NG_WNR854T) |
||
132 | |||
133 | ## Linksys WRT350N v2 |
||
134 | $(call Image/Build/Linksys/wrt350nv2,$(1),wrt350nv2,$(ERASE_SIZE_64K),$(KERNEL_MTD_SIZE),) |
||
135 | |||
136 | ## Buffalo Terastation Pro II/Live |
||
137 | $(call Image/Build/Default,$(1),terastation-pro2,$(ERASE_SIZE_128K),$(KERNEL_MTD_SIZE),.jffs2,TERASTATION_PRO2) |
||
138 | endef |
||
139 | |||
140 | define Image/Build/squashfs |
||
141 | $(call prepare_generic_squashfs,$(KDIR)/root.squashfs) |
||
142 | endef |
||
143 | |||
144 | ## generate defines for all JFFS2 block sizes |
||
145 | define Image/Build/jffs2/sub |
||
146 | $(eval define Image/Build/jffs2-$(1) |
||
147 | cp '$$(KDIR)/root.jffs2-$(1)' '$$(BIN_DIR)/$$(IMG_PREFIX)-root.jffs2-$(1)' |
||
148 | endef) |
||
149 | endef |
||
150 | |||
151 | $(foreach SZ,$(JFFS2_BLOCKSIZE),$(call Image/Build/jffs2/sub,$(SZ))) |
||
152 | |||
153 | define Image/Build/Default |
||
154 | # parameters: 1 = rootfs type, 2 = machine name, 3 = erase size in KiB, 4 = kernel mtd size in KiB, 5 = kernel file suffix, 6 = header |
||
155 | ifeq ($(findstring jffs2-,$(1)),jffs2-) # JFFS2: build only image fitting to erase size |
||
156 | ifeq ($(1),jffs2-$(3)k) |
||
157 | $(call Image/Build/Default/sysupgrade,$(1),$(2),$(4),$(5)) |
||
158 | $(call Image/Build/Default/factory,$(1),$(2),$(6)) |
||
159 | endif |
||
160 | else |
||
161 | ifeq ($(1),ext4) # EXT4: ignore |
||
162 | # do nothing |
||
163 | else # do all other images |
||
164 | $(call Image/Build/Default/sysupgrade,$(1),$(2),$(4),$(5)) |
||
165 | $(call Image/Build/Default/factory,$(1),$(2),$(6)) |
||
166 | endif |
||
167 | endif |
||
168 | endef |
||
169 | |||
170 | define Image/Build/Default/sysupgrade |
||
171 | # parameters: 1 = rootfs type, 2 = machine name, 3 = pad size in KiB (kernel mtd size or erase size), 4 = kernel file suffix |
||
172 | # $(BOARD) $(1) sysupgrade image for $(2) |
||
173 | ( \ |
||
174 | dd if='$(KDIR)/$(2)-uImage$(4)' bs=$(3)k conv=sync; \ |
||
175 | dd if='$(KDIR)/root.$(1)'; \ |
||
176 | ) > '$(BIN_DIR)/openwrt-$(2)-$(1)-sysupgrade.img' |
||
177 | endef |
||
178 | |||
179 | define Image/Build/Default/factory |
||
180 | # parameters: 1 = rootfs type, 2 = machine name, 3 = header |
||
181 | # $(BOARD) $(1) factory upgrade image for $(2) |
||
182 | '$(STAGING_DIR_HOST)/bin/add_header' $(3) '$(BIN_DIR)/openwrt-$(2)-$(1)-sysupgrade.img' '$(BIN_DIR)/openwrt-$(2)-$(1)-factory.img' |
||
183 | endef |
||
184 | |||
185 | ## |
||
186 | ## Image/Build/Linksys |
||
187 | ## |
||
188 | |||
189 | define Image/Build/Linksys/wrt350nv2 |
||
190 | # parameters: 1 = rootfs type, 2 = machine name, 3 = erase size in KiB, 4 = kernel mtd size in KiB, 5 = kernel file suffix |
||
191 | ifeq ($(findstring jffs2-,$(1)),jffs2-) # JFFS2: build only image fitting to erase size |
||
192 | ifeq ($(1),jffs2-$(3)k) |
||
193 | $(call Image/Build/Default/sysupgrade,$(1),$(2),$(4),$(5)) |
||
194 | $(call Image/Build/Linksys/wrt350nv2-builder,$(1),$(2)) |
||
195 | endif |
||
196 | else |
||
197 | ifeq ($(1),ext4) # EXT4: ignore |
||
198 | # do nothing |
||
199 | else # do all other images |
||
200 | $(call Image/Build/Default/sysupgrade,$(1),$(2),$(4),$(5)) |
||
201 | $(call Image/Build/Linksys/wrt350nv2-builder,$(1),$(2)) |
||
202 | endif |
||
203 | endif |
||
204 | endef |
||
205 | |||
206 | define Image/Build/Linksys/wrt350nv2-builder |
||
207 | # parameters: 1 = rootfs type, 2 = machine name |
||
208 | # $(BOARD) $(1) factory and recovery image for $(2) via wrt350nv2-builder |
||
209 | rm -rf '$(TMP_DIR)/$(2)_factory' |
||
210 | mkdir '$(TMP_DIR)/$(2)_factory' |
||
211 | # create parameter file |
||
212 | echo ':image 0 $(BIN_DIR)/openwrt-$(2)-$(1)-sysupgrade.img' > '$(TMP_DIR)/$(2)_factory/$(2).par' |
||
213 | [ ! -f '$(STAGING_DIR_HOST)/share/wrt350nv2-builder/u-boot.bin' ] || ( \ |
||
214 | echo ':u-boot 0 $(STAGING_DIR_HOST)/share/wrt350nv2-builder/u-boot.bin' >> '$(TMP_DIR)/$(2)_factory/$(2).par'; \ |
||
215 | ) |
||
216 | echo '#version 0x2020' >> '$(TMP_DIR)/$(2)_factory/$(2).par' |
||
217 | # create bin file for recovery and factory image |
||
218 | -( \ |
||
219 | cd '$(TMP_DIR)/$(2)_factory'; \ |
||
220 | '$(STAGING_DIR_HOST)/bin/wrt350nv2-builder' -b '$(TMP_DIR)/$(2)_factory/$(2).par'; \ |
||
221 | ) && $(CP) '$(TMP_DIR)/$(2)_factory/wrt350n.bin' '$(BIN_DIR)/openwrt-$(2)-$(1)-recovery.bin' && \ |
||
222 | ( \ |
||
223 | cd '$(TMP_DIR)/$(2)_factory'; \ |
||
224 | zip 'wrt350n.zip' 'wrt350n.bin'; \ |
||
225 | ) && '$(STAGING_DIR_HOST)/bin/wrt350nv2-builder' -z '$(TMP_DIR)/$(2)_factory/wrt350n.zip' '$(BIN_DIR)/openwrt-$(2)-$(1)-factory.img' |
||
226 | rm -rf '$(TMP_DIR)/$(2)_factory' |
||
227 | endef |
||
228 | |||
229 | |||
230 | ### |
||
231 | ### Image/PreReq |
||
232 | ### |
||
233 | |||
234 | ## Dependency for WRT350N v2 factory image |
||
235 | $(eval $(call RequireCommand,zip, \ |
||
236 | Please install zip. \ |
||
237 | )) |