Makefile 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  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. wndr3700_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1024k(kernel),6656k(rootfs),64k(art)ro,7680k@0x70000(firmware)
  322. define Image/Build/WNDR3700
  323. $(call PatchKernelLzma,$(2),$(3) $(wndr3700_mtdlayout))
  324. $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage)
  325. mkdir -p $(KDIR)/wndr3700/image
  326. $(STAGING_DIR_HOST)/bin/wndr3700 \
  327. $(KDIR)/vmlinux-$(2).uImage \
  328. $(KDIR)/wndr3700/image/uImage
  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. -rm -f $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp*
  342. ( \
  343. dd if=$(KDIR)/vmlinux-$(2).uImage.squashfs bs=1024k conv=sync; \
  344. dd if=$(KDIR)/root.$(1) bs=64k; \
  345. ) > $(call imgname,$(1),$(2))-sysupgrade.bin
  346. $(STAGING_DIR_HOST)/bin/mkdniimg \
  347. -B WNDR3700 -v OpenWrt.$(REVISION) \
  348. -i $(call imgname,$(1),$(2))-sysupgrade.bin \
  349. -o $(call imgname,$(1),$(2))-factory.img
  350. endef
  351. define Image/Build/WNDR3700/initramfs
  352. $(call PatchKernelLzma,$(2),$(3) $(wndr3700_mtdlayout))
  353. $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage)
  354. $(STAGING_DIR_HOST)/bin/wndr3700 \
  355. $(KDIR)/vmlinux-$(2).uImage \
  356. $(call imgname,$(1),$(2))-uImage.bin
  357. endef
  358. define Image/Build/Zcomax
  359. $(call PatchKernelLzma,$(2),$(3))
  360. $(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage.bin)
  361. -$(STAGING_DIR_HOST)/bin/mkzcfw \
  362. -B $(2) \
  363. -k $(KDIR)/vmlinux-$(2).uImage.bin \
  364. -r $(BIN_DIR)/$(IMG_PREFIX)-root.$(1) \
  365. -o $(call imgname,$(1),$(2))-factory.img
  366. ( \
  367. dd if=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=6208k count=1 conv=sync; \
  368. dd if=$(KDIR)/vmlinux-$(2).uImage.bin bs=1472k count=1; \
  369. ) > $(call imgname,$(1),$(2))-sysupgrade.bin
  370. endef
  371. define Image/Build/Template/initramfs/initramfs
  372. $(call Image/Build/$(1)/initramfs,initramfs,$(2),$(3),$(4),$(5),$(6),$(7))
  373. endef
  374. define Image/Build/Template/all/squashfs
  375. $(call Image/Build/$(1),squashfs,$(2),$(3),$(4),$(5),$(6),$(7))
  376. endef
  377. define Image/Build/Template/all/jffs2-64k
  378. $(call Image/Build/$(1),jffs2-64k,$(2),$(3),$(4),$(5),$(6),$(7))
  379. endef
  380. define Image/Build/Template/all/jffs2-128k
  381. $(call Image/Build/$(1),jffs2-128k,$(2),$(3),$(4),$(5),$(6),$(7))
  382. endef
  383. define Image/Build/Template/squashfs-only/squashfs
  384. $(call Image/Build/$(1),squashfs,$(2),$(3),$(4),$(5),$(6),$(7))
  385. endef
  386. define Image/Build/Template/4k/squashfs
  387. $(call Image/Build/$(1),squashfs-4k,$(2),$(3),$(4),$(5),$(6),$(7))
  388. endef
  389. define Image/Build/Template/64k/squashfs
  390. $(call Image/Build/$(1),squashfs,$(2),$(3),$(4),$(5),$(6),$(7))
  391. endef
  392. define Image/Build/Template/64k/jffs2-64k
  393. $(call Image/Build/$(1),jffs2-64k,$(2),$(3),$(4),$(5),$(6),$(7))
  394. endef
  395. define Image/Build/Template/128k/squashfs
  396. $(call Image/Build/$(1),squashfs,$(2),$(3),$(4),$(5),$(6),$(7))
  397. endef
  398. define Image/Build/Template/128k/jffs2-128k
  399. $(call Image/Build/$(1),jffs2-128k,$(2),$(3),$(4),$(5),$(6),$(7))
  400. endef
  401. define Image/Build/Profile/AP81
  402. $(call Image/Build/Template/$(fs_64k)/$(1),AP83,ap81,board=AP81)
  403. endef
  404. define Image/Build/Profile/AP83
  405. $(call Image/Build/Template/$(fs_64k)/$(1),AP83,ap83,board=AP83)
  406. endef
  407. define Image/Build/Profile/PB42
  408. $(call Image/Build/Template/$(fs_64k)/$(1),PB4X,pb42,board=PB42)
  409. endef
  410. define Image/Build/Profile/PB44
  411. $(call Image/Build/Template/$(fs_64k)/$(1),PB4X,pb44,board=PB44)
  412. endef
  413. define Image/Build/Profile/PB92
  414. $(call Image/Build/Template/$(fs_64k)/$(1),PB92,pb92,board=PB92)
  415. endef
  416. define Image/Build/Profile/WP543
  417. $(call Image/Build/Template/$(fs_64k)/$(1),MyLoader,wp543,0x200000,2M)
  418. $(call Image/Build/Template/$(fs_64k)/$(1),MyLoader,wp543,0x400000,4M)
  419. $(call Image/Build/Template/$(fs_64k)/$(1),MyLoader,wp543,0x800000,8M)
  420. $(call Image/Build/Template/$(fs_64k)/$(1),MyLoader,wp543,0x1000000,16M)
  421. endef
  422. define Image/Build/Profile/DIR600A1
  423. $(call Image/Build/Template/$(fs_64k)/$(1),Cameo7240,dir-600-a1,board=DIR-600-A1,"AP91-AR7240-RT-090223-00")
  424. endef
  425. define Image/Build/Profile/EAP7660D
  426. $(call Image/Build/Template/$(fs_128k)/$(1),PB4X,eap7660d,board=EAP7660D)
  427. endef
  428. define Image/Build/Profile/JWAP003
  429. $(call Image/Build/Template/$(fs_64k)/$(1),PB4X,jwap003,board=JWAP003)
  430. endef
  431. define Image/Build/Profile/FR54RTR
  432. $(call Image/Build/Template/$(fs_64k)/$(1),Cameo7240,fr-54rtr,board=DIR-600-A1,"AP91-AR7240-RT-090223-01")
  433. endef
  434. define Image/Build/Profile/DIR615C1
  435. $(call Image/Build/Template/$(fs_squash)/$(1),Cameo,dir-615-c1,board=DIR-615-C1,"AP81-AR9130-RT-070614-02")
  436. endef
  437. define Image/Build/Profile/TEW632BRP
  438. $(call Image/Build/Template/$(fs_squash)/$(1),Cameo,tew-632brp,board=TEW-632BRP,"AP81-AR9130-RT-070614-00")
  439. endef
  440. define Image/Build/Profile/TEW652BRP
  441. $(call Image/Build/Template/$(fs_squash)/$(1),Cameo,tew-652brp,board=TEW-632BRP,"AP81-AR9130-RT-080609-05")
  442. endef
  443. define Image/Build/Profile/A02RBW300N
  444. $(call Image/Build/Template/$(fs_squash)/$(1),Cameo,a02-rb-w300n,board=TEW-632BRP,"AP81-AR9130-RT-070614-03")
  445. endef
  446. define Image/Build/Profile/UBNTRS
  447. $(call Image/Build/Template/$(fs_64k)/$(1),UBNT,ubnt-rs,board=UBNT-RS,RS,RSx,ar7100)
  448. endef
  449. define Image/Build/Profile/UBNTRSPRO
  450. $(call Image/Build/Template/$(fs_64k)/$(1),UBNT,ubnt-rspro,board=UBNT-RSPRO,RSPRO,RSPRO,ar7100pro)
  451. endef
  452. define Image/Build/Profile/UBNTLSSR71
  453. $(call Image/Build/Template/$(fs_64k)/$(1),UBNT,ubnt-ls-sr71,board=UBNT-LS-SR71,LS-SR71,LS-SR71,ar7100)
  454. endef
  455. define Image/Build/Profile/UBNTBULLETM
  456. $(call Image/Build/Template/$(fs_64k)/$(1),UBNTXM,ubnt-bullet-m,board=UBNT-BM,XM,UBNTXM,ar7240)
  457. endef
  458. define Image/Build/Profile/UBNTROCKETM
  459. $(call Image/Build/Template/$(fs_64k)/$(1),UBNTXM,ubnt-rocket-m,board=UBNT-RM,XM,UBNTXM,ar7240)
  460. endef
  461. define Image/Build/Profile/UBNTNANOM
  462. $(call Image/Build/Template/$(fs_64k)/$(1),UBNTXM,ubnt-nano-m,board=UBNT-NM,XM,UBNTXM,ar7240)
  463. endef
  464. define Image/Build/Profile/UBNTUNIFI
  465. $(call Image/Build/Template/$(fs_64k)/$(1),UBNTXM,ubnt-unifi,board=UBNT-XM,XM,UBNTXM,ar7240)
  466. endef
  467. define Image/Build/Profile/UBNT
  468. $(call Image/Build/Profile/UBNTRS,$(1))
  469. $(call Image/Build/Profile/UBNTRSPRO,$(1))
  470. $(call Image/Build/Profile/UBNTLSSR71,$(1))
  471. $(call Image/Build/Profile/UBNTBULLETM,$(1))
  472. $(call Image/Build/Profile/UBNTROCKETM,$(1))
  473. $(call Image/Build/Profile/UBNTNANOM,$(1))
  474. $(call Image/Build/Profile/UBNTUNIFI,$(1))
  475. endef
  476. define Image/Build/Profile/MZKW04NU
  477. $(call Image/Build/Template/$(fs_64k)/$(1),Planex,mzk-w04nu,board=MZK-W04NU)
  478. endef
  479. define Image/Build/Profile/MZKW300NH
  480. $(call Image/Build/Template/$(fs_64k)/$(1),Planex,mzk-w300nh,board=MZK-W300NH)
  481. endef
  482. define Image/Build/Profile/TLMR3420V1
  483. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-mr3420-v1,board=TL-MR3420,TL-MR3420v1)
  484. endef
  485. define Image/Build/Profile/TLWA901NDV1
  486. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wa901nd-v1,board=TL-WA901ND,TL-WA901NDv1)
  487. endef
  488. define Image/Build/Profile/TLWR741NDV1
  489. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr741nd-v1,board=TL-WR741ND,TL-WR741NDv1)
  490. endef
  491. define Image/Build/Profile/TLWR841NV15
  492. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr841n-v1.5,board=TL-WR841N-v1.5,TL-WR841Nv1.5)
  493. endef
  494. define Image/Build/Profile/TLWR841NDV3
  495. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr841nd-v3,board=TL-WR941ND,TL-WR841NDv3)
  496. endef
  497. define Image/Build/Profile/TLWR841NDV5
  498. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr841nd-v5,board=TL-WR741ND,TL-WR841NDv5)
  499. endef
  500. define Image/Build/Profile/TLWR841NDV7
  501. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr841nd-v7,board=TL-WR741ND,TL-WR841NDv7)
  502. endef
  503. define Image/Build/Profile/TLWR941NDV2
  504. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr941nd-v2,board=TL-WR941ND,TL-WR941NDv2)
  505. endef
  506. define Image/Build/Profile/TLWR941NDV3
  507. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr941nd-v3,board=TL-WR941ND,TL-WR941NDv2)
  508. endef
  509. define Image/Build/Profile/TLWR941NDV4
  510. $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr941nd-v4,board=TL-WR741ND,TL-WR941NDv4)
  511. endef
  512. define Image/Build/Profile/TLWR1043NDV1
  513. $(call Image/Build/Template/$(fs_squash)/$(1),TPLINK,tl-wr1043nd-v1,board=TL-WR1043ND,TL-WR1043NDv1)
  514. endef
  515. define Image/Build/Profile/WNDR3700
  516. $(call Image/Build/Template/$(fs_64k)/$(1),WNDR3700,wndr3700,board=WNDR3700)
  517. endef
  518. define Image/Build/Profile/AP96
  519. $(call Image/Build/Template/$(fs_64k)/$(1),AP83,ap96,board=AP96)
  520. endef
  521. define Image/Build/Profile/WRT400N
  522. $(call Image/Build/Template/$(fs_64k)/$(1),WRT400N,wrt400n,board=WRT400N)
  523. endef
  524. define Image/Build/Profile/DIR825B1
  525. $(call Image/Build/Template/$(fs_64k)/$(1),DIR825B1,dir-825-b1,board=DIR-825-B1)
  526. endef
  527. define Image/Build/Profile/WRT160NL
  528. $(call Image/Build/Template/$(fs_64k)/$(1),CyberTAN,wrt160nl,board=WRT160NL,1.00.01)
  529. endef
  530. define Image/Build/Profile/WZRHPG300NH
  531. $(call Image/Build/Template/$(fs_128k)/$(1),WZRHPG300NH,wzr-hp-g300nh,board=WZR-HP-G300NH)
  532. endef
  533. define Image/Build/Profile/ZCN1523H28
  534. $(call Image/Build/Template/$(fs_64k)/$(1),Zcomax,zcn-1523h-2-8,board=ZCN-1523H-2)
  535. endef
  536. define Image/Build/Profile/ZCN1523H516
  537. $(call Image/Build/Template/$(fs_64k)/$(1),Zcomax,zcn-1523h-5-16,board=ZCN-1523H-5)
  538. endef
  539. define Image/Build/Profile/Default
  540. $(call Image/Build/Profile/AP81,$(1))
  541. $(call Image/Build/Profile/AP83,$(1))
  542. $(call Image/Build/Profile/A02RBW300N,$(1))
  543. $(call Image/Build/Profile/DIR600A1,$(1))
  544. $(call Image/Build/Profile/DIR615C1,$(1))
  545. $(call Image/Build/Profile/DIR825B1,$(1))
  546. $(call Image/Build/Profile/EAP7660D,$(1))
  547. $(call Image/Build/Profile/FR54RTR,$(1))
  548. $(call Image/Build/Profile/JWAP003,$(1))
  549. $(call Image/Build/Profile/MZKW04NU,$(1))
  550. $(call Image/Build/Profile/MZKW300NH,$(1))
  551. $(call Image/Build/Profile/PB42,$(1))
  552. $(call Image/Build/Profile/PB44,$(1))
  553. $(call Image/Build/Profile/PB92,$(1))
  554. $(call Image/Build/Profile/TEW632BRP,$(1))
  555. $(call Image/Build/Profile/TEW652BRP,$(1))
  556. $(call Image/Build/Profile/TLMR3420V1,$(1))
  557. $(call Image/Build/Profile/TLWA901NDV1,$(1))
  558. $(call Image/Build/Profile/TLWR741NDV1,$(1))
  559. $(call Image/Build/Profile/TLWR841NV15,$(1))
  560. $(call Image/Build/Profile/TLWR841NDV3,$(1))
  561. $(call Image/Build/Profile/TLWR841NDV5,$(1))
  562. $(call Image/Build/Profile/TLWR841NDV7,$(1))
  563. $(call Image/Build/Profile/TLWR941NDV2,$(1))
  564. $(call Image/Build/Profile/TLWR941NDV3,$(1))
  565. $(call Image/Build/Profile/TLWR941NDV4,$(1))
  566. $(call Image/Build/Profile/TLWR1043NDV1,$(1))
  567. $(call Image/Build/Profile/UBNT,$(1))
  568. $(call Image/Build/Profile/WP543,$(1))
  569. $(call Image/Build/Profile/WNDR3700,$(1))
  570. $(call Image/Build/Profile/AP96,$(1))
  571. $(call Image/Build/Profile/WRT400N,$(1))
  572. $(call Image/Build/Profile/WRT160NL,$(1))
  573. $(call Image/Build/Profile/WZRHPG300NH,$(1))
  574. $(call Image/Build/Profile/ZCN1523H28,$(1))
  575. $(call Image/Build/Profile/ZCN1523H516,$(1))
  576. endef
  577. define Image/Build/Profile/Minimal
  578. $(call Image/Build/Profile/Default,$(1))
  579. endef
  580. define Image/Build/Profile/Madwifi
  581. $(call Image/Build/Profile/EAP7660D,$(1))
  582. $(call Image/Build/Profile/UBNTRS,$(1))
  583. $(call Image/Build/Profile/UBNTRSPRO,$(1))
  584. $(call Image/Build/Profile/UBNTLSSR71,$(1))
  585. $(call Image/Build/Profile/WP543,$(1))
  586. endef
  587. define Image/Build/squashfs
  588. $(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
  589. dd if=$(KDIR)/root.squashfs of=$(KDIR)/root.squashfs-4k.tmp0 bs=4k conv=sync
  590. $(call add_jffs2_mark,$(KDIR)/root.squashfs-4k.tmp0)
  591. dd if=$(KDIR)/root.squashfs-4k.tmp0 of=$(BIN_DIR)/$(IMG_PREFIX)-root.squashfs-4k bs=4k conv=sync
  592. $(call add_jffs2_mark,$(BIN_DIR)/$(IMG_PREFIX)-root.squashfs-4k)
  593. rm -f $(KDIR)/root.squashfs-4k.tmp0
  594. endef
  595. define Image/Build/Initramfs
  596. $(call Image/Build/Profile/$(PROFILE),initramfs)
  597. endef
  598. define Image/Build
  599. $(call Image/Build/$(1))
  600. dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync
  601. $(call Image/Build/Profile/$(PROFILE),$(1))
  602. endef
  603. $(eval $(call BuildImage))