Makefile 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745
  1. #
  2. # Copyright (C) 2008-2010 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. define imgname
  10. $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(patsubst jffs2-%,jffs2,$(patsubst squashfs-%,squashfs,$(1)))
  11. endef
  12. VMLINUX:=$(BIN_DIR)/$(IMG_PREFIX)-vmlinux
  13. UIMAGE:=$(BIN_DIR)/$(IMG_PREFIX)-uImage
  14. fs_squash:=squashfs-only
  15. fs_all:=all
  16. fs_4k:=4k
  17. fs_64k:=64k
  18. fs_128k:=128k
  19. ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
  20. fs_squash:=initramfs
  21. fs_all:=initramfs
  22. fs_4k:=initramfs
  23. fs_64k:=initramfs
  24. fs_128k:=initramfs
  25. VMLINUX:=$(BIN_DIR)/$(IMG_PREFIX)-vmlinux-initramfs
  26. UIMAGE:=$(BIN_DIR)/$(IMG_PREFIX)-uImage-initramfs
  27. endif
  28. define CompressLzma
  29. $(STAGING_DIR_HOST)/bin/lzma e $(1) -lc1 -lp2 -pb2 $(2)
  30. endef
  31. define PatchKernelLzma
  32. cp $(KDIR)/vmlinux $(KDIR)/vmlinux-$(1)
  33. $(STAGING_DIR_HOST)/bin/patch-cmdline $(KDIR)/vmlinux-$(1) '$(strip $(2))'
  34. $(call CompressLzma,$(KDIR)/vmlinux-$(1),$(KDIR)/vmlinux-$(1).bin.lzma)
  35. endef
  36. define PatchKernelGzip
  37. cp $(KDIR)/vmlinux $(KDIR)/vmlinux-$(1)
  38. $(STAGING_DIR_HOST)/bin/patch-cmdline $(KDIR)/vmlinux-$(1) '$(strip $(2))'
  39. gzip -9 -c $(KDIR)/vmlinux-$(1) > $(KDIR)/vmlinux-$(1).bin.gz
  40. endef
  41. define MkImageLzma
  42. mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma \
  43. -e 0x80060000 -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  44. -d $(1) $(2)
  45. endef
  46. define MkImageGzip
  47. mkimage -A mips -O linux -T kernel -a 0x80060000 -C gzip \
  48. -e 0x80060000 -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  49. -d $(1) $(2)
  50. endef
  51. define Image/BuildKernel
  52. cp $(KDIR)/vmlinux.elf $(VMLINUX).elf
  53. cp $(KDIR)/vmlinux $(VMLINUX).bin
  54. gzip -9 -c $(KDIR)/vmlinux > $(KDIR)/vmlinux.bin.gz
  55. $(call CompressLzma,$(KDIR)/vmlinux,$(KDIR)/vmlinux.bin.lzma)
  56. dd if=$(KDIR)/vmlinux.bin.lzma of=$(VMLINUX).lzma bs=65536 conv=sync
  57. dd if=$(KDIR)/vmlinux.bin.gz of=$(VMLINUX).gz bs=65536 conv=sync
  58. $(call MkImageGzip,$(KDIR)/vmlinux.bin.gz,$(UIMAGE)-gzip.bin)
  59. $(call MkImageLzma,$(KDIR)/vmlinux.bin.lzma,$(UIMAGE)-lzma.bin)
  60. $(call Image/Build/Initramfs)
  61. endef
  62. define Image/Build/WRT400N
  63. $(call PatchKernelLzma,$(2),$(3))
  64. if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt 1310720 ]; then \
  65. echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \
  66. else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 6488064 ]; then \
  67. echo "Warning: $(KDIR)/root.$(1) is too big"; \
  68. else \
  69. mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma -e \
  70. 0x80060000 \
  71. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  72. -d $(KDIR)/vmlinux-$(2).bin.lzma $(KDIR)/vmlinux-$(2).uImage; \
  73. ( \
  74. dd if=$(KDIR)/vmlinux-$(2).uImage bs=1280k conv=sync; \
  75. dd if=$(KDIR)/root.$(1) \
  76. ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
  77. wrt400n $(KDIR)/vmlinux-$(2).uImage $(KDIR)/root.$(1) $(call imgname,$(1),$(2))-factory.bin; \
  78. fi; fi
  79. endef
  80. dir825b1_mtdlayout=mtdparts=spi0.0:256k(uboot)ro,64k(config)ro,1024k(kernel),5184k(rootfs),64k(caldata)ro,1600k(unknown)ro,6208k@0x50000(firmware)
  81. define Image/Build/DIR825B1
  82. $(call PatchKernelLzma,$(2),$(3) $(dir825b1_mtdlayout))
  83. if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt 1048576 ]; then \
  84. echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \
  85. else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 5308416 ]; then \
  86. echo "Warning: $(KDIR)/root.$(1) is too big"; \
  87. else \
  88. mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma -e \
  89. 0x80060000 \
  90. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  91. -d $(KDIR)/vmlinux-$(2).bin.lzma $(KDIR)/vmlinux-$(2).uImage; \
  92. ( \
  93. dd if=$(KDIR)/vmlinux-$(2).uImage bs=1024k conv=sync; \
  94. dd if=$(KDIR)/root.$(1) \
  95. ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
  96. ( \
  97. dd if=$(call imgname,$(1),$(2))-sysupgrade.bin; \
  98. echo -n "01AP94-AR7161-RT-080619-00"; \
  99. ) > $(call imgname,$(1),$(2))-backup-loader.bin; \
  100. if [ `stat -c%s $(call imgname,$(1),$(2))-sysupgrade.bin` -gt 4194304 ]; then \
  101. echo "Warning: $(call imgname,$(1),$(2))-sysupgrade.bin is too big"; \
  102. else \
  103. ( \
  104. dd if=$(call imgname,$(1),$(2))-sysupgrade.bin bs=4096k conv=sync; \
  105. echo -n "00AP94-AR7161-RT-080619-00"; \
  106. ) > $(call imgname,$(1),$(2))-factory.bin; \
  107. fi; \
  108. fi; fi
  109. endef
  110. define Image/Build/WZRHPG300NH
  111. $(call PatchKernelLzma,$(2),$(3))
  112. if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt 1048576 ]; then \
  113. echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \
  114. else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 31850496 ]; then \
  115. echo "Warning: $(KDIR)/root.$(1) is too big"; \
  116. else \
  117. mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma -e \
  118. 0x80060000 \
  119. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  120. -d $(KDIR)/vmlinux-$(2).bin.lzma $(KDIR)/vmlinux-$(2).uImage; \
  121. ( \
  122. dd if=$(KDIR)/vmlinux-$(2).uImage bs=1024k conv=sync; \
  123. dd if=$(KDIR)/root.$(1) bs=128k conv=sync; \
  124. ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
  125. ( \
  126. echo -n -e "# Airstation Public Fmt1\x00\x00\x00\x00\x00\x00\x00\x00"; \
  127. dd if=$(call imgname,$(1),$(2))-sysupgrade.bin; \
  128. ) > $(call imgname,$(1),$(2))-tftp.bin; \
  129. fi; fi
  130. endef
  131. cameo_mtdlayout=mtdparts=spi0.0:128k(u-boot)ro,64k(config)ro,896k(kernel),2944k(rootfs),64k(art)ro,3840k@0x30000(firmware)
  132. define Image/Build/Cameo
  133. $(call PatchKernelLzma,$(2),$(3) $(cameo_mtdlayout))
  134. if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt 917504 ]; then \
  135. echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \
  136. else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 2949120 ]; then \
  137. echo "Warning: $(KDIR)/root.$(1) is too big"; \
  138. else \
  139. mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma -e \
  140. 0x80060000 \
  141. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  142. -d $(KDIR)/vmlinux-$(2).bin.lzma $(KDIR)/vmlinux-$(2).uImage; \
  143. ( \
  144. dd if=$(KDIR)/vmlinux-$(2).uImage bs=896k conv=sync; \
  145. dd if=$(KDIR)/root.$(1) \
  146. ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
  147. ( \
  148. dd if=$(KDIR)/vmlinux-$(2).uImage bs=896k conv=sync; \
  149. dd if=$(KDIR)/root.$(1) bs=2880k conv=sync; \
  150. echo -n $(4); \
  151. ) > $(call imgname,$(1),$(2))-factory.bin; \
  152. fi; fi
  153. endef
  154. cameo7240_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(nvram)ro,896k(kernel),2816k(rootfs),64k(mac)ro,64k(art)ro,3712k@0x40000(firmware)
  155. define Image/Build/Cameo7240
  156. $(call PatchKernelLzma,$(2),$(3) $(cameo7240_mtdlayout))
  157. if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt 917504 ]; then \
  158. echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \
  159. else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 2818048 ]; then \
  160. echo "Warning: $(KDIR)/root.$(1) is too big"; \
  161. else \
  162. mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma -e \
  163. 0x80060000 \
  164. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  165. -d $(KDIR)/vmlinux-$(2).bin.lzma $(KDIR)/vmlinux-$(2).uImage; \
  166. ( \
  167. dd if=$(KDIR)/vmlinux-$(2).uImage bs=896k conv=sync; \
  168. dd if=$(KDIR)/root.$(1) \
  169. ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
  170. ( \
  171. dd if=$(KDIR)/vmlinux-$(2).uImage bs=896k conv=sync; \
  172. dd if=$(KDIR)/root.$(1) bs=2752k conv=sync; \
  173. echo -n $(4); \
  174. ) > $(call imgname,$(1),$(2))-factory.bin; \
  175. fi; fi
  176. endef
  177. define Image/Build/AP83
  178. $(call PatchKernelGzip,$(2),$(3))
  179. if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.gz"` -gt 1310720 ]; then \
  180. echo "Warning: $(KDIR)/vmlinux-$(2).bin.gz is too big"; \
  181. else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 6619136 ]; then \
  182. echo "Warning: $(KDIR)/root.$(1) is too big"; \
  183. else \
  184. mkimage -A mips -O linux -T kernel -a 0x80060000 -C gzip -e \
  185. 0x80060000 \
  186. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  187. -d $(KDIR)/vmlinux-$(2).bin.gz \
  188. $(KDIR)/vmlinux-$(2).uImage; \
  189. dd if=$(KDIR)/vmlinux-$(2).uImage \
  190. of=$(call imgname,kernel,$(2)).bin bs=64k conv=sync; \
  191. dd if=$(KDIR)/root.$(1) \
  192. of=$(call imgname,$(1),$(2)-rootfs).bin bs=128k conv=sync; \
  193. ( \
  194. dd if=$(KDIR)/vmlinux-$(2).uImage bs=1280k conv=sync; \
  195. dd if=$(KDIR)/root.$(1); \
  196. ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
  197. fi; fi
  198. endef
  199. define Image/Build/PB92
  200. $(call PatchKernelLzma,$(2),$(3))
  201. if [ `stat -c%s $(KDIR)/vmlinux-$(2).bin.lzma` -gt 917504 ]; then \
  202. echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \
  203. elif [ `stat -c%s $(KDIR)/root.$(1)` -gt 2818048 ]; then \
  204. echo "Warning: $(KDIR)/root.$(1) is too big"; \
  205. else \
  206. mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma -e \
  207. 0x80060000 \
  208. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  209. -d $(KDIR)/vmlinux-$(2).bin.lzma \
  210. $(KDIR)/vmlinux-$(2).uImage; \
  211. dd if=$(KDIR)/vmlinux-$(2).uImage \
  212. of=$(call imgname,kernel,$(2)).bin bs=64k conv=sync; \
  213. dd if=$(KDIR)/root.$(1) \
  214. of=$(call imgname,$(1),$(2)-rootfs).bin bs=128k conv=sync; \
  215. ( \
  216. dd if=$(KDIR)/vmlinux-$(2).uImage bs=896k conv=sync; \
  217. dd if=$(KDIR)/root.$(1); \
  218. ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
  219. fi
  220. endef
  221. define Image/Build/PB4X
  222. $(call PatchKernelLzma,$(2),$(3))
  223. dd if=$(KDIR)/vmlinux-$(2).bin.lzma \
  224. of=$(call imgname,kernel,$(2)).bin bs=64k conv=sync
  225. dd if=$(KDIR)/root.$(1) \
  226. of=$(call imgname,$(1),$(2)-rootfs).bin bs=128k conv=sync
  227. -sh $(TOPDIR)/scripts/combined-image.sh \
  228. "$(call imgname,kernel,$(2)).bin" \
  229. "$(call imgname,$(1),$(2)-rootfs).bin" \
  230. $(call imgname,$(1),$(2))-sysupgrade.bin
  231. endef
  232. define Image/Build/MyLoader
  233. -$(STAGING_DIR_HOST)/bin/mkmylofw -B $(2) -s $(3) \
  234. -p0x030000:0xe0000:al:0x80060000:kernel:$(KDIR)/vmlinux.bin.lzma \
  235. -p0x110000:0:::rootfs:$(KDIR)/root.$(1) \
  236. $(call imgname,$(1),$(2))-$(4)-factory.img
  237. endef
  238. ubntxm_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1024k(kernel),6528k(rootfs),256k(cfg)ro,64k(EEPROM)ro,7552k@0x50000(firmware)
  239. define Image/Build/UBNTXM
  240. $(call PatchKernelLzma,$(2),$(3) $(ubntxm_mtdlayout))
  241. $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage.bin)
  242. dd if=$(KDIR)/vmlinux-$(2).uImage.bin of=$(KDIR)/vmlinux-$(2).uImage bs=1024k conv=sync
  243. -$(STAGING_DIR_HOST)/bin/mkfwimage \
  244. -B $(4) -v $(5).$(6).OpenWrt.$(REVISION) \
  245. -k $(KDIR)/vmlinux-$(2).uImage \
  246. -r $(BIN_DIR)/$(IMG_PREFIX)-root.$(1) \
  247. -o $(call imgname,$(1),$(2))-factory.bin
  248. ( \
  249. dd if=$(KDIR)/vmlinux-$(2).uImage; \
  250. dd if=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1); \
  251. ) > $(call imgname,$(1),$(2))-sysupgrade.bin
  252. endef
  253. define Image/Build/UBNT
  254. $(call PatchKernelLzma,$(2),$(3))
  255. dd if=$(KDIR)/vmlinux-$(2).bin.lzma of=$(KDIR)/vmlinux-$(2).lzma bs=64k conv=sync
  256. -$(STAGING_DIR_HOST)/bin/mkfwimage \
  257. -B $(4) -v $(5).$(6).OpenWrt.$(REVISION) \
  258. -k $(KDIR)/vmlinux-$(2).lzma \
  259. -r $(BIN_DIR)/$(IMG_PREFIX)-root.$(1) \
  260. -o $(call imgname,$(1),$(2))-factory.bin
  261. -sh $(TOPDIR)/scripts/combined-image.sh \
  262. "$(KDIR)/vmlinux-$(2).lzma" \
  263. "$(BIN_DIR)/$(IMG_PREFIX)-root.$(1)" \
  264. $(call imgname,$(1),$(2))-sysupgrade.bin
  265. endef
  266. define Image/Build/Planex
  267. $(call PatchKernelGzip,$(2),$(3))
  268. if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.gz"` -gt 1441792 ]; then \
  269. echo "Warning: $(KDIR)/vmlinux-$(2).bin.gz is too big"; \
  270. else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 6356992 ]; then \
  271. echo "Warning: $(KDIR)/root.$(1) is too big"; \
  272. else \
  273. mkimage -A mips -O linux -T kernel -a 0x80060000 -C gzip -e \
  274. 0x80060000 \
  275. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  276. -d $(KDIR)/vmlinux-$(2).bin.gz $(KDIR)/vmlinux-$(2).uImage; \
  277. ( \
  278. dd if=$(KDIR)/vmlinux-$(2).uImage bs=1408k conv=sync; \
  279. dd if=$(KDIR)/root.$(1); \
  280. ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
  281. $(STAGING_DIR_HOST)/bin/mkplanexfw \
  282. -B $(2) \
  283. -v 2.00.00 \
  284. -i $(call imgname,$(1),$(2))-sysupgrade.bin \
  285. -o $(call imgname,$(1),$(2))-factory.bin; \
  286. fi; fi
  287. endef
  288. define Image/Build/TPLINK
  289. $(call PatchKernelGzip,$(2),$(3))
  290. -$(STAGING_DIR_HOST)/bin/mktplinkfw \
  291. -B $(4) -N OpenWrt -V $(REVISION)\
  292. -k $(KDIR)/vmlinux-$(2).bin.gz \
  293. -r $(BIN_DIR)/$(IMG_PREFIX)-root.$(1) \
  294. -o $(call imgname,$(1),$(2))-factory.bin
  295. -$(STAGING_DIR_HOST)/bin/mktplinkfw \
  296. -B $(4) -N OpenWrt -V $(REVISION) -s \
  297. -k $(KDIR)/vmlinux-$(2).bin.gz \
  298. -r $(BIN_DIR)/$(IMG_PREFIX)-root.$(1) \
  299. -o $(call imgname,$(1),$(2))-sysupgrade.bin
  300. endef
  301. define Image/Build/TPLINK/initramfs
  302. $(call PatchKernelGzip,$(2),$(3))
  303. -$(STAGING_DIR_HOST)/bin/mktplinkfw -c \
  304. -B $(4) -N OpenWrt -V $(REVISION) -s \
  305. -k $(KDIR)/vmlinux-$(2).bin.gz \
  306. -o $(call imgname,$(1),$(2))-uImage.bin
  307. endef
  308. define Image/Build/CyberTAN
  309. $(call PatchKernelGzip,$(2),$(3))
  310. $(call MkImageGzip,$(KDIR)/vmlinux-$(2).bin.gz,$(KDIR)/vmlinux-$(2).uImage)
  311. $(STAGING_DIR_HOST)/bin/trx -o $(KDIR)/image.tmp -f $(KDIR)/vmlinux-$(2).uImage \
  312. -x 32 -a 0x10000 -x -32 -f $(KDIR)/root.$(1)
  313. -$(STAGING_DIR_HOST)/bin/addpattern -B $(2) -v v$(4) \
  314. -i $(KDIR)/image.tmp \
  315. -o $(call imgname,$(1),$(2))-sysupgrade.bin
  316. -$(STAGING_DIR_HOST)/bin/addpattern -B $(2) -v v$(4) -g \
  317. -i $(KDIR)/image.tmp \
  318. -o $(call imgname,$(1),$(2))-factory.bin
  319. rm $(KDIR)/image.tmp
  320. endef
  321. define Image/Build/Netgear
  322. $(call PatchKernelLzma,$(2),$(3) $($(4)))
  323. $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage)
  324. mkdir -p $(KDIR)/wndr3700/image
  325. $(STAGING_DIR_HOST)/bin/wndr3700 \
  326. $(KDIR)/vmlinux-$(2).uImage \
  327. $(KDIR)/wndr3700/image/uImage \
  328. $(5)
  329. $(STAGING_DIR_HOST)/bin/mksquashfs-lzma \
  330. $(KDIR)/wndr3700 $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp \
  331. -nopad -noappend -root-owned -be
  332. -rm -rf $(KDIR)/wndr3700
  333. mkimage -A mips -O linux -T filesystem -C none \
  334. -a 0xbf070000 -e 0xbf070000 \
  335. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  336. -d $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp \
  337. $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp2
  338. $(STAGING_DIR_HOST)/bin/wndr3700 \
  339. $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp2 \
  340. $(KDIR)/vmlinux-$(2).uImage.squashfs \
  341. $(5)
  342. -rm -f $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp*
  343. ( \
  344. dd if=$(KDIR)/vmlinux-$(2).uImage.squashfs bs=1024k conv=sync; \
  345. dd if=$(KDIR)/root.$(1) bs=64k; \
  346. ) > $(call imgname,$(1),$(2))-sysupgrade.bin
  347. $(STAGING_DIR_HOST)/bin/mkdniimg \
  348. -B $(6) -v OpenWrt.$(REVISION) \
  349. -i $(call imgname,$(1),$(2))-sysupgrade.bin \
  350. -o $(call imgname,$(1),$(2))-factory.img
  351. $(STAGING_DIR_HOST)/bin/mkdniimg \
  352. -B $(6) -v OpenWrt.$(REVISION) -r "NA" \
  353. -i $(call imgname,$(1),$(2))-sysupgrade.bin \
  354. -o $(call imgname,$(1),$(2))-factory-NA.img
  355. endef
  356. define Image/Build/Netgear/initramfs
  357. $(call PatchKernelLzma,$(2),$(3) $($(4)))
  358. $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage)
  359. $(STAGING_DIR_HOST)/bin/wndr3700 \
  360. $(KDIR)/vmlinux-$(2).uImage \
  361. $(call imgname,$(1),$(2))-uImage.bin \
  362. $(5)
  363. endef
  364. ifdef CONFIG_PACKAGE_uboot-ar71xx-nbg460n_550n_550nh
  365. define Image/Build/ZyXEL
  366. $(call PatchKernelLzma,$(2),$(3))
  367. if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt 917504 ]; then \
  368. echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \
  369. else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 2752512 ]; then \
  370. echo "Warning: $(KDIR)/root.$(1) is too big"; \
  371. else \
  372. mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma -e \
  373. 0x80060000 \
  374. -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
  375. -d $(KDIR)/vmlinux-$(2).bin.lzma $(KDIR)/vmlinux-$(2).uImage; \
  376. ( \
  377. dd if=$(KDIR)/vmlinux-$(2).uImage bs=896k conv=sync; \
  378. dd if=$(KDIR)/root.$(1); \
  379. ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
  380. $(STAGING_DIR_HOST)/bin/mkzynfw \
  381. -B $(4) \
  382. -b $(BIN_DIR)/$(IMG_PREFIX)-$(2)-u-boot.bin \
  383. -r $(call imgname,$(1),$(2))-sysupgrade.bin:0x10000 \
  384. -o $(call imgname,$(1),$(2))-factory.bin; \
  385. fi; fi
  386. endef
  387. endif
  388. define Image/Build/Zcomax
  389. $(call PatchKernelLzma,$(2),$(3))
  390. $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage.bin)
  391. -$(STAGING_DIR_HOST)/bin/mkzcfw \
  392. -B $(2) \
  393. -k $(KDIR)/vmlinux-$(2).uImage.bin \
  394. -r $(BIN_DIR)/$(IMG_PREFIX)-root.$(1) \
  395. -o $(call imgname,$(1),$(2))-factory.img
  396. ( \
  397. dd if=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=6208k count=1 conv=sync; \
  398. dd if=$(KDIR)/vmlinux-$(2).uImage.bin bs=1472k count=1; \
  399. ) > $(call imgname,$(1),$(2))-sysupgrade.bin
  400. endef
  401. define Image/Build/Template/initramfs/initramfs
  402. $(call Image/Build/$(1)/initramfs,initramfs,$(2),$(3),$(4),$(5),$(6),$(7))
  403. endef
  404. define Image/Build/Template/all/squashfs
  405. $(call Image/Build/$(1),squashfs,$(2),$(3),$(4),$(5),$(6),$(7))
  406. endef
  407. define Image/Build/Template/all/jffs2-64k
  408. $(call Image/Build/$(1),jffs2-64k,$(2),$(3),$(4),$(5),$(6),$(7))
  409. endef
  410. define Image/Build/Template/all/jffs2-128k
  411. $(call Image/Build/$(1),jffs2-128k,$(2),$(3),$(4),$(5),$(6),$(7))
  412. endef
  413. define Image/Build/Template/squashfs-only/squashfs
  414. $(call Image/Build/$(1),squashfs,$(2),$(3),$(4),$(5),$(6),$(7))
  415. endef
  416. define Image/Build/Template/4k/squashfs
  417. $(call Image/Build/$(1),squashfs-4k,$(2),$(3),$(4),$(5),$(6),$(7))
  418. endef
  419. define Image/Build/Template/64k/squashfs
  420. $(call Image/Build/$(1),squashfs,$(2),$(3),$(4),$(5),$(6),$(7))
  421. endef
  422. define Image/Build/Template/64k/jffs2-64k
  423. $(call Image/Build/$(1),jffs2-64k,$(2),$(3),$(4),$(5),$(6),$(7))
  424. endef
  425. define Image/Build/Template/128k/squashfs
  426. $(call Image/Build/$(1),squashfs,$(2),$(3),$(4),$(5),$(6),$(7))
  427. endef
  428. define Image/Build/Template/128k/jffs2-128k
  429. $(call Image/Build/$(1),jffs2-128k,$(2),$(3),$(4),$(5),$(6),$(7))
  430. endef
  431. define Image/Build/Profile/AP81
  432. $(call Image/Build/Template/$(fs_64k)/$(1),AP83,ap81,board=AP81)
  433. endef
  434. define Image/Build/Profile/AP83
  435. $(call Image/Build/Template/$(fs_64k)/$(1),AP83,ap83,board=AP83)
  436. endef
  437. define Image/Build/Profile/PB42
  438. $(call Image/Build/Template/$(fs_64k)/$(1),PB4X,pb42,board=PB42)
  439. endef
  440. define Image/Build/Profile/PB44
  441. $(call Image/Build/Template/$(fs_64k)/$(1),PB4X,pb44,board=PB44)
  442. endef
  443. define Image/Build/Profile/PB92
  444. $(call Image/Build/Template/$(fs_64k)/$(1),PB92,pb92,board=PB92)
  445. endef
  446. define Image/Build/Profile/WP543
  447. $(call Image/Build/Template/$(fs_64k)/$(1),MyLoader,wp543,0x200000,2M)
  448. $(call Image/Build/Template/$(fs_64k)/$(1),MyLoader,wp543,0x400000,4M)
  449. $(call Image/Build/Template/$(fs_64k)/$(1),MyLoader,wp543,0x800000,8M)
  450. $(call Image/Build/Template/$(fs_64k)/$(1),MyLoader,wp543,0x1000000,16M)
  451. endef
  452. define Image/Build/Profile/DIR600A1
  453. $(call Image/Build/Template/$(fs_64k)/$(1),Cameo7240,dir-600-a1,board=DIR-600-A1,"AP91-AR7240-RT-090223-00")
  454. endef
  455. define Image/Build/Profile/EAP7660D
  456. $(call Image/Build/Template/$(fs_128k)/$(1),PB4X,eap7660d,board=EAP7660D)
  457. endef
  458. define Image/Build/Profile/JA76PF
  459. $(call Image/Build/Template/$(fs_64k)/$(1),PB4X,ja76pf,board=JA76PF)
  460. endef
  461. define Image/Build/Profile/JWAP003
  462. $(call Image/Build/Template/$(fs_64k)/$(1),PB4X,jwap003,board=JWAP003)
  463. endef
  464. define Image/Build/Profile/FR54RTR
  465. $(call Image/Build/Template/$(fs_64k)/$(1),Cameo7240,fr-54rtr,board=DIR-600-A1,"AP91-AR7240-RT-090223-01")
  466. endef
  467. define Image/Build/Profile/DIR615C1
  468. $(call Image/Build/Template/$(fs_squash)/$(1),Cameo,dir-615-c1,board=DIR-615-C1,"AP81-AR9130-RT-070614-02")
  469. endef
  470. define Image/Build/Profile/TEW632BRP
  471. $(call Image/Build/Template/$(fs_squash)/$(1),Cameo,tew-632brp,board=TEW-632BRP,"AP81-AR9130-RT-070614-00")
  472. endef
  473. define Image/Build/Profile/TEW652BRP
  474. $(call Image/Build/Template/$(fs_squash)/$(1),Cameo,tew-652brp,board=TEW-632BRP,"AP81-AR9130-RT-080609-05")
  475. $(call Image/Build/Template/$(fs_squash)/$(1),Cameo,tew-652brp-recovery,board=TEW-632BRP,"AP81-AR9130-RT-070614-02")
  476. endef
  477. define Image/Build/Profile/A02RBW300N
  478. $(call Image/Build/Template/$(fs_squash)/$(1),Cameo,a02-rb-w300n,board=TEW-632BRP,"AP81-AR9130-RT-070614-03")
  479. endef
  480. define Image/Build/Profile/UBNTRS
  481. $(call Image/Build/Template/$(fs_64k)/$(1),UBNT,ubnt-rs,board=UBNT-RS,RS,RSx,ar7100)
  482. endef
  483. define Image/Build/Profile/UBNTRSPRO
  484. $(call Image/Build/Template/$(fs_64k)/$(1),UBNT,ubnt-rspro,board=UBNT-RSPRO,RSPRO,RSPRO,ar7100pro)
  485. endef
  486. define Image/Build/Profile/UBNTLSSR71
  487. $(call Image/Build/Template/$(fs_64k)/$(1),UBNT,ubnt-ls-sr71,board=UBNT-LS-SR71,LS-SR71,LS-SR71,ar7100)
  488. endef
  489. define Image/Build/Profile/UBNTBULLETM
  490. $(call Image/Build/Template/$(fs_64k)/$(1),UBNTXM,ubnt-bullet-m,board=UBNT-BM,XM,UBNTXM,ar7240)
  491. endef
  492. define Image/Build/Profile/UBNTROCKETM
  493. $(call Image/Build/Template/$(fs_64k)/$(1),UBNTXM,ubnt-rocket-m,board=UBNT-RM,XM,UBNTXM,ar7240)
  494. endef
  495. define Image/Build/Profile/UBNTNANOM
  496. $(call Image/Build/Template/$(fs_64k)/$(1),UBNTXM,ubnt-nano-m,board=UBNT-NM,XM,UBNTXM,ar7240)
  497. endef
  498. define Image/Build/Profile/UBNTUNIFI
  499. $(call Image/Build/Template/$(fs_64k)/$(1),UBNTXM,ubnt-unifi,board=UBNT-XM,XM,UBNTXM,ar7240)
  500. endef
  501. define Image/Build/Profile/UBNT
  502. $(call Image/Build/Profile/UBNTRS,$(1))
  503. $(call Image/Build/Profile/UBNTRSPRO,$(1))
  504. $(call Image/Build/Profile/UBNTLSSR71,$(1))
  505. $(call Image/Build/Profile/UBNTBULLETM,$(1))
  506. $(call Image/Build/Profile/UBNTROCKETM,$(1))
  507. $(call Image/Build/Profile/UBNTNANOM,$(1))
  508. $(call Image/Build/Profile/UBNTUNIFI,$(1))
  509. endef
  510. define Image/Build/Profile/MZKW04NU
  511. $(call Image/Build/Template/$(fs_64k)/$(1),Planex,mzk-w04nu,board=MZK-W04NU)
  512. endef
  513. define Image/Build/Profile/MZKW300NH
  514. $(call Image/Build/Template/$(fs_64k)/$(1),Planex,mzk-w300nh,board=MZK-W300NH)
  515. endef
  516. define Image/Build/Profile/NBG_460N_550N_550NH
  517. $(call Image/Build/Template/$(fs_64k)/$(1),ZyXEL,nbg460n_550n_550nh,board=NBG460N,NBG-460N)
  518. endef
  519. define Image/Build/Profile/TLMR3220V1
  520. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-mr3220-v1,board=TL-MR3220,TL-MR3220v1)
  521. endef
  522. define Image/Build/Profile/TLMR3420V1
  523. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-mr3420-v1,board=TL-MR3420,TL-MR3420v1)
  524. endef
  525. define Image/Build/Profile/TLWA901NDV1
  526. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wa901nd-v1,board=TL-WA901ND,TL-WA901NDv1)
  527. endef
  528. define Image/Build/Profile/TLWR741NDV1
  529. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr741nd-v1,board=TL-WR741ND,TL-WR741NDv1)
  530. endef
  531. define Image/Build/Profile/TLWR740NV1
  532. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr740n-v1,board=TL-WR741ND,TL-WR740Nv1)
  533. endef
  534. define Image/Build/Profile/TLWR841NV15
  535. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr841n-v1.5,board=TL-WR841N-v1.5,TL-WR841Nv1.5)
  536. endef
  537. define Image/Build/Profile/TLWR841NDV3
  538. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr841nd-v3,board=TL-WR941ND,TL-WR841NDv3)
  539. endef
  540. define Image/Build/Profile/TLWR841NDV5
  541. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr841nd-v5,board=TL-WR741ND,TL-WR841NDv5)
  542. endef
  543. define Image/Build/Profile/TLWR841NDV7
  544. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr841nd-v7,board=TL-WR741ND,TL-WR841NDv7)
  545. endef
  546. define Image/Build/Profile/TLWR941NDV2
  547. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr941nd-v2,board=TL-WR941ND,TL-WR941NDv2)
  548. endef
  549. define Image/Build/Profile/TLWR941NDV3
  550. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr941nd-v3,board=TL-WR941ND,TL-WR941NDv2)
  551. endef
  552. define Image/Build/Profile/TLWR941NDV4
  553. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr941nd-v4,board=TL-WR741ND,TL-WR941NDv4)
  554. endef
  555. define Image/Build/Profile/TLWR1043NDV1
  556. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr1043nd-v1,board=TL-WR1043ND,TL-WR1043NDv1)
  557. endef
  558. wndr3700_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1024k(kernel),6656k(rootfs),64k(art)ro,7680k@0x70000(firmware)
  559. wndr3700v2_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1024k(kernel),14848k(rootfs),64k(art)ro,15872k@0x70000(firmware)
  560. define Image/Build/Profile/WNDR3700
  561. $(call Image/Build/Template/$(fs_64k)/$(1),Netgear,wndr3700,board=WNDR3700,wndr3700_mtdlayout,3700,WNDR3700)
  562. $(call Image/Build/Template/$(fs_64k)/$(1),Netgear,wndr3700v2,board=WNDR3700v2,wndr3700v2_mtdlayout,3701,WNDR3700v2)
  563. endef
  564. define Image/Build/Profile/AP96
  565. $(call Image/Build/Template/$(fs_64k)/$(1),AP83,ap96,board=AP96)
  566. endef
  567. define Image/Build/Profile/WRT400N
  568. $(call Image/Build/Template/$(fs_64k)/$(1),WRT400N,wrt400n,board=WRT400N)
  569. endef
  570. define Image/Build/Profile/DIR825B1
  571. $(call Image/Build/Template/$(fs_64k)/$(1),DIR825B1,dir-825-b1,board=DIR-825-B1)
  572. endef
  573. define Image/Build/Profile/WRT160NL
  574. $(call Image/Build/Template/$(fs_64k)/$(1),CyberTAN,wrt160nl,board=WRT160NL,1.00.01)
  575. endef
  576. define Image/Build/Profile/WZRHPG300NH
  577. $(call Image/Build/Template/$(fs_128k)/$(1),WZRHPG300NH,wzr-hp-g300nh,board=WZR-HP-G300NH)
  578. endef
  579. define Image/Build/Profile/ZCN1523H28
  580. $(call Image/Build/Template/$(fs_64k)/$(1),Zcomax,zcn-1523h-2-8,board=ZCN-1523H-2)
  581. endef
  582. define Image/Build/Profile/ZCN1523H516
  583. $(call Image/Build/Template/$(fs_64k)/$(1),Zcomax,zcn-1523h-5-16,board=ZCN-1523H-5)
  584. endef
  585. define Image/Build/Profile/Default
  586. $(call Image/Build/Profile/AP81,$(1))
  587. $(call Image/Build/Profile/AP83,$(1))
  588. $(call Image/Build/Profile/A02RBW300N,$(1))
  589. $(call Image/Build/Profile/DIR600A1,$(1))
  590. $(call Image/Build/Profile/DIR615C1,$(1))
  591. $(call Image/Build/Profile/DIR825B1,$(1))
  592. $(call Image/Build/Profile/EAP7660D,$(1))
  593. $(call Image/Build/Profile/FR54RTR,$(1))
  594. $(call Image/Build/Profile/JA76PF,$(1))
  595. $(call Image/Build/Profile/JWAP003,$(1))
  596. $(call Image/Build/Profile/MZKW04NU,$(1))
  597. $(call Image/Build/Profile/MZKW300NH,$(1))
  598. $(call Image/Build/Profile/NBG_460N_550N_550NH,$(1))
  599. $(call Image/Build/Profile/PB42,$(1))
  600. $(call Image/Build/Profile/PB44,$(1))
  601. $(call Image/Build/Profile/PB92,$(1))
  602. $(call Image/Build/Profile/TEW632BRP,$(1))
  603. $(call Image/Build/Profile/TEW652BRP,$(1))
  604. $(call Image/Build/Profile/TLMR3220V1,$(1))
  605. $(call Image/Build/Profile/TLMR3420V1,$(1))
  606. $(call Image/Build/Profile/TLWA901NDV1,$(1))
  607. $(call Image/Build/Profile/TLWR741NDV1,$(1))
  608. $(call Image/Build/Profile/TLWR740NV1,$(1))
  609. $(call Image/Build/Profile/TLWR841NV15,$(1))
  610. $(call Image/Build/Profile/TLWR841NDV3,$(1))
  611. $(call Image/Build/Profile/TLWR841NDV5,$(1))
  612. $(call Image/Build/Profile/TLWR841NDV7,$(1))
  613. $(call Image/Build/Profile/TLWR941NDV2,$(1))
  614. $(call Image/Build/Profile/TLWR941NDV3,$(1))
  615. $(call Image/Build/Profile/TLWR941NDV4,$(1))
  616. $(call Image/Build/Profile/TLWR1043NDV1,$(1))
  617. $(call Image/Build/Profile/UBNT,$(1))
  618. $(call Image/Build/Profile/WP543,$(1))
  619. $(call Image/Build/Profile/WNDR3700,$(1))
  620. $(call Image/Build/Profile/AP96,$(1))
  621. $(call Image/Build/Profile/WRT400N,$(1))
  622. $(call Image/Build/Profile/WRT160NL,$(1))
  623. $(call Image/Build/Profile/WZRHPG300NH,$(1))
  624. $(call Image/Build/Profile/ZCN1523H28,$(1))
  625. $(call Image/Build/Profile/ZCN1523H516,$(1))
  626. endef
  627. define Image/Build/Profile/Minimal
  628. $(call Image/Build/Profile/Default,$(1))
  629. endef
  630. define Image/Build/Profile/Madwifi
  631. $(call Image/Build/Profile/EAP7660D,$(1))
  632. $(call Image/Build/Profile/UBNTRS,$(1))
  633. $(call Image/Build/Profile/UBNTRSPRO,$(1))
  634. $(call Image/Build/Profile/UBNTLSSR71,$(1))
  635. $(call Image/Build/Profile/WP543,$(1))
  636. endef
  637. define Image/Build/squashfs
  638. $(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
  639. dd if=$(KDIR)/root.squashfs of=$(KDIR)/root.squashfs-4k.tmp0 bs=4k conv=sync
  640. $(call add_jffs2_mark,$(KDIR)/root.squashfs-4k.tmp0)
  641. dd if=$(KDIR)/root.squashfs-4k.tmp0 of=$(BIN_DIR)/$(IMG_PREFIX)-root.squashfs-4k bs=4k conv=sync
  642. $(call add_jffs2_mark,$(BIN_DIR)/$(IMG_PREFIX)-root.squashfs-4k)
  643. rm -f $(KDIR)/root.squashfs-4k.tmp0
  644. endef
  645. define Image/Build/Initramfs
  646. $(call Image/Build/Profile/$(PROFILE),initramfs)
  647. endef
  648. define Image/Build
  649. $(call Image/Build/$(1))
  650. dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync
  651. $(call Image/Build/Profile/$(PROFILE),$(1))
  652. endef
  653. $(eval $(call BuildImage))