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