Makefile 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. include $(TOPDIR)/rules.mk
  2. PKG_NAME:=mt76
  3. PKG_RELEASE=2
  4. PKG_LICENSE:=GPLv2
  5. PKG_LICENSE_FILES:=
  6. PKG_SOURCE_URL:=https://github.com/openwrt/mt76
  7. PKG_SOURCE_PROTO:=git
  8. PKG_SOURCE_DATE:=2020-09-23
  9. PKG_SOURCE_VERSION:=b22977c2727db7fea8d487573edb3aa668d8309d
  10. PKG_MIRROR_HASH:=4182823ec5a97d842e7404b3c8139de8af4f35948008890d50e4dad95add996b
  11. PKG_MAINTAINER:=Felix Fietkau <[email protected]>
  12. PKG_BUILD_PARALLEL:=1
  13. PKG_CONFIG_DEPENDS += \
  14. CONFIG_PACKAGE_kmod-mt76-usb \
  15. CONFIG_PACKAGE_kmod-mt76x02-common \
  16. CONFIG_PACKAGE_kmod-mt76x0-common \
  17. CONFIG_PACKAGE_kmod-mt76x0u \
  18. CONFIG_PACKAGE_kmod-mt76x2-common \
  19. CONFIG_PACKAGE_kmod-mt76x2 \
  20. CONFIG_PACKAGE_kmod-mt76x2u \
  21. CONFIG_PACKAGE_kmod-mt7603 \
  22. CONFIG_PACKAGE_CFG80211_TESTMODE
  23. STAMP_CONFIGURED_DEPENDS := $(STAGING_DIR)/usr/include/mac80211-backport/backport/autoconf.h
  24. include $(INCLUDE_DIR)/kernel.mk
  25. include $(INCLUDE_DIR)/package.mk
  26. include $(INCLUDE_DIR)/cmake.mk
  27. CMAKE_SOURCE_DIR:=$(PKG_BUILD_DIR)/tools
  28. CMAKE_BINARY_DIR:=$(PKG_BUILD_DIR)/tools
  29. define KernelPackage/mt76-default
  30. SUBMENU:=Wireless Drivers
  31. DEPENDS:= \
  32. +kmod-mac80211 \
  33. +@DRIVER_11AC_SUPPORT +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT
  34. endef
  35. define KernelPackage/mt76
  36. SUBMENU:=Wireless Drivers
  37. TITLE:=MediaTek MT76x2/MT7603 wireless driver (metapackage)
  38. DEPENDS:= \
  39. +kmod-mt76-core +kmod-mt76x2 +kmod-mt7603
  40. endef
  41. define KernelPackage/mt76-core
  42. $(KernelPackage/mt76-default)
  43. TITLE:=MediaTek MT76xx wireless driver
  44. HIDDEN:=1
  45. FILES:=\
  46. $(PKG_BUILD_DIR)/mt76.ko
  47. endef
  48. define KernelPackage/mt76-usb
  49. $(KernelPackage/mt76-default)
  50. TITLE:=MediaTek MT76xx wireless driver USB support
  51. DEPENDS += +kmod-usb-core +kmod-mt76-core
  52. HIDDEN:=1
  53. FILES:=\
  54. $(PKG_BUILD_DIR)/mt76-usb.ko
  55. endef
  56. define KernelPackage/mt76x02-usb
  57. $(KernelPackage/mt76-default)
  58. TITLE:=MediaTek MT76x0/MT76x2 USB wireless driver common code
  59. DEPENDS+=+kmod-mt76-usb +kmod-mt76x02-common
  60. HIDDEN:=1
  61. FILES:=$(PKG_BUILD_DIR)/mt76x02-usb.ko
  62. endef
  63. define KernelPackage/mt76x02-common
  64. $(KernelPackage/mt76-default)
  65. TITLE:=MediaTek MT76x0/MT76x2 wireless driver common code
  66. DEPENDS+=+kmod-mt76-core
  67. HIDDEN:=1
  68. FILES:=$(PKG_BUILD_DIR)/mt76x02-lib.ko
  69. endef
  70. define KernelPackage/mt76x0-common
  71. $(KernelPackage/mt76-default)
  72. TITLE:=MediaTek MT76x0 wireless driver common code
  73. DEPENDS+=+kmod-mt76x02-common
  74. HIDDEN:=1
  75. FILES:=$(PKG_BUILD_DIR)/mt76x0/mt76x0-common.ko
  76. endef
  77. define KernelPackage/mt76x0e
  78. $(KernelPackage/mt76-default)
  79. TITLE:=MediaTek MT76x0E wireless driver
  80. DEPENDS+=@PCI_SUPPORT +kmod-mt76x0-common
  81. FILES:=\
  82. $(PKG_BUILD_DIR)/mt76x0/mt76x0e.ko
  83. AUTOLOAD:=$(call AutoProbe,mt76x0e)
  84. endef
  85. define KernelPackage/mt76x0u
  86. $(KernelPackage/mt76-default)
  87. TITLE:=MediaTek MT76x0U wireless driver
  88. DEPENDS+=+kmod-mt76x0-common +kmod-mt76x02-usb
  89. FILES:=\
  90. $(PKG_BUILD_DIR)/mt76x0/mt76x0u.ko
  91. AUTOLOAD:=$(call AutoProbe,mt76x0u)
  92. endef
  93. define KernelPackage/mt76x2-common
  94. $(KernelPackage/mt76-default)
  95. TITLE:=MediaTek MT76x2 wireless driver common code
  96. DEPENDS+=+kmod-mt76-core +kmod-mt76x02-common
  97. HIDDEN:=1
  98. FILES:=$(PKG_BUILD_DIR)/mt76x2/mt76x2-common.ko
  99. endef
  100. define KernelPackage/mt76x2u
  101. $(KernelPackage/mt76-default)
  102. TITLE:=MediaTek MT76x2U wireless driver
  103. DEPENDS+=+kmod-mt76x2-common +kmod-mt76x02-usb
  104. FILES:=\
  105. $(PKG_BUILD_DIR)/mt76x2/mt76x2u.ko
  106. AUTOLOAD:=$(call AutoProbe,mt76x2u)
  107. endef
  108. define KernelPackage/mt76x2
  109. $(KernelPackage/mt76-default)
  110. TITLE:=MediaTek MT76x2 wireless driver
  111. DEPENDS+=@PCI_SUPPORT +kmod-mt76x2-common
  112. FILES:=\
  113. $(PKG_BUILD_DIR)/mt76x2/mt76x2e.ko
  114. AUTOLOAD:=$(call AutoProbe,mt76x2e)
  115. endef
  116. define KernelPackage/mt7603
  117. $(KernelPackage/mt76-default)
  118. TITLE:=MediaTek MT7603 wireless driver
  119. DEPENDS+=@PCI_SUPPORT +kmod-mt76-core
  120. FILES:=\
  121. $(PKG_BUILD_DIR)/mt7603/mt7603e.ko
  122. AUTOLOAD:=$(call AutoProbe,mt7603e)
  123. endef
  124. define KernelPackage/mt7615-common
  125. $(KernelPackage/mt76-default)
  126. TITLE:=MediaTek MT7615 wireless driver common code
  127. HIDDEN:=1
  128. DEPENDS+=@PCI_SUPPORT +kmod-mt76-core
  129. FILES:= $(PKG_BUILD_DIR)/mt7615/mt7615-common.ko
  130. endef
  131. define KernelPackage/mt7615-firmware
  132. $(KernelPackage/mt76-default)
  133. TITLE:=MediaTek MT7615e firmware
  134. DEFAULT:=PACKAGE_kmod-mt7615e
  135. endef
  136. define KernelPackage/mt7615e
  137. $(KernelPackage/mt76-default)
  138. TITLE:=MediaTek MT7615e wireless driver
  139. DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common
  140. FILES:= $(PKG_BUILD_DIR)/mt7615/mt7615e.ko
  141. AUTOLOAD:=$(call AutoProbe,mt7615e)
  142. endef
  143. define KernelPackage/mt7663-firmware-ap
  144. $(KernelPackage/mt76-default)
  145. TITLE:=MediaTek MT7663e firmware (optimized for AP)
  146. endef
  147. define KernelPackage/mt7663-firmware-sta
  148. $(KernelPackage/mt76-default)
  149. TITLE:=MediaTek MT7663e firmware (client mode offload)
  150. endef
  151. define KernelPackage/mt7663-usb-sdio
  152. $(KernelPackage/mt76-default)
  153. TITLE:=MediaTek MT7663 USB/SDIO shared code
  154. DEPENDS+=+kmod-mt7615-common
  155. HIDDEN:=1
  156. FILES:= \
  157. $(PKG_BUILD_DIR)/mt7615/mt7663-usb-sdio-common.ko
  158. endef
  159. define KernelPackage/mt7663s
  160. $(KernelPackage/mt76-default)
  161. TITLE:=MediaTek MT7663s wireless driver
  162. DEPENDS+=+kmod-mmc +kmod-mt7615-common +kmod-mt7663-usb-sdio
  163. FILES:= \
  164. $(PKG_BUILD_DIR)/mt76-sdio.ko \
  165. $(PKG_BUILD_DIR)/mt7615/mt7663s.ko
  166. AUTOLOAD:=$(call AutoProbe,mt7663s)
  167. endef
  168. define KernelPackage/mt7663u
  169. $(KernelPackage/mt76-default)
  170. TITLE:=MediaTek MT7663u wireless driver
  171. DEPENDS+=+kmod-mt76-usb +kmod-mt7615-common +kmod-mt7663-usb-sdio
  172. FILES:= $(PKG_BUILD_DIR)/mt7615/mt7663u.ko
  173. AUTOLOAD:=$(call AutoProbe,mt7663u)
  174. endef
  175. define KernelPackage/mt7915e
  176. $(KernelPackage/mt76-default)
  177. TITLE:=MediaTek MT7915e wireless driver
  178. DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common +@DRIVER_11AX_SUPPORT
  179. FILES:= $(PKG_BUILD_DIR)/mt7915/mt7915e.ko
  180. AUTOLOAD:=$(call AutoProbe,mt7915e)
  181. endef
  182. define Package/mt76-test
  183. SECTION:=devel
  184. CATEGORY:=Development
  185. TITLE:=mt76 testmode CLI
  186. DEPENDS:=kmod-mt76-core +libnl-tiny
  187. endef
  188. TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny
  189. NOSTDINC_FLAGS = \
  190. -I$(PKG_BUILD_DIR) \
  191. -I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \
  192. -I$(STAGING_DIR)/usr/include/mac80211-backport \
  193. -I$(STAGING_DIR)/usr/include/mac80211/uapi \
  194. -I$(STAGING_DIR)/usr/include/mac80211 \
  195. -include backport/autoconf.h \
  196. -include backport/backport.h
  197. ifdef CONFIG_PACKAGE_MAC80211_MESH
  198. NOSTDINC_FLAGS += -DCONFIG_MAC80211_MESH
  199. endif
  200. ifdef CONFIG_PACKAGE_CFG80211_TESTMODE
  201. NOSTDINC_FLAGS += -DCONFIG_NL80211_TESTMODE
  202. PKG_MAKE_FLAGS += CONFIG_NL80211_TESTMODE=y
  203. endif
  204. ifdef CONFIG_PACKAGE_kmod-mt76-usb
  205. PKG_MAKE_FLAGS += CONFIG_MT76_USB=m
  206. endif
  207. ifdef CONFIG_PACKAGE_kmod-mt76x02-common
  208. PKG_MAKE_FLAGS += CONFIG_MT76x02_LIB=m
  209. endif
  210. ifdef CONFIG_PACKAGE_kmod-mt76x02-usb
  211. PKG_MAKE_FLAGS += CONFIG_MT76x02_USB=m
  212. endif
  213. ifdef CONFIG_PACKAGE_kmod-mt76x0-common
  214. PKG_MAKE_FLAGS += CONFIG_MT76x0_COMMON=m
  215. endif
  216. ifdef CONFIG_PACKAGE_kmod-mt76x0e
  217. PKG_MAKE_FLAGS += CONFIG_MT76x0E=m
  218. endif
  219. ifdef CONFIG_PACKAGE_kmod-mt76x0u
  220. PKG_MAKE_FLAGS += CONFIG_MT76x0U=m
  221. endif
  222. ifdef CONFIG_PACKAGE_kmod-mt76x2-common
  223. PKG_MAKE_FLAGS += CONFIG_MT76x2_COMMON=m
  224. endif
  225. ifdef CONFIG_PACKAGE_kmod-mt76x2
  226. PKG_MAKE_FLAGS += CONFIG_MT76x2E=m
  227. endif
  228. ifdef CONFIG_PACKAGE_kmod-mt76x2u
  229. PKG_MAKE_FLAGS += CONFIG_MT76x2U=m
  230. endif
  231. ifdef CONFIG_PACKAGE_kmod-mt7603
  232. PKG_MAKE_FLAGS += CONFIG_MT7603E=m
  233. endif
  234. ifdef CONFIG_PACKAGE_kmod-mt7615-common
  235. PKG_MAKE_FLAGS += CONFIG_MT7615_COMMON=m
  236. endif
  237. ifdef CONFIG_PACKAGE_kmod-mt7615e
  238. PKG_MAKE_FLAGS += CONFIG_MT7615E=m
  239. ifdef CONFIG_TARGET_mediatek_mt7622
  240. PKG_MAKE_FLAGS += CONFIG_MT7622_WMAC=y
  241. NOSTDINC_FLAGS += -DCONFIG_MT7622_WMAC
  242. endif
  243. endif
  244. ifdef CONFIG_PACKAGE_kmod-mt7663-usb-sdio
  245. PKG_MAKE_FLAGS += CONFIG_MT7663_USB_SDIO_COMMON=m
  246. endif
  247. ifdef CONFIG_PACKAGE_kmod-mt7663s
  248. PKG_MAKE_FLAGS += CONFIG_MT76_SDIO=m
  249. PKG_MAKE_FLAGS += CONFIG_MT7663S=m
  250. endif
  251. ifdef CONFIG_PACKAGE_kmod-mt7663u
  252. PKG_MAKE_FLAGS += CONFIG_MT7663U=m
  253. endif
  254. ifdef CONFIG_PACKAGE_kmod-mt7915e
  255. PKG_MAKE_FLAGS += CONFIG_MT7915E=m
  256. endif
  257. define Build/Compile
  258. +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \
  259. $(KERNEL_MAKE_FLAGS) \
  260. $(PKG_MAKE_FLAGS) \
  261. M="$(PKG_BUILD_DIR)" \
  262. NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
  263. modules
  264. $(MAKE) -C $(PKG_BUILD_DIR)/tools
  265. endef
  266. define Build/Install
  267. :
  268. endef
  269. define Package/kmod-mt76/install
  270. true
  271. endef
  272. define KernelPackage/mt76x0-common/install
  273. $(INSTALL_DIR) $(1)/lib/firmware/mediatek
  274. cp \
  275. $(PKG_BUILD_DIR)/firmware/mt7610e.bin \
  276. $(1)/lib/firmware/mediatek
  277. endef
  278. define KernelPackage/mt76x2-common/install
  279. $(INSTALL_DIR) $(1)/lib/firmware
  280. cp \
  281. $(PKG_BUILD_DIR)/firmware/mt7662_rom_patch.bin \
  282. $(PKG_BUILD_DIR)/firmware/mt7662.bin \
  283. $(1)/lib/firmware
  284. endef
  285. define KernelPackage/mt76x0u/install
  286. $(INSTALL_DIR) $(1)/lib/firmware/mediatek
  287. ln -sf mt7610e.bin $(1)/lib/firmware/mediatek/mt7610u.bin
  288. endef
  289. define KernelPackage/mt76x2u/install
  290. $(INSTALL_DIR) $(1)/lib/firmware/mediatek
  291. ln -sf ../mt7662.bin $(1)/lib/firmware/mediatek/mt7662u.bin
  292. ln -sf ../mt7662_rom_patch.bin $(1)/lib/firmware/mediatek/mt7662u_rom_patch.bin
  293. endef
  294. define KernelPackage/mt7603/install
  295. $(INSTALL_DIR) $(1)/lib/firmware
  296. cp $(if $(CONFIG_TARGET_ramips_mt76x8), \
  297. $(PKG_BUILD_DIR)/firmware/mt7628_e1.bin \
  298. $(PKG_BUILD_DIR)/firmware/mt7628_e2.bin \
  299. ,\
  300. $(PKG_BUILD_DIR)/firmware/mt7603_e1.bin \
  301. $(PKG_BUILD_DIR)/firmware/mt7603_e2.bin \
  302. ) \
  303. $(1)/lib/firmware
  304. endef
  305. define KernelPackage/mt7615-firmware/install
  306. $(INSTALL_DIR) $(1)/lib/firmware/mediatek
  307. cp \
  308. $(PKG_BUILD_DIR)/firmware/mt7615_cr4.bin \
  309. $(PKG_BUILD_DIR)/firmware/mt7615_n9.bin \
  310. $(PKG_BUILD_DIR)/firmware/mt7615_rom_patch.bin \
  311. $(if $(CONFIG_TARGET_mediatek_mt7622), \
  312. $(PKG_BUILD_DIR)/firmware/mt7622_n9.bin \
  313. $(PKG_BUILD_DIR)/firmware/mt7622_rom_patch.bin) \
  314. $(1)/lib/firmware/mediatek
  315. endef
  316. define KernelPackage/mt7663-firmware-ap/install
  317. $(INSTALL_DIR) $(1)/lib/firmware/mediatek
  318. cp \
  319. $(PKG_BUILD_DIR)/firmware/mt7663_n9_rebb.bin \
  320. $(PKG_BUILD_DIR)/firmware/mt7663pr2h_rebb.bin \
  321. $(1)/lib/firmware/mediatek
  322. endef
  323. define KernelPackage/mt7663-firmware-sta/install
  324. $(INSTALL_DIR) $(1)/lib/firmware/mediatek
  325. cp \
  326. $(PKG_BUILD_DIR)/firmware/mt7663_n9_v3.bin \
  327. $(PKG_BUILD_DIR)/firmware/mt7663pr2h.bin \
  328. $(1)/lib/firmware/mediatek
  329. endef
  330. define KernelPackage/mt7915e/install
  331. $(INSTALL_DIR) $(1)/lib/firmware/mediatek
  332. cp \
  333. $(PKG_BUILD_DIR)/firmware/mt7915_wa.bin \
  334. $(PKG_BUILD_DIR)/firmware/mt7915_wm.bin \
  335. $(PKG_BUILD_DIR)/firmware/mt7915_rom_patch.bin \
  336. $(1)/lib/firmware/mediatek
  337. endef
  338. define Package/mt76-test/install
  339. mkdir -p $(1)/usr/sbin
  340. $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/mt76-test $(1)/usr/sbin
  341. endef
  342. $(eval $(call KernelPackage,mt76-core))
  343. $(eval $(call KernelPackage,mt76-usb))
  344. $(eval $(call KernelPackage,mt76x02-usb))
  345. $(eval $(call KernelPackage,mt76x02-common))
  346. $(eval $(call KernelPackage,mt76x0-common))
  347. $(eval $(call KernelPackage,mt76x0e))
  348. $(eval $(call KernelPackage,mt76x0u))
  349. $(eval $(call KernelPackage,mt76x2-common))
  350. $(eval $(call KernelPackage,mt76x2u))
  351. $(eval $(call KernelPackage,mt76x2))
  352. $(eval $(call KernelPackage,mt7603))
  353. $(eval $(call KernelPackage,mt7615-common))
  354. $(eval $(call KernelPackage,mt7615-firmware))
  355. $(eval $(call KernelPackage,mt7615e))
  356. $(eval $(call KernelPackage,mt7663-firmware-ap))
  357. $(eval $(call KernelPackage,mt7663-firmware-sta))
  358. $(eval $(call KernelPackage,mt7663-usb-sdio))
  359. $(eval $(call KernelPackage,mt7663u))
  360. $(eval $(call KernelPackage,mt7663s))
  361. $(eval $(call KernelPackage,mt7915e))
  362. $(eval $(call KernelPackage,mt76))
  363. $(eval $(call BuildPackage,mt76-test))