# 
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# $Id: Makefile,v 1.5 2010/05/13 14:27:30 madhu.koriginja Exp $
#$(PKG_NAME)-$(PKG_VERSION).$(RELEASE_VERSION)-internal/driver_linux

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

PKG_NAME:=rt2870ap
PKG_RALINK_VERSION:=1.0.0.0
PKG_MSPD_VERSION:=0.00
PKG_RELEASE:=3
PKG_VERSION:=$(PKG_RALINK_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).$(LINUX_KMOD_SUFFIX)

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_RT2870AP), 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/rt2870ap
  CATEGORY:=Mindspeed Packages
  DEFAULT:=n
  TITLE:=Ralink 802.11n USB Wifi card
  DESCRIPTION:= This package contains a driver for Ralink RT2870 cards.
  URL:=http://www.ralink.com/
  MAINTAINER:=Mindspeed Technologies
  FILES:= $(PKG_BUILD_DIR)/rt2870ap.$(LINUX_KMOD_SUFFIX)
  AUTOLOAD:=$(call AutoLoad,50,rt2870ap.$(LINUX_KMOD_SUFFIX))
endef

ifeq ($(PKG_BUILD_FROM_SOURCE), y)
ifeq ($(CONFIG_DEV_RT2870AP), y)
ifeq ($(CONFIG_DEV_RT2870AP_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_RT2870AP_MODULENAME) &&\
	popd
	@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \
		$(PATCH) $(PKG_BUILD_DIR) ./patches; \
	fi
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_RT2870AP_CVSBRANCH) $(CONFIG_DEV_RT2870AP_MODULENAME) &&\
	popd
	@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \
		$(PATCH) $(PKG_BUILD_DIR) ./patches; \
	fi
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
endef
endif

define Build/Compile
	$(MAKE) -C $(PKG_BUILD_DIR)/Module ARCH="$(LINUX_KARCH)" LINUX_SRC="$(LINUX_DIR)" CROSS_COMPILE="$(TARGET_CROSS)"
	$(TARGET_CROSS)strip --strip-debug $(PKG_BUILD_DIR)/Module/os/linux/rt2870ap.$(LINUX_KMOD_SUFFIX)
	$(CP) $(PKG_BUILD_DIR)/Module/os/linux/rt2870ap.$(LINUX_KMOD_SUFFIX) $(PKG_BUILD_DIR)
endef

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

define Build/InstallDev
endef

define Build/UninstallDev
endef

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

	$(INSTALL_DIR) $(1)/etc/Wireless/RT2870AP
	$(INSTALL_DATA) ./files/etc/Wireless/RT2870AP/RT2870AP.dat $(1)/etc/Wireless/RT2870AP
endef

$(eval $(call KernelPackage,rt2870ap))
