Makefile 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. #
  2. # Copyright (C) 2006-2008 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. # $Id$
  8. include $(TOPDIR)/rules.mk
  9. include $(INCLUDE_DIR)/kernel.mk
  10. PKG_NAME:=madwifi
  11. PKG_REV:=3314
  12. PKG_VERSION:=r$(PKG_REV)
  13. # PKG_BRANCH:=madwifi-dfs
  14. PKG_RELEASE:=1
  15. PKG_SOURCE_PROTO:=svn
  16. PKG_SOURCE_VERSION:=$(PKG_REV)
  17. PKG_SOURCE_SUBDIR:=$(if $(PKG_BRANCH),$(PKG_BRANCH),madwifi-trunk)-$(PKG_VERSION)
  18. PKG_SOURCE_URL:=http://svn.madwifi.org/madwifi/$(if $(PKG_BRANCH),branches/$(PKG_BRANCH),trunk)
  19. PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
  20. PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(PKG_BRANCH),$(PKG_BRANCH),madwifi-trunk)-$(PKG_VERSION)
  21. include $(INCLUDE_DIR)/package.mk
  22. ifneq ($(CONFIG_TARGET_atheros),)
  23. BUS:=AHB
  24. else
  25. ifneq ($(CONFIG_PCI_SUPPORT),)
  26. BUS:=PCI
  27. endif
  28. endif
  29. # XXX: remove this check later when we have PCI support properly detected on all targets
  30. ifneq ($(CONFIG_TARGET_ar7)$(CONFIG_TARGET_uml),)
  31. BUS:=
  32. endif
  33. ifeq ($(ARCH),mips)
  34. HAL_TARGET:=mips-be-elf
  35. endif
  36. ifeq ($(ARCH),mipsel)
  37. HAL_TARGET:=mips-le-elf
  38. endif
  39. ifeq ($(ARCH),i386)
  40. HAL_TARGET:=i386-elf
  41. endif
  42. ifeq ($(ARCH),i686)
  43. HAL_TARGET:=i386-elf
  44. endif
  45. ifeq ($(BOARD),ixp4xx)
  46. HAL_TARGET:=xscale-be-elf
  47. endif
  48. ifeq ($(BOARD),iop32x)
  49. HAL_TARGET:=xscale-le-elf
  50. endif
  51. ifeq ($(BOARD),orion)
  52. HAL_TARGET:=xscale-le-elf
  53. endif
  54. ifeq ($(ARCH),powerpc)
  55. HAL_TARGET:=powerpc-be-elf
  56. endif
  57. ifeq ($(BOARD),storm)
  58. HAL_TARGET:=armv4-le-elf
  59. endif
  60. ifneq ($(CONFIG_TARGET_atheros),)
  61. HAL_TARGET:=wisoc
  62. endif
  63. ifdef CONFIG_MADWIFI_RCA_MINSTREL
  64. RATE_CONTROL:=minstrel
  65. endif
  66. ifdef CONFIG_MADWIFI_RCA_ONOE
  67. RATE_CONTROL:=onoe
  68. endif
  69. ifdef CONFIG_MADWIFI_RCA_AMRR
  70. RATE_CONTROL:=amrr
  71. endif
  72. ifdef CONFIG_MADWIFI_RCA_SAMPLERATE
  73. RATE_CONTROL:=sample
  74. endif
  75. MADWIFI_FILES:= \
  76. $(PKG_BUILD_DIR)/net80211/wlan.$(LINUX_KMOD_SUFFIX) \
  77. $(PKG_BUILD_DIR)/net80211/wlan_scan_ap.$(LINUX_KMOD_SUFFIX) \
  78. $(PKG_BUILD_DIR)/net80211/wlan_scan_sta.$(LINUX_KMOD_SUFFIX) \
  79. $(PKG_BUILD_DIR)/ath_hal/ath_hal.$(LINUX_KMOD_SUFFIX) \
  80. $(PKG_BUILD_DIR)/ath_rate/$(RATE_CONTROL)/ath_rate_$(RATE_CONTROL).$(LINUX_KMOD_SUFFIX) \
  81. $(PKG_BUILD_DIR)/net80211/wlan_acl.$(LINUX_KMOD_SUFFIX) \
  82. $(PKG_BUILD_DIR)/net80211/wlan_ccmp.$(LINUX_KMOD_SUFFIX) \
  83. $(PKG_BUILD_DIR)/net80211/wlan_tkip.$(LINUX_KMOD_SUFFIX) \
  84. $(PKG_BUILD_DIR)/net80211/wlan_wep.$(LINUX_KMOD_SUFFIX) \
  85. $(PKG_BUILD_DIR)/net80211/wlan_xauth.$(LINUX_KMOD_SUFFIX) \
  86. MADWIFI_AUTOLOAD:= \
  87. wlan \
  88. wlan_scan_ap \
  89. wlan_scan_sta \
  90. ath_hal \
  91. ath_rate_$(RATE_CONTROL) \
  92. wlan_acl \
  93. wlan_ccmp \
  94. wlan_tkip \
  95. wlan_wep \
  96. wlan_xauth \
  97. ifeq ($(findstring AHB,$(BUS)),AHB)
  98. MADWIFI_FILES+= $(PKG_BUILD_DIR)/ath/ath_ahb.$(LINUX_KMOD_SUFFIX)
  99. MADWIFI_AUTOLOAD+= ath_ahb
  100. endif
  101. ifeq ($(findstring PCI,$(BUS)),PCI)
  102. MADWIFI_FILES+= $(PKG_BUILD_DIR)/ath/ath_pci.$(LINUX_KMOD_SUFFIX)
  103. MADWIFI_AUTOLOAD+= ath_pci
  104. endif
  105. MADWIFI_APPLETS:=80211stats,athchans,athctrl,athkey,athstats,wlanconfig
  106. ifdef CONFIG_MADWIFI_DEBUG
  107. MADWIFI_APPLETS:=$(strip $(MADWIFI_APPLETS)),athdebug,80211debug
  108. endif
  109. define KernelPackage/madwifi
  110. SUBMENU:=Wireless Drivers
  111. TITLE:=Driver for Atheros wireless chipsets
  112. URL:=http://madwifi.org/
  113. DEPENDS:=+wireless-tools @PCI_SUPPORT||TARGET_atheros @!TARGET_ar7 @!TARGET_avr32 @!TARGET_etrax @!TARGET_uml
  114. FILES:=$(MADWIFI_FILES)
  115. AUTOLOAD:=$(call AutoLoad,50,$(MADWIFI_AUTOLOAD))
  116. endef
  117. define KernelPackage/madwifi/description
  118. This package contains a driver for Atheros 802.11a/b/g chipsets.
  119. endef
  120. define KernelPackage/madwifi/config
  121. source "$(SOURCE)/Config.in"
  122. endef
  123. MAKE_ARGS:= \
  124. PATH="$(TARGET_PATH)" \
  125. ARCH="$(LINUX_KARCH)" \
  126. CROSS_COMPILE="$(TARGET_CROSS)" \
  127. TARGET="$(HAL_TARGET)" \
  128. TOOLPREFIX="$(KERNEL_CROSS)" \
  129. TOOLPATH="$(KERNEL_CROSS)" \
  130. KERNELPATH="$(LINUX_DIR)" \
  131. LDOPTS="--no-warn-mismatch " \
  132. ATH_RATE="ath_rate/$(RATE_CONTROL)" \
  133. WARNINGS="-Wno-unused" \
  134. $(if $(CONFIG_MADWIFI_DEBUG),,DEBUG="") \
  135. DO_MULTI=1
  136. MAKE_VARS:= \
  137. COPTS="-DCONFIG_ATHEROS_RATE_DEFAULT='\"$(RATE_CONTROL)\"' -DATH_REVERSE_ENGINEERING=1" \
  138. HALFILE:=$(lastword $(sort $(wildcard ./ath_hal-*.tgz)))
  139. ifneq ($(HALFILE),)
  140. define Build/Prepare
  141. $(call Build/Prepare/Default)
  142. rm -rf $(PKG_BUILD_DIR)/tmp
  143. mkdir -p $(PKG_BUILD_DIR)/tmp
  144. tar xvzf $(HALFILE) -C $(PKG_BUILD_DIR)/tmp
  145. $(CP) $(PKG_BUILD_DIR)/tmp/ath_hal*/* $(PKG_BUILD_DIR)/hal/
  146. rm -rf $(PKG_BUILD_DIR)/tmp
  147. # patch cflags
  148. $(SED) 's, -E[LB],,' \
  149. -e 's, -mips2,,' \
  150. -e 's, -mapcs-32,,' \
  151. $(PKG_BUILD_DIR)/hal/public/*.inc
  152. $(SED) 's,march=armv4,march=armv5te,' \
  153. $(PKG_BUILD_DIR)/hal/public/xscale*.inc
  154. endef
  155. endif
  156. ifeq ($(findstring AHB,$(BUS)),AHB)
  157. define Build/Compile/ahb
  158. $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR) $(MAKE_ARGS) BUS="AHB" modules
  159. $(MAKE) -C $(PKG_BUILD_DIR) $(MAKE_ARGS) CFLAGS="$(TARGET_CFLAGS)" tools
  160. endef
  161. endif
  162. ifeq ($(findstring PCI,$(BUS)),PCI)
  163. define Build/Compile/pci
  164. $(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR) $(MAKE_ARGS) BUS="PCI" modules
  165. $(MAKE) -C $(PKG_BUILD_DIR) $(MAKE_ARGS) CFLAGS="$(TARGET_CFLAGS)" tools
  166. endef
  167. endif
  168. define Build/Configure
  169. $(SED) 's,-E[LB] ,,g' $(PKG_BUILD_DIR)/hal/public/*.inc
  170. endef
  171. define Build/Compile
  172. $(call Build/Compile/ahb)
  173. $(call Build/Compile/pci)
  174. endef
  175. define Build/InstallDev
  176. mkdir -p $(1)/usr/include/madwifi
  177. $(CP) $(PKG_BUILD_DIR)/include $(1)/usr/include/madwifi/
  178. mkdir -p $(1)/usr/include/madwifi/net80211
  179. $(CP) $(PKG_BUILD_DIR)/net80211/*.h $(1)/usr/include/madwifi/net80211/
  180. endef
  181. define KernelPackage/madwifi/install
  182. $(INSTALL_DIR) $(1)/lib/wifi
  183. $(INSTALL_DATA) ./files/lib/wifi/madwifi.sh $(1)/lib/wifi
  184. $(INSTALL_DIR) $(1)/usr/sbin
  185. $(CP) $(PKG_BUILD_DIR)/tools/{madwifi_multi,$(MADWIFI_APPLETS)} $(1)/usr/sbin/
  186. endef
  187. $(eval $(call KernelPackage,madwifi))