Makefile 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. #
  2. # Copyright (C) 2007-2014 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)/kernel.mk
  9. PKG_NAME:=mac80211
  10. PKG_VERSION:=2014-11-04-librecmc
  11. PKG_RELEASE:=1
  12. PKG_SOURCE_URL:=http://downloads.librecmc.org/sources/v1.3
  13. PKG_BACKPORT_VERSION:=
  14. PKG_MD5SUM:=d612b84e904a8e486b17298ef770d9d6
  15. PKG_SOURCE:=compat-wireless-$(PKG_VERSION)$(PKG_BACKPORT_VERSION).tar.bz2
  16. PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
  17. PKG_BUILD_PARALLEL:=1
  18. PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
  19. PKG_DRIVERS = \
  20. ath5k mac80211-hwsim carl9170 ath9k-common ath9k ath9k-htc ath lib80211
  21. PKG_CONFIG_DEPENDS:= \
  22. CONFIG_PACKAGE_kmod-mac80211 \
  23. $(patsubst %,CONFIG_PACKAGE_kmod-%,$(PKG_DRIVERS)) \
  24. CONFIG_PACKAGE_MAC80211_DEBUGFS \
  25. CONFIG_PACKAGE_MAC80211_MESH \
  26. CONFIG_PACKAGE_ATH_DEBUG \
  27. CONFIG_PACKAGE_ATH_DFS \
  28. CONFIG_ATH_USER_REGD \
  29. include $(INCLUDE_DIR)/package.mk
  30. WMENU:=Wireless Drivers
  31. define KernelPackage/mac80211/Default
  32. SUBMENU:=$(WMENU)
  33. URL:=http://linuxwireless.org/
  34. MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
  35. DEPENDS:=@(!(TARGET_avr32||TARGET_ps3||TARGET_pxcab)||BROKEN)
  36. endef
  37. define KernelPackage/cfg80211
  38. $(call KernelPackage/mac80211/Default)
  39. TITLE:=cfg80211 - wireless configuration API
  40. DEPENDS+= +iw
  41. FILES:= \
  42. $(PKG_BUILD_DIR)/compat/compat.ko \
  43. $(PKG_BUILD_DIR)/net/wireless/cfg80211.ko
  44. endef
  45. define KernelPackage/cfg80211/description
  46. cfg80211 is the Linux wireless LAN (802.11) configuration API.
  47. endef
  48. define KernelPackage/mac80211
  49. $(call KernelPackage/mac80211/Default)
  50. TITLE:=Linux 802.11 Wireless Networking Stack
  51. DEPENDS+= +kmod-crypto-core +kmod-crypto-arc4 +kmod-crypto-aes +kmod-cfg80211 +hostapd-common
  52. KCONFIG:=\
  53. CONFIG_AVERAGE=y
  54. FILES:= $(PKG_BUILD_DIR)/net/mac80211/mac80211.ko
  55. MENU:=1
  56. endef
  57. define KernelPackage/mac80211/config
  58. if PACKAGE_kmod-mac80211
  59. config PACKAGE_MAC80211_DEBUGFS
  60. bool "Export mac80211 internals in DebugFS"
  61. select KERNEL_DEBUG_FS
  62. select KERNEL_RELAY if PACKAGE_kmod-ath9k-common
  63. default y
  64. help
  65. Select this to see extensive information about
  66. the internal state of mac80211 in debugfs.
  67. config PACKAGE_MAC80211_MESH
  68. bool "Enable 802.11s mesh support"
  69. default y
  70. endif
  71. endef
  72. define KernelPackage/mac80211/description
  73. Generic IEEE 802.11 Networking Stack (mac80211)
  74. endef
  75. define KernelPackage/ath/config
  76. if PACKAGE_kmod-ath
  77. config ATH_USER_REGD
  78. bool "Force Atheros drivers to respect the user's regdomain settings"
  79. help
  80. Atheros' idea of regulatory handling is that the EEPROM of the card defines
  81. the regulatory limits and the user is only allowed to restrict the settings
  82. even further, even if the country allows frequencies or power levels that
  83. are forbidden by the EEPROM settings.
  84. Select this option if you want the driver to respect the user's decision about
  85. regulatory settings.
  86. config PACKAGE_ATH_DEBUG
  87. bool "Atheros wireless debugging"
  88. help
  89. Say Y, if you want to debug atheros wireless drivers.
  90. Right now only ath9k makes use of this.
  91. config PACKAGE_ATH_DFS
  92. bool "Enable DFS support"
  93. default y
  94. help
  95. Dynamic frequency selection (DFS) is required for most of the 5 GHz band
  96. channels in Europe, US, and Japan.
  97. Select this option if you want to use such channels.
  98. endif
  99. endef
  100. define KernelPackage/ath
  101. $(call KernelPackage/mac80211/Default)
  102. TITLE:=Atheros common driver part
  103. DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx||TARGET_atheros +kmod-mac80211
  104. FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath.ko
  105. MENU:=1
  106. endef
  107. define KernelPackage/ath/description
  108. This module contains some common parts needed by Atheros Wireless drivers.
  109. endef
  110. define KernelPackage/ath5k
  111. $(call KernelPackage/mac80211/Default)
  112. TITLE:=Atheros 5xxx wireless cards support
  113. URL:=http://linuxwireless.org/en/users/Drivers/ath5k
  114. DEPENDS+= @PCI_SUPPORT||@TARGET_atheros +kmod-ath
  115. FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath5k/ath5k.ko
  116. AUTOLOAD:=$(call AutoProbe,ath5k)
  117. endef
  118. define KernelPackage/ath5k/description
  119. This module adds support for wireless adapters based on
  120. Atheros 5xxx chipset.
  121. endef
  122. define KernelPackage/ath9k-common
  123. $(call KernelPackage/mac80211/Default)
  124. TITLE:=Atheros 802.11n wireless devices (common code for ath9k and ath9k_htc)
  125. URL:=http://linuxwireless.org/en/users/Drivers/ath9k
  126. DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx +kmod-ath +@DRIVER_11N_SUPPORT
  127. FILES:= \
  128. $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_common.ko \
  129. $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
  130. endef
  131. define KernelPackage/ath9k
  132. $(call KernelPackage/mac80211/Default)
  133. TITLE:=Atheros 802.11n PCI wireless cards support
  134. URL:=http://linuxwireless.org/en/users/Drivers/ath9k
  135. DEPENDS+= @PCI_SUPPORT||TARGET_ar71xx +kmod-ath9k-common
  136. FILES:= \
  137. $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k.ko
  138. AUTOLOAD:=$(call AutoProbe,ath9k)
  139. endef
  140. define KernelPackage/ath9k/description
  141. This module adds support for wireless adapters based on
  142. Atheros IEEE 802.11n AR5008 and AR9001 family of chipsets.
  143. endef
  144. define KernelPackage/ath9k/config
  145. config ATH9K_SUPPORT_PCOEM
  146. bool "Support chips used in PC OEM cards"
  147. depends on PACKAGE_kmod-ath9k
  148. endef
  149. define KernelPackage/ath9k-htc
  150. $(call KernelPackage/mac80211/Default)
  151. TITLE:=Atheros 802.11n USB device support
  152. URL:=http://linuxwireless.org/en/users/Drivers/ath9k
  153. DEPENDS+= @USB_SUPPORT +kmod-ath9k-common +kmod-usb-core
  154. FILES:= \
  155. $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
  156. AUTOLOAD:=$(call AutoProbe,ath9k_htc)
  157. endef
  158. define KernelPackage/ath9k-htc/description
  159. This module adds support for wireless adapters based on
  160. Atheros USB AR9271 and AR7010 family of chipsets.
  161. endef
  162. define KernelPackage/carl9170
  163. $(call KernelPackage/mac80211/Default)
  164. TITLE:=Driver for Atheros AR9170 USB sticks
  165. DEPENDS:=@USB_SUPPORT +kmod-mac80211 +kmod-ath +kmod-usb-core +kmod-input-core +@DRIVER_11N_SUPPORT
  166. FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/carl9170/carl9170.ko
  167. AUTOLOAD:=$(call AutoProbe,carl9170)
  168. endef
  169. define KernelPackage/lib80211
  170. $(call KernelPackage/mac80211/Default)
  171. TITLE:=802.11 Networking stack
  172. DEPENDS:=+kmod-cfg80211
  173. FILES:= \
  174. $(PKG_BUILD_DIR)/net/wireless/lib80211.ko \
  175. $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_wep.ko \
  176. $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_ccmp.ko \
  177. $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_tkip.ko
  178. AUTOLOAD:=$(call AutoProbe, \
  179. lib80211 \
  180. lib80211_crypt_wep \
  181. lib80211_crypt_ccmp \
  182. lib80211_crypt_tkip \
  183. )
  184. endef
  185. define KernelPackage/lib80211/description
  186. Kernel modules for 802.11 Networking stack
  187. Includes:
  188. - lib80211
  189. - lib80211_crypt_wep
  190. - lib80211_crypt_tkip
  191. - lib80211_crytp_ccmp
  192. endef
  193. define KernelPackage/mac80211-hwsim
  194. $(call KernelPackage/mac80211/Default)
  195. TITLE:=mac80211 HW simulation device
  196. DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT
  197. FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mac80211_hwsim.ko
  198. AUTOLOAD:=$(call AutoProbe,mac80211_hwsim)
  199. endef
  200. config_package=$(if $(CONFIG_PACKAGE_kmod-$(1)),m)
  201. config-y:= \
  202. WLAN \
  203. NL80211_TESTMODE \
  204. CFG80211_WEXT \
  205. CFG80211_INTERNAL_REGDB \
  206. CFG80211_CERTIFICATION_ONUS \
  207. MAC80211_RC_MINSTREL \
  208. MAC80211_RC_MINSTREL_HT \
  209. MAC80211_RC_MINSTREL_VHT \
  210. MAC80211_RC_DEFAULT_MINSTREL \
  211. config-$(call config_package,cfg80211) += CFG80211
  212. config-$(call config_package,mac80211) += MAC80211
  213. config-$(CONFIG_PACKAGE_MAC80211_MESH) += MAC80211_MESH
  214. ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
  215. config-y += \
  216. CFG80211_DEBUGFS \
  217. MAC80211_DEBUGFS \
  218. ATH9K_DEBUGFS \
  219. ATH9K_HTC_DEBUGFS \
  220. CARL9170_DEBUGFS \
  221. ATH5K_DEBUG
  222. endif
  223. config-$(call config_package,lib80211) += LIB80211 LIB80211_CRYPT_WEP LIB80211_CRYPT_CCMP LIB80211_CRYPT_TKIP
  224. config-$(call config_package,ath) += ATH_CARDS ATH_COMMON
  225. config-$(CONFIG_PACKAGE_ATH_DEBUG) += ATH_DEBUG ATH10K_DEBUG
  226. config-$(CONFIG_PACKAGE_ATH_DFS) += ATH9K_DFS_CERTIFIED ATH10K_DFS_CERTIFIED
  227. config-$(call config_package,ath9k) += ATH9K
  228. config-$(call config_package,ath9k-common) += ATH9K_COMMON
  229. config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB
  230. config-$(CONFIG_PCI) += ATH9K_PCI
  231. config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD
  232. config-$(CONFIG_ATH9K_SUPPORT_PCOEM) += ATH9K_PCOEM
  233. config-$(call config_package,ath9k-htc) += ATH9K_HTC
  234. config-$(call config_package,ath5k) += ATH5K
  235. ifdef CONFIG_TARGET_atheros
  236. config-y += ATH5K_AHB
  237. else
  238. config-y += ATH5K_PCI
  239. endif
  240. config-$(call config_package,carl9170) += CARL9170
  241. config-$(call config_package,mac80211-hwsim) += MAC80211_HWSIM
  242. config-$(CONFIG_PACKAGE_RTLWIFI_DEBUG) += RTLWIFI_DEBUG
  243. config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS B43_LEDS B43LEGACY_LEDS
  244. MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \
  245. CROSS_COMPILE="$(KERNEL_CROSS)" \
  246. ARCH="$(LINUX_KARCH)" \
  247. EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include" \
  248. KLIB_BUILD="$(LINUX_DIR)" \
  249. MODPROBE=true \
  250. KLIB=$(TARGET_MODULES_DIR) \
  251. KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \
  252. KBUILD_LDFLAGS_MODULE_PREREQ=
  253. ifneq ($(findstring c,$(LIBRECMC_VERBOSE)),)
  254. MAKE_OPTS += V=1
  255. endif
  256. define ConfigVars
  257. $(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1)
  258. ))
  259. endef
  260. define mac80211_config
  261. $(call ConfigVars,m)$(call ConfigVars,y)
  262. endef
  263. $(eval $(call shexport,mac80211_config))
  264. define Build/Prepare
  265. rm -rf $(PKG_BUILD_DIR)
  266. mkdir -p $(PKG_BUILD_DIR)
  267. $(PKG_UNPACK)
  268. $(Build/Patch)
  269. rm -rf \
  270. $(PKG_BUILD_DIR)/include/linux/ssb \
  271. $(PKG_BUILD_DIR)/include/linux/bcma \
  272. $(PKG_BUILD_DIR)/include/net/bluetooth
  273. rm -f \
  274. $(PKG_BUILD_DIR)/include/linux/cordic.h \
  275. $(PKG_BUILD_DIR)/include/linux/crc8.h \
  276. $(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h \
  277. $(PKG_BUILD_DIR)/include/linux/wl12xx.h \
  278. $(PKG_BUILD_DIR)/include/linux/spi/libertas_spi.h \
  279. $(PKG_BUILD_DIR)/include/net/ieee80211.h
  280. echo 'compat-wireless-$(PKG_VERSION)-$(PKG_RELEASE)-$(REVISION)' > $(PKG_BUILD_DIR)/compat_version
  281. $(CP) ./files/regdb.txt $(PKG_BUILD_DIR)/net/wireless/db.txt
  282. endef
  283. ifneq ($(CONFIG_PACKAGE_kmod-cfg80211)$(CONFIG_PACKAGE_kmod-lib80211),)
  284. define Build/Compile/kmod
  285. rm -rf $(PKG_BUILD_DIR)/modules
  286. +$(MAKE) $(PKG_JOBS) $(MAKE_OPTS) modules
  287. endef
  288. endif
  289. define Build/Configure
  290. cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h
  291. cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h
  292. endef
  293. define Build/Compile
  294. $(SH_FUNC) var2file "$(call shvar,mac80211_config)" $(PKG_BUILD_DIR)/.config
  295. $(MAKE) $(MAKE_OPTS) allnoconfig
  296. $(call Build/Compile/kmod)
  297. endef
  298. define Build/InstallDev
  299. mkdir -p \
  300. $(1)/usr/include/mac80211 \
  301. $(1)/usr/include/mac80211-backport \
  302. $(1)/usr/include/mac80211/ath \
  303. $(1)/usr/include/net/mac80211
  304. $(CP) $(PKG_BUILD_DIR)/net/mac80211/*.h $(PKG_BUILD_DIR)/include/* $(1)/usr/include/mac80211/
  305. $(CP) $(PKG_BUILD_DIR)/backport-include/* $(1)/usr/include/mac80211-backport/
  306. $(CP) $(PKG_BUILD_DIR)/net/mac80211/rate.h $(1)/usr/include/net/mac80211/
  307. $(CP) $(PKG_BUILD_DIR)/drivers/net/wireless/ath/*.h $(1)/usr/include/mac80211/ath/
  308. endef
  309. define KernelPackage/cfg80211/install
  310. $(INSTALL_DIR) $(1)/lib/wifi $(1)/lib/netifd/wireless
  311. $(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi
  312. $(INSTALL_BIN) ./files/lib/netifd/wireless/mac80211.sh $(1)/lib/netifd/wireless
  313. endef
  314. define KernelPackage/carl9170/install
  315. $(INSTALL_DIR) $(1)/lib/firmware
  316. $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/carl9170-1.fw $(1)/lib/firmware
  317. endef
  318. define KernelPackage/ath9k-htc/install
  319. $(INSTALL_DIR) $(1)/lib/firmware
  320. $(INSTALL_DATA) \
  321. $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/htc_9271.fw \
  322. $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/htc_7010.fw \
  323. $(1)/lib/firmware/
  324. endef
  325. $(eval $(call KernelPackage,ath5k))
  326. $(eval $(call KernelPackage,lib80211))
  327. $(eval $(call KernelPackage,cfg80211))
  328. $(eval $(call KernelPackage,mac80211))
  329. $(eval $(call KernelPackage,mac80211-hwsim))
  330. $(eval $(call KernelPackage,ath9k-common))
  331. $(eval $(call KernelPackage,ath9k))
  332. $(eval $(call KernelPackage,ath9k-htc))
  333. $(eval $(call KernelPackage,ath))
  334. $(eval $(call KernelPackage,carl9170))