Makefile 6.5 KB

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