910b8b3197ca5d15733d5389c9e4edd5b77a9958
[librecmc/librecmc.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:=4.19.23-1
14 PKG_RELEASE:=4
15 PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.23/
16 PKG_HASH:=703e940b542eb56067fcd847a7c69398dcc9829f34472647eea4211cb2ab3b83
17
18 PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
19 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
20 PKG_BUILD_PARALLEL:=1
21
22 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
23
24 PKG_DRIVERS = \
25         lib80211 \
26         mac80211-hwsim
27
28
29 PKG_CONFIG_DEPENDS:= \
30         CONFIG_PACKAGE_kmod-mac80211 \
31         CONFIG_PACKAGE_MAC80211_DEBUGFS \
32         CONFIG_PACKAGE_MAC80211_MESH \
33         CONFIG_PACKAGE_MAC80211_TRACING \
34
35 include $(INCLUDE_DIR)/package.mk
36
37 WMENU:=Wireless Drivers
38
39 define KernelPackage/mac80211/Default
40   SUBMENU:=$(WMENU)
41   URL:=https://wireless.wiki.kernel.org/
42   MAINTAINER:=Felix Fietkau <nbd@nbd.name>
43 endef
44
45 config_package=$(if $(CONFIG_PACKAGE_kmod-$(1)),m)
46
47 config-y:= \
48         WLAN \
49         NL80211_TESTMODE \
50         CFG80211_WEXT \
51         CFG80211_CERTIFICATION_ONUS \
52         MAC80211_RC_MINSTREL \
53         MAC80211_RC_MINSTREL_HT \
54         MAC80211_RC_MINSTREL_VHT \
55         MAC80211_RC_DEFAULT_MINSTREL \
56         WLAN_VENDOR_ADMTEK \
57         WLAN_VENDOR_ATH \
58
59
60 config-$(call config_package,cfg80211) += CFG80211
61
62 config-$(call config_package,mac80211) += MAC80211
63 config-$(CONFIG_PACKAGE_MAC80211_MESH) += MAC80211_MESH
64
65 include ath.mk
66
67 PKG_CONFIG_DEPENDS += \
68         $(patsubst %,CONFIG_PACKAGE_kmod-%,$(PKG_DRIVERS))
69
70 define KernelPackage/cfg80211
71   $(call KernelPackage/mac80211/Default)
72   TITLE:=cfg80211 - wireless configuration API
73   DEPENDS+= +iw +wireless-regdb
74   ABI_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
75   FILES:= \
76         $(PKG_BUILD_DIR)/compat/compat.ko \
77         $(PKG_BUILD_DIR)/net/wireless/cfg80211.ko
78 endef
79
80 define KernelPackage/cfg80211/description
81 cfg80211 is the Linux wireless LAN (802.11) configuration API.
82 endef
83
84 define KernelPackage/mac80211
85   $(call KernelPackage/mac80211/Default)
86   TITLE:=Linux 802.11 Wireless Networking Stack
87   # +kmod-crypto-cmac is a runtime only dependency of net/mac80211/aes_cmac.c
88   DEPENDS+= +kmod-cfg80211 +hostapd-common
89   KCONFIG:=\
90         CONFIG_AVERAGE=y
91   FILES:= $(PKG_BUILD_DIR)/net/mac80211/mac80211.ko
92   ABI_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
93   MENU:=1
94 endef
95
96 define KernelPackage/mac80211/config
97   if PACKAGE_kmod-mac80211
98
99         config PACKAGE_MAC80211_DEBUGFS
100                 bool "Export mac80211 internals in DebugFS"
101                 select KERNEL_DEBUG_FS
102                 default y
103                 help
104                   Select this to see extensive information about
105                   the internal state of mac80211 in debugfs.
106
107         config PACKAGE_MAC80211_TRACING
108                 bool "Enable tracing (mac80211 and supported drivers)"
109                 select KERNEL_FTRACE
110                 select KERNEL_ENABLE_DEFAULT_TRACERS
111                 default n
112                 help
113                   Select this to enable tracing of mac80211 and
114                   related wifi drivers (using trace-cmd).
115
116         config PACKAGE_MAC80211_MESH
117                 bool "Enable 802.11s mesh support"
118                 default y
119
120   endif
121 endef
122
123 define KernelPackage/mac80211/description
124 Generic IEEE 802.11 Networking Stack (mac80211)
125 endef
126
127 define KernelPackage/lib80211
128   $(call KernelPackage/mac80211/Default)
129   TITLE:=802.11 Networking stack
130   DEPENDS:=+kmod-cfg80211 +kmod-crypto-hash
131   FILES:= \
132         $(PKG_BUILD_DIR)/net/wireless/lib80211.ko \
133         $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_wep.ko \
134         $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_ccmp.ko \
135         $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_tkip.ko
136   AUTOLOAD:=$(call AutoProbe, \
137         lib80211 \
138         lib80211_crypt_wep \
139         lib80211_crypt_ccmp \
140         lib80211_crypt_tkip \
141   )
142 endef
143
144 define KernelPackage/lib80211/description
145  Kernel modules for 802.11 Networking stack
146  Includes:
147  - lib80211
148  - lib80211_crypt_wep
149  - lib80211_crypt_tkip
150  - lib80211_crytp_ccmp
151 endef
152
153
154 define KernelPackage/mac80211-hwsim
155   $(call KernelPackage/mac80211/Default)
156   TITLE:=mac80211 HW simulation device
157   DEPENDS+= +kmod-mac80211 +@DRIVER_11AC_SUPPORT +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT
158   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mac80211_hwsim.ko
159   AUTOLOAD:=$(call AutoProbe,mac80211_hwsim)
160 endef
161
162
163 ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
164   config-y += \
165         CFG80211_DEBUGFS \
166         MAC80211_DEBUGFS
167 endif
168
169 ifdef CONFIG_PACKAGE_MAC80211_TRACING
170   config-y += \
171         IWLWIFI_DEVICE_TRACING
172 endif
173
174 config-$(call config_package,lib80211) += LIB80211 LIB80211_CRYPT_WEP LIB80211_CRYPT_CCMP LIB80211_CRYPT_TKIP
175
176 config-$(call config_package,mac80211-hwsim) += MAC80211_HWSIM
177
178 config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS
179
180 MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \
181         $(KERNEL_MAKE_FLAGS) \
182         EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include $(IREMAP_CFLAGS)" \
183         KLIB_BUILD="$(LINUX_DIR)" \
184         MODPROBE=true \
185         KLIB=$(TARGET_MODULES_DIR) \
186         KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \
187         KBUILD_LDFLAGS_MODULE_PREREQ=
188
189 define ConfigVars
190 $(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1)
191 ))
192 endef
193
194 define mac80211_config
195 $(call ConfigVars,m)$(call ConfigVars,y)
196 endef
197 $(eval $(call shexport,mac80211_config))
198
199 define Build/Prepare
200         rm -rf $(PKG_BUILD_DIR)
201         mkdir -p $(PKG_BUILD_DIR)
202         $(PKG_UNPACK)
203         $(Build/Patch)
204         rm -rf \
205                 $(PKG_BUILD_DIR)/include/linux/ssb \
206                 $(PKG_BUILD_DIR)/include/linux/bcma \
207                 $(PKG_BUILD_DIR)/include/net/bluetooth
208
209         rm -f \
210                 $(PKG_BUILD_DIR)/include/linux/cordic.h \
211                 $(PKG_BUILD_DIR)/include/linux/crc8.h \
212                 $(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h \
213                 $(PKG_BUILD_DIR)/include/linux/wl12xx.h \
214                 $(PKG_BUILD_DIR)/include/linux/spi/libertas_spi.h \
215                 $(PKG_BUILD_DIR)/include/net/ieee80211.h \
216                 $(PKG_BUILD_DIR)/backport-include/linux/bcm47xx_nvram.h
217
218         echo 'compat-wireless-$(PKG_VERSION)-$(PKG_RELEASE)-$(REVISION)' > $(PKG_BUILD_DIR)/compat_version
219 endef
220
221 ifneq ($(CONFIG_PACKAGE_kmod-cfg80211)$(CONFIG_PACKAGE_kmod-lib80211),)
222  define Build/Compile/kmod
223         rm -rf $(PKG_BUILD_DIR)/modules
224         +$(MAKE) $(PKG_JOBS) $(MAKE_OPTS) modules
225  endef
226 endif
227
228 #do not Build/Configure for EXTERNAL KERNEL
229 ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
230   ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"")
231     define Build/Configure
232           cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h
233           cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h
234           cmp $(PKG_BUILD_DIR)/include/linux/rt2x00_platform.h $(LINUX_DIR)/include/linux/rt2x00_platform.h
235     endef
236   endif
237 endif
238
239 define Build/Patch
240         $(if $(QUILT),rm -rf $(PKG_BUILD_DIR)/patches; mkdir -p $(PKG_BUILD_DIR)/patches)
241         $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/build,build/)
242         $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/subsys,subsys/)
243         $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath,ath/)
244         $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rt2x00,rt2x00/)
245         $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mwl,mwl/)
246         $(if $(QUILT),touch $(PKG_BUILD_DIR)/.quilt_used)
247 endef
248
249 define Quilt/Refresh/Package
250         $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/build,build/)
251         $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/subsys,subsys/)
252         $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath,ath/)
253         $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rt2x00,rt2x00/)
254         $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mwl,mwl/)
255 endef
256
257 define Build/Compile
258         $(SH_FUNC) var2file "$(call shvar,mac80211_config)" $(PKG_BUILD_DIR)/.config
259         $(MAKE) $(MAKE_OPTS) allnoconfig
260         $(call Build/Compile/kmod)
261 endef
262
263 define Build/InstallDev
264         mkdir -p \
265                 $(1)/usr/include/mac80211 \
266                 $(1)/usr/include/mac80211-backport \
267                 $(1)/usr/include/mac80211/ath \
268                 $(1)/usr/include/net/mac80211
269         $(CP) $(PKG_BUILD_DIR)/net/mac80211/*.h $(PKG_BUILD_DIR)/include/* $(1)/usr/include/mac80211/
270         $(CP) $(PKG_BUILD_DIR)/backport-include/* $(1)/usr/include/mac80211-backport/
271         $(CP) $(PKG_BUILD_DIR)/net/mac80211/rate.h $(1)/usr/include/net/mac80211/
272         $(CP) $(PKG_BUILD_DIR)/drivers/net/wireless/ath/*.h $(1)/usr/include/mac80211/ath/
273         rm -f $(1)/usr/include/mac80211-backport/linux/module.h
274 endef
275
276
277 define KernelPackage/cfg80211/install
278         $(INSTALL_DIR) $(1)/lib/wifi $(1)/lib/netifd/wireless
279         $(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi
280         $(INSTALL_BIN) ./files/lib/netifd/wireless/mac80211.sh $(1)/lib/netifd/wireless
281         $(INSTALL_DIR) $(1)/etc/hotplug.d/ieee80211
282         $(INSTALL_DATA) ./files/mac80211.hotplug $(1)/etc/hotplug.d/ieee80211/10-wifi-detect
283 endef
284
285 $(eval $(foreach drv,$(PKG_DRIVERS),$(call KernelPackage,$(drv))))
286 $(eval $(call KernelPackage,cfg80211))
287 $(eval $(call KernelPackage,mac80211))