# 
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=metalink
PKG_METALINK_VERSION:=2.2.3
PKG_MSPD_VERSION:=0.00
PKG_RELEASE:=3
PKG_VERSION:=$(PKG_METALINK_VERSION)-$(PKG_MSPD_VERSION).$(PKG_RELEASE)

PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
PKG_MODULE_NAME:=$(PKG_NAME)-$(PKG_VERSION)

PKG_SOURCE_FILE:=$(TOPDIR)/dl/$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_BUILD_FROM_SOURCE:=$(shell if [ -e $(PKG_SOURCE_FILE) ]; then echo y; fi)
ifeq ($(CONFIG_DEV_METALINK), y)
  PKG_BUILD_FROM_SOURCE:=y
endif
ifeq ($(CONFIG_ASIC_SQV),y)
  PROFILE1:=$(PROFILE)-sqv
else
  PROFILE1:=$(PROFILE)
endif
ifeq ($(CONFIG_BOOT_NAND),y)
  BIN_PROFILE:=$(PROFILE1)-nand
else
  BIN_PROFILE:=$(PROFILE1)
endif
ifeq ($(word 1,$(subst ., ,$(GCC_VERSION))),4)
  BIN_PROFILE_BUILD:=$(BIN_PROFILE)-gcc-4.1_glibc_eabi
else
  BIN_PROFILE_BUILD:=$(BIN_PROFILE)
endif


include $(INCLUDE_DIR)/package.mk

################ OpenWRT definition ########################
define KernelPackage/metalink
  CATEGORY:=Mindspeed Packages
  DEFAULT:=n
  TITLE:=Metalink 802.11n Wifi card
  DESCRIPTION:= This package contains a driver for Metalink cards.
  URL:=http://www.mtlk.com/
  MAINTAINER:=Mindspeed Technologies
  FILES:= $(PKG_BUILD_DIR)/mtlk_revb.$(LINUX_KMOD_SUFFIX) $(PKG_BUILD_DIR)/mtlk_revc.$(LINUX_KMOD_SUFFIX)
endef

ifeq ($(PKG_BUILD_FROM_SOURCE), y)
ifeq ($(CONFIG_DEV_METALINK), y)
ifeq ($(CONFIG_DEV_METALINK_CVSBRANCH), "")
define Build/Prepare
	pushd "$(KERNEL_BUILD_DIR)" &&\
	cvs -z9 -d:pserver:$(CONFIG_ACTIVEDEV_CVSUSERNAME)@$(CONFIG_ACTIVEDEV_CVSROOTPATH):/prj/msacvs/enterprise checkout -d $(PKG_NAME)-$(PKG_VERSION) $(CONFIG_DEV_METALINK_MODULENAME) &&\
	popd
	@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \
		$(PATCH) $(PKG_BUILD_DIR) ./patches; \
	fi

	rm -fr $(PKG_BUILD_DIR)_revc
	cp -a $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)_revc
	patch -p1 -R -d $(PKG_BUILD_DIR)_revc < ./patches/010-pci_rx_dma_burst.patch
endef
else
define Build/Prepare
	pushd "$(KERNEL_BUILD_DIR)" &&\
	cvs -z9 -d:pserver:$(CONFIG_ACTIVEDEV_CVSUSERNAME)@$(CONFIG_ACTIVEDEV_CVSROOTPATH):/prj/msacvs/enterprise checkout -d $(PKG_NAME)-$(PKG_VERSION) -r $(CONFIG_DEV_METALINK_CVSBRANCH) $(CONFIG_DEV_METALINK_MODULENAME) &&\
	popd
	@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \
		$(PATCH) $(PKG_BUILD_DIR) ./patches; \
	fi

	rm -fr $(PKG_BUILD_DIR)_revc
	cp -a $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)_revc
	patch -p1 -R -d $(PKG_BUILD_DIR)_revc < ./patches/010-pci_rx_dma_burst.patch
endef
endif
else
define Build/Prepare
	$(TAR) xfz $(PKG_SOURCE_FILE) -C $(KERNEL_BUILD_DIR)

	@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \
		$(PATCH) $(PKG_BUILD_DIR) ./patches; \
	fi

	rm -fr $(PKG_BUILD_DIR)_revc
	cp -a $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)_revc
	patch -p1 -R -d $(PKG_BUILD_DIR)_revc < ./patches/010-pci_rx_dma_burst.patch
endef
endif


define Build/Compile
	$(MAKE) -f Makefile.2.6 -C $(PKG_BUILD_DIR)/driver/linux ARCH="$(LINUX_KARCH)" KERNELDIR="$(LINUX_DIR)" CROSS_COMPILE="$(TARGET_CROSS)"
	$(CP) $(PKG_BUILD_DIR)/driver/linux/mtlk.$(LINUX_KMOD_SUFFIX) $(PKG_BUILD_DIR)/mtlk_revb.$(LINUX_KMOD_SUFFIX)

	$(MAKE) -f Makefile.2.6 -C $(PKG_BUILD_DIR)_revc/driver/linux ARCH="$(LINUX_KARCH)" KERNELDIR="$(LINUX_DIR)" CROSS_COMPILE="$(TARGET_CROSS)"
	$(CP) $(PKG_BUILD_DIR)_revc/driver/linux/mtlk.$(LINUX_KMOD_SUFFIX) $(PKG_BUILD_DIR)/mtlk_revc.$(LINUX_KMOD_SUFFIX)
endef

else
define Build/Prepare
	echo BUILD PREPARE
endef
define Build/Compile
	$(CP) ./files/$(BIN_PROFILE_BUILD)/$(PKG_MODULE_NAME)_revb.$(LINUX_KMOD_SUFFIX) $(PKG_BUILD_DIR)/mtlk_revb.$(LINUX_KMOD_SUFFIX)
	$(CP) ./files/$(BIN_PROFILE_BUILD)/$(PKG_MODULE_NAME)_revc.$(LINUX_KMOD_SUFFIX) $(PKG_BUILD_DIR)/mtlk_revc.$(LINUX_KMOD_SUFFIX)
endef
endif

define Build/InstallDev
endef

define Build/UninstallDev
endef

define KernelPackage/metalink/install
	$(INSTALL_DIR) $(1)/lib/wifi
	$(INSTALL_DATA) ./files/lib/wifi/metalink.sh $(1)/lib/wifi

	$(INSTALL_DIR) $(1)/lib/firmware
	$(INSTALL_DATA) ./files/lib/firmware/*.bin $(1)/lib/firmware

	mkdir -p $(1)/etc/modules.d
	echo "mtlk ap=1" > $(1)/etc/modules.d/50-metalink
endef

$(eval $(call KernelPackage,metalink))
