tools/padjffs2: use Host/Prepare/Default instead of raw commands
[openwrt/staging/stintel.git] / package / kernel / mac80211 / Makefile
1 #
2 # Copyright (C) 2007-2015 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9 include $(INCLUDE_DIR)/kernel.mk
10
11 PKG_NAME:=mac80211
12
13 PKG_VERSION:=6.6.15
14 PKG_RELEASE:=1
15 PKG_LICENSE:=GPL-2.0-only
16 PKG_LICENSE_FILES:=COPYING
17
18 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
19 PKG_HASH:=3bbc461121134fda9089c084a5eed577d05e7837a157edf9a3797937172a3ece
20
21 PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
22 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)backports-$(PKG_VERSION)
23 PKG_BUILD_PARALLEL:=1
24
25 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
26
27 PKG_DRIVERS = \
28 mac80211-hwsim \
29 mt7601u \
30 rsi91x rsi91x-usb rsi91x-sdio\
31 wlcore wl12xx wl18xx
32
33 PKG_CONFIG_DEPENDS:= \
34 CONFIG_PACKAGE_kmod-mac80211 \
35 CONFIG_PACKAGE_CFG80211_TESTMODE \
36 CONFIG_PACKAGE_MAC80211_DEBUGFS \
37 CONFIG_PACKAGE_MAC80211_MESH \
38 CONFIG_PACKAGE_MAC80211_TRACING \
39 CONFIG_PACKAGE_IWLWIFI_DEBUG \
40 CONFIG_PACKAGE_IWLWIFI_DEBUGFS \
41 CONFIG_PACKAGE_RTLWIFI_DEBUG \
42
43 include $(INCLUDE_DIR)/package.mk
44
45 WMENU:=Wireless Drivers
46
47 define KernelPackage/mac80211/Default
48 SUBMENU:=$(WMENU)
49 URL:=https://wireless.wiki.kernel.org/
50 MAINTAINER:=Felix Fietkau <nbd@nbd.name>
51 endef
52
53 # config_pacakge:
54 # 1 = OpenWrt KernelPackage name
55 # 2 = Optional list of variants for which the module may be selected:
56 # If empty, the module is only selected with the first variant
57 # Use $(ALL_VARIANTS) to allow module selection in all variants
58 config_package=$(if $(and $(CONFIG_PACKAGE_kmod-$(1)),$(call mac80211_variant_check,$(2))),m)
59 mac80211_variant_check=$(if $(ALL_VARIANTS),$(filter $(BUILD_VARIANT),$(if $(1),$(1),$(firstword $(ALL_VARIANTS)))),y)
60
61 config-y:= \
62 WLAN \
63 CFG80211_CERTIFICATION_ONUS \
64 MAC80211_RC_MINSTREL \
65 MAC80211_RC_MINSTREL_HT \
66 MAC80211_RC_MINSTREL_VHT \
67 MAC80211_RC_DEFAULT_MINSTREL \
68 WLAN_VENDOR_ADMTEK \
69 WLAN_VENDOR_ATH \
70 WLAN_VENDOR_ATMEL \
71 WLAN_VENDOR_BROADCOM \
72 WLAN_VENDOR_CISCO \
73 WLAN_VENDOR_INTEL \
74 WLAN_VENDOR_INTERSIL \
75 WLAN_VENDOR_MARVELL \
76 WLAN_VENDOR_MEDIATEK \
77 WLAN_VENDOR_RALINK \
78 WLAN_VENDOR_REALTEK \
79 WLAN_VENDOR_RSI \
80 WLAN_VENDOR_ST \
81 WLAN_VENDOR_TI \
82 WLAN_VENDOR_ZYDAS \
83
84 config-$(call config_package,cfg80211,$(ALL_VARIANTS)) += CFG80211
85 config-$(CONFIG_PACKAGE_CFG80211_TESTMODE) += NL80211_TESTMODE
86
87 config-$(call config_package,mac80211,$(ALL_VARIANTS)) += MAC80211
88 config-$(CONFIG_PACKAGE_MAC80211_MESH) += MAC80211_MESH
89
90 include ath.mk
91 include broadcom.mk
92 include intel.mk
93 include marvell.mk
94 include ralink.mk
95 include realtek.mk
96
97 PKG_CONFIG_DEPENDS += \
98 $(patsubst %,CONFIG_PACKAGE_kmod-%,$(PKG_DRIVERS))
99
100 define KernelPackage/cfg80211
101 $(call KernelPackage/mac80211/Default)
102 TITLE:=cfg80211 - wireless configuration API
103 DEPENDS+= +iw +iwinfo +wifi-scripts +wireless-regdb +USE_RFKILL:kmod-rfkill
104 ABI_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
105 FILES:= \
106 $(PKG_BUILD_DIR)/compat/compat.ko \
107 $(PKG_BUILD_DIR)/net/wireless/cfg80211.ko
108 endef
109
110 define KernelPackage/cfg80211/description
111 cfg80211 is the Linux wireless LAN (802.11) configuration API.
112 endef
113
114 define KernelPackage/cfg80211/config
115 if PACKAGE_kmod-cfg80211
116
117 config PACKAGE_CFG80211_TESTMODE
118 bool "Enable testmode command support"
119 default n
120 help
121 This is typically used for tests and calibration during
122 manufacturing, or vendor specific debugging features
123
124 endif
125 endef
126
127
128 define KernelPackage/mac80211
129 $(call KernelPackage/mac80211/Default)
130 TITLE:=Linux 802.11 Wireless Networking Stack
131 # +kmod-crypto-cmac is a runtime only dependency of net/mac80211/aes_cmac.c
132 DEPENDS+= +kmod-cfg80211 +kmod-crypto-cmac +kmod-crypto-ccm +kmod-crypto-gcm +hostapd-common
133 KCONFIG:=\
134 CONFIG_AVERAGE=y
135 FILES:= $(PKG_BUILD_DIR)/net/mac80211/mac80211.ko
136 ABI_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
137 MENU:=1
138 endef
139
140 define KernelPackage/mac80211/config
141 if PACKAGE_kmod-mac80211
142
143 config PACKAGE_MAC80211_DEBUGFS
144 bool "Export mac80211 internals in DebugFS"
145 select KERNEL_DEBUG_FS
146 default y
147 help
148 Select this to see extensive information about
149 the internal state of mac80211 in debugfs.
150
151 config PACKAGE_MAC80211_TRACING
152 bool "Enable tracing (mac80211 and supported drivers)"
153 select KERNEL_FTRACE
154 select KERNEL_ENABLE_DEFAULT_TRACERS
155 default n
156 help
157 Select this to enable tracing of mac80211 and
158 related wifi drivers (using trace-cmd).
159
160 config PACKAGE_MAC80211_MESH
161 bool "Enable 802.11s mesh support"
162 default y
163
164 endif
165 endef
166
167 define KernelPackage/mac80211/description
168 Generic IEEE 802.11 Networking Stack (mac80211)
169 endef
170
171 define KernelPackage/mac80211-hwsim
172 $(call KernelPackage/mac80211/Default)
173 TITLE:=mac80211 HW simulation device
174 DEPENDS+= +kmod-mac80211 +@DRIVER_11AX_SUPPORT +@DRIVER_11AC_SUPPORT
175 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/virtual/mac80211_hwsim.ko
176 AUTOLOAD:=$(call AutoProbe,mac80211_hwsim)
177 endef
178
179
180 define KernelPackage/mt7601u
181 $(call KernelPackage/mac80211/Default)
182 TITLE:=MT7601U-based USB dongles Wireless Driver
183 DEPENDS+= +kmod-mac80211 @USB_SUPPORT +kmod-usb-core +mt7601u-firmware
184 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
185 AUTOLOAD:=$(call AutoProbe,mt7601u)
186 endef
187
188 define KernelPackage/rsi91x
189 $(call KernelPackage/mac80211/Default)
190 TITLE:=Redpine Signals Inc 91x WLAN driver support
191 DEPENDS+= +kmod-mac80211 +rs9113-firmware
192 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rsi/rsi_91x.ko
193 endef
194
195 define KernelPackage/rsi91x-usb
196 $(call KernelPackage/mac80211/Default)
197 TITLE:=Redpine Signals USB bus support
198 DEPENDS+=@USB_SUPPORT +kmod-usb-core +kmod-mac80211 +kmod-rsi91x +rs9113-firmware
199 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rsi/rsi_usb.ko
200 AUTOLOAD:=$(call AutoProbe,rsi_usb)
201 endef
202
203 define KernelPackage/rsi91x-sdio
204 $(call KernelPackage/mac80211/Default)
205 TITLE:=Redpine Signals SDIO bus support
206 DEPENDS+= +kmod-mac80211 +kmod-mmc +kmod-rsi91x +rs9113-firmware
207 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rsi/rsi_sdio.ko
208 AUTOLOAD:=$(call AutoProbe,rsi_sdio)
209 endef
210
211
212 define KernelPackage/wlcore
213 $(call KernelPackage/mac80211/Default)
214 TITLE:=TI common driver part
215 DEPENDS+= +kmod-mmc +kmod-mac80211
216 FILES:= \
217 $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore.ko \
218 $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
219 AUTOLOAD:=$(call AutoProbe,wlcore wlcore_sdio)
220 endef
221
222 define KernelPackage/wlcore/description
223 This module contains some common parts needed by TI Wireless drivers.
224 endef
225
226 define KernelPackage/wl12xx
227 $(call KernelPackage/mac80211/Default)
228 TITLE:=Driver for TI WL12xx
229 URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl12xx
230 DEPENDS+= +kmod-wlcore +wl12xx-firmware
231 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl12xx/wl12xx.ko
232 AUTOLOAD:=$(call AutoProbe,wl12xx)
233 endef
234
235 define KernelPackage/wl12xx/description
236 Kernel modules for TI WL12xx
237 endef
238
239 define KernelPackage/wl18xx
240 $(call KernelPackage/mac80211/Default)
241 TITLE:=Driver for TI WL18xx
242 URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl18xx
243 DEPENDS+= +kmod-wlcore +wl18xx-firmware
244 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl18xx/wl18xx.ko
245 AUTOLOAD:=$(call AutoProbe,wl18xx)
246 endef
247
248 define KernelPackage/wl18xx/description
249 Kernel modules for TI WL18xx
250 endef
251
252
253 ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
254 config-y += \
255 CFG80211_DEBUGFS \
256 MAC80211_DEBUGFS
257 endif
258
259 ifdef CONFIG_PACKAGE_MAC80211_TRACING
260 config-y += \
261 IWLWIFI_DEVICE_TRACING
262 endif
263
264 config-$(call config_package,mac80211-hwsim) += MAC80211_HWSIM
265 config-$(call config_package,mt7601u) += MT7601U
266 config-y += WL_MEDIATEK
267
268 config-$(call config_package,wlcore) += WLCORE WLCORE_SDIO
269 config-$(call config_package,wl12xx) += WL12XX
270 config-$(call config_package,wl18xx) += WL18XX
271 config-y += WL_TI WILINK_PLATFORM_DATA
272 config-$(call config_package,rsi91x) += RSI_91X
273 config-$(call config_package,rsi91x-usb) += RSI_USB
274 config-$(call config_package,rsi91x-sdio) += RSI_SDIO
275
276 config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS
277
278 C_DEFINES=
279
280 ifeq ($(BUILD_VARIANT),smallbuffers)
281 C_DEFINES+= -DCONFIG_ATH10K_SMALLBUFFERS
282 endif
283
284 MAKE_OPTS:= \
285 $(subst -C $(LINUX_DIR),-C "$(PKG_BUILD_DIR)",$(KERNEL_MAKEOPTS)) \
286 EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include $(IREMAP_CFLAGS) $(C_DEFINES)" \
287 KLIB_BUILD="$(LINUX_DIR)" \
288 MODPROBE=true \
289 KLIB=$(TARGET_MODULES_DIR) \
290 KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \
291 KBUILD_LDFLAGS_MODULE_PREREQ=
292
293 define ConfigVars
294 $(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1)
295 ))
296 endef
297
298 define mac80211_config
299 $(call ConfigVars,m)$(call ConfigVars,y)
300 endef
301 $(eval $(call shexport,mac80211_config))
302
303 define Build/Prepare
304 rm -rf $(PKG_BUILD_DIR)
305 mkdir -p $(PKG_BUILD_DIR)
306 $(PKG_UNPACK)
307 $(Build/Patch)
308 rm -rf \
309 $(PKG_BUILD_DIR)/include/linux/ssb \
310 $(PKG_BUILD_DIR)/include/linux/bcma \
311 $(PKG_BUILD_DIR)/include/net/bluetooth
312
313 rm -f \
314 $(PKG_BUILD_DIR)/include/linux/cordic.h \
315 $(PKG_BUILD_DIR)/include/linux/crc8.h \
316 $(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h \
317 $(PKG_BUILD_DIR)/include/linux/wl12xx.h \
318 $(PKG_BUILD_DIR)/include/linux/mhi.h \
319 $(PKG_BUILD_DIR)/include/net/ieee80211.h \
320 $(PKG_BUILD_DIR)/backport-include/linux/bcm47xx_nvram.h
321
322 echo 'compat-wireless-$(PKG_VERSION)-$(PKG_RELEASE)-$(REVISION)' > $(PKG_BUILD_DIR)/compat_version
323 endef
324
325 ifneq ($(CONFIG_PACKAGE_kmod-cfg80211),)
326 define Build/Compile/kmod
327 rm -rf $(PKG_BUILD_DIR)/modules
328 +$(MAKE) $(PKG_JOBS) $(MAKE_OPTS) modules
329 endef
330 endif
331
332 #do not Build/Configure for EXTERNAL KERNEL
333 ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
334 ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"")
335 define Build/Configure
336 cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h
337 cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h
338 cmp $(PKG_BUILD_DIR)/include/linux/rt2x00_platform.h $(LINUX_DIR)/include/linux/rt2x00_platform.h
339 endef
340 endif
341 endif
342
343 define Build/Patch
344 $(if $(QUILT),rm -rf $(PKG_BUILD_DIR)/patches; mkdir -p $(PKG_BUILD_DIR)/patches)
345 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/build,build/)
346 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/subsys,subsys/)
347 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath,ath/)
348 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath5k,ath5k/)
349 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath9k,ath9k/)
350 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath10k,ath10k/)
351 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath11k,ath11k/)
352 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rt2x00,rt2x00/)
353 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mt7601u,mt7601u/)
354 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mwl,mwl/)
355 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/brcm,brcm/)
356 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rtl,rtl/)
357 $(if $(QUILT),touch $(PKG_BUILD_DIR)/.quilt_used)
358 endef
359
360 define Quilt/Refresh/Package
361 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/build,build/)
362 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/subsys,subsys/)
363 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath,ath/)
364 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath5k,ath5k/)
365 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath9k,ath9k/)
366 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath10k,ath10k/)
367 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath11k,ath11k/)
368 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rt2x00,rt2x00/)
369 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mt7601u,mt7601u/)
370 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mwl,mwl/)
371 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/brcm,brcm/)
372 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rtl,rtl/)
373 endef
374
375 define Build/Compile
376 $(SH_FUNC) var2file "$(call shvar,mac80211_config)" $(PKG_BUILD_DIR)/.config
377 $(MAKE) $(MAKE_OPTS) allnoconfig
378 $(call Build/Compile/kmod)
379 endef
380
381 define Build/InstallDev
382 mkdir -p \
383 $(1)/usr/include/mac80211 \
384 $(1)/usr/include/mac80211-backport \
385 $(1)/usr/include/mac80211/ath \
386 $(1)/usr/include/net/mac80211
387 $(CP) $(PKG_BUILD_DIR)/net/mac80211/*.h $(PKG_BUILD_DIR)/include/* $(1)/usr/include/mac80211/
388 $(CP) $(PKG_BUILD_DIR)/backport-include/* $(1)/usr/include/mac80211-backport/
389 $(CP) $(PKG_BUILD_DIR)/net/mac80211/rate.h $(1)/usr/include/net/mac80211/
390 $(CP) $(PKG_BUILD_DIR)/drivers/net/wireless/ath/*.h $(1)/usr/include/mac80211/ath/
391 rm -f $(1)/usr/include/mac80211-backport/linux/module.h
392 endef
393
394
395 $(eval $(foreach drv,$(PKG_DRIVERS),$(call KernelPackage,$(drv))))
396 $(eval $(call KernelPackage,cfg80211))
397 $(eval $(call KernelPackage,mac80211))