# $FreeWRT$
#-
# This file is part of the FreeWRT project. FreeWRT is copyrighted
# material, please see the LICENCE file in the top-level directory
# or at http://www.freewrt.org/licence for details.

include $(TOPDIR)/rules.mk
include $(TOPDIR)/mk/targets.mk

PKG_NAME:=		madwifi
PKG_VERSION:=		0.9.2
PKG_RELEASE:=		1
PKG_MD5SUM:=		49e783ca50ce3e0a19e6e7b065515672

PKG_SOURCE_URL:=	@SF/$(PKG_NAME)

include $(TOPDIR)/mk/package.mk

ifeq ($(KARCH),mips)
HAL_TARGET:=mips-be-elf
endif
ifeq ($(KARCH),mipsel)
HAL_TARGET:=mips-le-elf
endif
ifeq ($(KARCH),i386)
HAL_TARGET:=i386-elf
endif
ifeq ($(KARCH),armeb)
HAL_TARGET:=xscale-be-elf
endif

BUS := PCI

ifneq ($(FWRT_LINUX_2_4_AR531X),)
	BUS := AHB
endif
ifneq ($(FWRT_LINUX_2_6_ARUBA),)
	BUS := PCI AHB	# no suitable HAL for AHB yet.
endif

BUS_MODULES:=
ifeq ($(findstring AHB,$(BUS)),AHB)
BUS_MODULES+=$(WRKBUILD)/ath/ath_ahb.$(KERNEL_MOD_SUFFIX)
endif
ifeq ($(findstring PCI,$(BUS)),PCI)
BUS_MODULES+=$(WRKBUILD)/ath/ath_pci.$(KERNEL_MOD_SUFFIX)
endif

$(eval $(call PKG_template,KMOD_MADWIFI,kmod-madwifi,$(KERNEL_VERSION)+$(PKG_VERSION)-$(BOARD)-$(PKG_RELEASE),$(ARCH),kernel ($(KERNEL_VERSION)-$(BOARD)-$(KERNEL_RELEASE))))

$(WRKBUILD)/.configured:
	$(CP) ./files/do_multi.* $(WRKBUILD)/tools
	touch $@

MADWIFI_MAKEOPTS= -C $(WRKBUILD) \
		PATH="$(TARGET_PATH)" \
		ARCH="$(ARCH)" \
		CROSS_COMPILE="$(TARGET_CROSS)" \
		TARGET="$(HAL_TARGET)" \
		TOOLPREFIX="$(KERNEL_CROSS)" \
		TOOLPATH="$(KERNEL_CROSS)" \
		KERNELPATH="$(LINUX_DIR)" \
		DOMULTI=1


$(WRKBUILD)/.built:
ifeq ($(findstring AHB,$(BUS)),AHB)
	$(MAKE) $(MADWIFI_MAKEOPTS) BUS="AHB" all
endif
ifeq ($(findstring PCI,$(BUS)),PCI)
	$(MAKE) $(MADWIFI_MAKEOPTS) BUS="PCI" all
endif
	$(RSTRIP) $(WRKBUILD)/tools/madwifi_multi
	touch $@

$(IPKG_KMOD_MADWIFI):
	mkdir -p $(IDIR_KMOD_MADWIFI)/etc/modules.d
	mkdir -p $(IDIR_KMOD_MADWIFI)/etc/init.d
	mkdir -p $(IDIR_KMOD_MADWIFI)/lib/modules/$(KERNEL_VERSION)
	mkdir -p $(IDIR_KMOD_MADWIFI)/usr/sbin
	install -m0644 ./files/madwifi.modules $(IDIR_KMOD_MADWIFI)/etc/modules.d/20-madwifi
	install -m0755 ./files/madwifi.init $(IDIR_KMOD_MADWIFI)/etc/init.d/S20madwifi
	$(CP)	$(WRKBUILD)/net80211/wlan*.$(KERNEL_MOD_SUFFIX) \
		$(WRKBUILD)/ath/ath_hal.$(KERNEL_MOD_SUFFIX) \
		$(BUS_MODULES) \
		$(WRKBUILD)/ath_rate/sample/ath_rate_sample.$(KERNEL_MOD_SUFFIX) \
		$(WRKBUILD)/net80211/*.$(KERNEL_MOD_SUFFIX) \
		$(IDIR_KMOD_MADWIFI)/lib/modules/$(KERNEL_VERSION)/
	$(CP) $(WRKBUILD)/tools/{madwifi_multi,80211debug,80211stats,athchans,athctrl,athdebug,athkey,athstats,wlanconfig} $(IDIR_KMOD_MADWIFI)/usr/sbin/
	$(IPKG_BUILD) $(IDIR_KMOD_MADWIFI) $(PACKAGE_DIR)

$(STAGING_DIR)/usr/include/madwifi/net80211/ieee80211.h: $(WRKBUILD)/.built
	mkdir -p $(STAGING_DIR)/usr/include/madwifi
	$(CP) $(WRKBUILD)/include $(STAGING_DIR)/usr/include/madwifi/
	mkdir -p $(STAGING_DIR)/usr/include/madwifi/net80211
	$(CP) $(WRKBUILD)/net80211/*.h $(STAGING_DIR)/usr/include/madwifi/net80211/
	touch $@

install-dev: $(STAGING_DIR)/usr/include/madwifi/net80211/ieee80211.h

uninstall-dev:
	rm -rf $(STAGING_DIR)/usr/include/madwifi

compile-targets: install-dev
clean-targets: uninstall-dev
