Makefile 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. #
  2. # Copyright (C) 2013 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 Image/Prepare
  10. rm -f $(KDIR)/fs_mark
  11. echo -ne '\xde\xad\xc0\xde' > $(KDIR)/fs_mark
  12. $(call prepare_generic_squashfs,$(KDIR)/fs_mark)
  13. # For UBI we want only one extra block
  14. rm -f $(KDIR)/ubi_mark
  15. echo -ne '\xde\xad\xc0\xde' > $(KDIR)/ubi_mark
  16. endef
  17. define Build/lzma-d16
  18. $(STAGING_DIR_HOST)/bin/lzma e $@ -d16 $(1) [email protected]
  19. mv [email protected] $@
  20. endef
  21. # Similar to Build/tplink-safeloader but uses TRX instead of clean kernel
  22. define Build/bcm53xx-tplink-safeloader
  23. $(STAGING_DIR_HOST)/bin/trx \
  24. -o [email protected] \
  25. -m 33554432 \
  26. -f $(IMAGE_KERNEL) -a 1024
  27. $(STAGING_DIR_HOST)/bin/tplink-safeloader \
  28. -B $(TPLINK_BOARD) \
  29. -k [email protected] \
  30. -r $@ \
  31. -j \
  32. -o [email protected]
  33. mv [email protected] $@
  34. rm [email protected]
  35. endef
  36. define Build/buffalo-wzr-header
  37. $(eval product=$(word 1,$(1)))
  38. $(eval region=$(word 2,$(1)))
  39. ( \
  40. echo $(product)_$(BUFFALO_TAG_VERSION)_$(BUFFALO_TAG_MINOR)_$(region)_$(BUFFALO_TAG_PLATFORM); \
  41. echo filelen=$$(stat -c%s $@); \
  42. cat $@ \
  43. ) > [email protected]
  44. mv [email protected] $@
  45. endef
  46. # TRX with only one (kernel) partition
  47. define Build/trx
  48. $(STAGING_DIR_HOST)/bin/trx \
  49. -o [email protected] \
  50. -m 33554432 \
  51. -f $@
  52. mv [email protected] $@
  53. endef
  54. define Build/trx-serial
  55. $(STAGING_DIR_HOST)/bin/otrx create [email protected] \
  56. -f $(IMAGE_KERNEL) -a 1024 \
  57. -f $@ -a 0x10000 -A $(KDIR)/fs_mark
  58. mv [email protected] $@
  59. endef
  60. define Build/trx-nand
  61. # kernel: always use 4 MiB (-28 B or TRX header) to allow upgrades even
  62. # if it grows up between releases
  63. # root: UBI with one extra block containing UBI mark to trigger erasing
  64. # rest of partition
  65. $(STAGING_DIR_HOST)/bin/otrx create [email protected] \
  66. -f $(IMAGE_KERNEL) -a 0x20000 -b 0x400000 \
  67. -f $@ \
  68. -A $(KDIR)/ubi_mark -a 0x20000
  69. mv [email protected] $@
  70. endef
  71. define Build/asus-trx
  72. $(STAGING_DIR_HOST)/bin/asustrx \
  73. -p $(PRODUCTID) -i $@ -o [email protected]
  74. mv [email protected] $@
  75. endef
  76. define Build/seama-nand
  77. # Seama entity
  78. $(STAGING_DIR_HOST)/bin/oseama \
  79. entity [email protected] \
  80. -m "dev=/dev/mtdblock/7" \
  81. -m "type=firmware" \
  82. -f $(IMAGE_KERNEL) \
  83. -b 0x400000 \
  84. -f $@ \
  85. -f $(KDIR)/ubi_mark
  86. # Seama container
  87. $(STAGING_DIR_HOST)/bin/seama \
  88. -s $@ \
  89. -m "signature=$(SIGNATURE)" \
  90. -i [email protected]
  91. endef
  92. DEVICE_VARS += PRODUCTID SIGNATURE NETGEAR_BOARD_ID NETGEAR_REGION TPLINK_BOARD
  93. DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR
  94. IEEE8021X := wpad-basic
  95. B43 := $(IEEE8021X) kmod-b43
  96. BRCMFMAC_43602A1 := $(IEEE8021X) kmod-brcmfmac brcmfmac-firmware-43602a1-pcie
  97. BRCMFMAC_4366B1 := $(IEEE8021X) kmod-brcmfmac brcmfmac-firmware-4366b1-pcie
  98. BRCMFMAC_4366C0 := $(IEEE8021X) kmod-brcmfmac brcmfmac-firmware-4366c0-pcie
  99. USB2_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-phy-bcm-ns-usb2
  100. USB2_PACKAGES += kmod-usb-ledtrig-usbport
  101. USB3_PACKAGES := $(USB2_PACKAGES) kmod-usb3 kmod-phy-bcm-ns-usb3
  102. define Device/Default
  103. # .dtb files are prefixed by SoC type, e.g. bcm4708- which is not included in device/image names
  104. # extract the full dtb name based on the device info
  105. DEVICE_DTS := $(patsubst %.dtb,%,$(notdir $(wildcard $(if $(IB),$(KDIR),$(DTS_DIR))/*-$(1).dtb)))
  106. KERNEL := kernel-bin | append-dtb | lzma-d16
  107. KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
  108. KERNEL_INITRAMFS_SUFFIX := .trx
  109. KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma-d16 | trx
  110. FILESYSTEMS := squashfs
  111. KERNEL_NAME := zImage
  112. IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1).$$(2)
  113. IMAGES := trx
  114. BLOCKSIZE := 128k
  115. PAGESIZE := 2048
  116. IMAGE/trx := append-ubi | trx-nand
  117. endef
  118. define Device/asus
  119. IMAGES := trx
  120. IMAGE/trx := append-ubi | trx-nand | asus-trx
  121. endef
  122. define Device/asus-rt-ac56u
  123. DEVICE_VENDOR := ASUS
  124. DEVICE_MODEL := RT-AC56U
  125. DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
  126. endef
  127. TARGET_DEVICES += asus-rt-ac56u
  128. define Device/asus-rt-ac68u
  129. DEVICE_VENDOR := ASUS
  130. DEVICE_MODEL := RT-AC68U
  131. DEVICE_PACKAGES := $(USB3_PACKAGES)
  132. endef
  133. TARGET_DEVICES += asus-rt-ac68u
  134. define Device/asus-rt-ac87u
  135. DEVICE_VENDOR := ASUS
  136. DEVICE_MODEL := RT-AC87U
  137. DEVICE_PACKAGES := $(USB3_PACKAGES)
  138. endef
  139. TARGET_DEVICES += asus-rt-ac87u
  140. define Device/asus-rt-n18u
  141. DEVICE_VENDOR := ASUS
  142. DEVICE_MODEL := RT-N18U
  143. DEVICE_PACKAGES := $(USB3_PACKAGES)
  144. endef
  145. TARGET_DEVICES += asus-rt-n18u
  146. # Buffalo devices have TFTP recovery mode which can work nicely with initramfs
  147. # kernels.
  148. # We should have two initramfs images for Buffalo: plain initramfs kernel and
  149. # TRX with initramfs kernel. It's not possible right now so let's just build
  150. # plain initramfs kernel as it may be more useful.
  151. define Device/buffalo/Default
  152. DEVICE_VENDOR := Buffalo
  153. KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
  154. KERNEL_INITRAMFS = $$(KERNEL)
  155. endef
  156. define Device/buffalo-wxr-1900dhp
  157. $(call Device/buffalo/Default)
  158. DEVICE_MODEL := WXR-1900DHP
  159. DEVICE_PACKAGES := $(USB3_PACKAGES)
  160. endef
  161. TARGET_DEVICES += buffalo-wxr-1900dhp
  162. define Device/buffalo-wzr-600dhp2
  163. $(call Device/buffalo/Default)
  164. DEVICE_MODEL := WZR-600DHP2
  165. DEVICE_PACKAGES := $(B43) $(USB2_PACKAGES)
  166. endef
  167. TARGET_DEVICES += buffalo-wzr-600dhp2
  168. define Device/buffalo-wzr-900dhp
  169. $(call Device/buffalo/Default)
  170. DEVICE_MODEL := WZR-900DHP
  171. DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
  172. BUFFALO_TAG_PLATFORM := bcm
  173. BUFFALO_TAG_VERSION := 9.99
  174. BUFFALO_TAG_MINOR := 9.99
  175. IMAGES += factory-DHP-EU.bin factory-DHP2-JP.bin
  176. IMAGE/factory-DHP-EU.bin := \
  177. append-ubi | trx-nand | buffalo-wzr-header WZR-900DHP EU | \
  178. buffalo-enc WZR-900DHP $$(BUFFALO_TAG_VERSION) | \
  179. buffalo-tag-dhp WZR-900DHP EU mlang20 | buffalo-enc-tag | \
  180. buffalo-dhp-image
  181. IMAGE/factory-DHP2-JP.bin := \
  182. append-ubi | trx-nand | buffalo-wzr-header WZR-900DHP2 JP | \
  183. buffalo-enc WZR-900DHP2 $$(BUFFALO_TAG_VERSION) | \
  184. buffalo-tag-dhp WZR-900DHP2 JP jp | buffalo-enc-tag | \
  185. buffalo-dhp-image
  186. endef
  187. TARGET_DEVICES += buffalo-wzr-900dhp
  188. define Device/buffalo-wzr-1750dhp
  189. $(call Device/buffalo/Default)
  190. DEVICE_MODEL := WZR-1750DHP
  191. DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
  192. endef
  193. TARGET_DEVICES += buffalo-wzr-1750dhp
  194. define Device/dlink
  195. DEVICE_VENDOR := D-Link
  196. IMAGES := bin
  197. IMAGE/bin := append-ubi | seama-nand
  198. endef
  199. define Device/dlink-dir-885l
  200. DEVICE_MODEL := DIR-885L
  201. DEVICE_PACKAGES := $(BRCMFMAC_4366B1) $(USB3_PACKAGES)
  202. $(Device/dlink)
  203. SIGNATURE := wrgac42_dlink.2015_dir885l
  204. endef
  205. TARGET_DEVICES += dlink-dir-885l
  206. # Linksys devices are disabled due to problem with 2 TRX partitions
  207. define Device/linksys-ea6300-v1
  208. DEVICE_VENDOR := Linksys
  209. DEVICE_MODEL := EA6300
  210. DEVICE_VARIANT := v1
  211. DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
  212. endef
  213. # TARGET_DEVICES += linksys-ea6300-v1
  214. define Device/linksys-ea6500-v2
  215. DEVICE_VENDOR := Linksys
  216. DEVICE_MODEL := EA6500
  217. DEVICE_VARIANT := v2
  218. DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
  219. endef
  220. TARGET_DEVICES += linksys-ea6500-v2
  221. define Device/linksys-ea9200
  222. DEVICE_VENDOR := Linksys
  223. DEVICE_MODEL := EA9200
  224. DEVICE_VARIANT := v1
  225. DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES)
  226. endef
  227. # TARGET_DEVICES += linksys-ea9200
  228. define Device/linksys-ea9500
  229. DEVICE_VENDOR := Linksys
  230. DEVICE_MODEL := EA9500
  231. DEVICE_PACKAGES := $(BRCMFMAC_4366C0) $(USB3_PACKAGES)
  232. DEVICE_DTS := bcm47094-linksys-panamera
  233. endef
  234. # TARGET_DEVICES += linksys-ea9500
  235. define Device/netgear
  236. DEVICE_VENDOR := NETGEAR
  237. IMAGES := chk
  238. IMAGE/chk := append-ubi | trx-nand | netgear-chk
  239. NETGEAR_REGION := 1
  240. endef
  241. define Device/netgear-r6250
  242. DEVICE_MODEL := R6250
  243. DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
  244. $(Device/netgear)
  245. NETGEAR_BOARD_ID := U12H245T00_NETGEAR
  246. endef
  247. TARGET_DEVICES += netgear-r6250
  248. define Device/netgear-r6300-v2
  249. DEVICE_MODEL := R6300
  250. DEVICE_VARIANT := v2
  251. DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
  252. $(Device/netgear)
  253. NETGEAR_BOARD_ID := U12H240T00_NETGEAR
  254. endef
  255. TARGET_DEVICES += netgear-r6300-v2
  256. define Device/netgear-r7000
  257. DEVICE_MODEL := R7000
  258. DEVICE_PACKAGES := $(USB3_PACKAGES)
  259. $(Device/netgear)
  260. NETGEAR_BOARD_ID := U12H270T00_NETGEAR
  261. endef
  262. TARGET_DEVICES += netgear-r7000
  263. define Device/netgear-r7900
  264. DEVICE_MODEL := R7900
  265. DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES)
  266. $(Device/netgear)
  267. NETGEAR_BOARD_ID := U12H315T30_NETGEAR
  268. endef
  269. TARGET_DEVICES += netgear-r7900
  270. define Device/netgear-r8000
  271. DEVICE_MODEL := R8000
  272. DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES)
  273. $(Device/netgear)
  274. NETGEAR_BOARD_ID := U12H315T00_NETGEAR
  275. endef
  276. TARGET_DEVICES += netgear-r8000
  277. define Device/netgear-r8500
  278. DEVICE_MODEL := R8500
  279. DEVICE_PACKAGES := $(BRCMFMAC_4366B1) $(USB3_PACKAGES)
  280. $(Device/netgear)
  281. NETGEAR_BOARD_ID := U12H334T00_NETGEAR
  282. endef
  283. # TARGET_DEVICES += netgear-r8500
  284. define Device/smartrg-sr400ac
  285. DEVICE_VENDOR := SmartRG
  286. DEVICE_MODEL := SR400ac
  287. DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES)
  288. IMAGES := trx
  289. IMAGE/trx := append-rootfs | trx-serial
  290. KERNEL_INITRAMFS_SUFFIX := .bin
  291. KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma-d16
  292. endef
  293. TARGET_DEVICES += smartrg-sr400ac
  294. define Device/phicomm-k3
  295. DEVICE_VENDOR := PHICOMM
  296. DEVICE_MODEL := K3
  297. DEVICE_PACKAGES := $(BRCMFMAC_4366C0) $(USB3_PACKAGES)
  298. IMAGES := trx
  299. endef
  300. TARGET_DEVICES += phicomm-k3
  301. define Device/tenda-ac9
  302. DEVICE_VENDOR := Tenda
  303. DEVICE_MODEL := AC9
  304. DEVICE_PACKAGES := $(B43) $(USB2_PACKAGES)
  305. IMAGES := trx
  306. IMAGE/trx := append-rootfs | trx-serial
  307. endef
  308. TARGET_DEVICES += tenda-ac9
  309. define Device/tplink-archer-c5-v2
  310. DEVICE_VENDOR := TP-LINK
  311. DEVICE_MODEL := Archer C5
  312. DEVICE_VARIANT := v2
  313. DEVICE_PACKAGES := $(B43) $(USB2_PACKAGES)
  314. IMAGES := bin
  315. IMAGE/bin := append-rootfs | bcm53xx-tplink-safeloader
  316. TPLINK_BOARD := ARCHER-C5-V2
  317. endef
  318. TARGET_DEVICES += tplink-archer-c5-v2
  319. define Device/tplink-archer-c9-v1
  320. DEVICE_VENDOR := TP-LINK
  321. DEVICE_MODEL := Archer C9
  322. DEVICE_VARIANT := v1
  323. DEVICE_PACKAGES := $(USB3_PACKAGES)
  324. IMAGES := bin
  325. IMAGE/bin := append-rootfs | bcm53xx-tplink-safeloader
  326. TPLINK_BOARD := ARCHERC9
  327. endef
  328. TARGET_DEVICES += tplink-archer-c9-v1
  329. $(eval $(call BuildImage))