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

include $(TOPDIR)/rules.mk

PKG_NAME:=iperf
PKG_VERSION:=2.0.4
PKG_RELEASE:=2

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
PKG_MD5SUM:=8c5bc14cc2ea55f18f22afe3c23e3dcb

include $(INCLUDE_DIR)/package.mk

define Package/iperf/Default
  SECTION:=net
  CATEGORY:=Network
  DEPENDS:= +uclibcxx
  TITLE:=Internet Protocol bandwidth measuring tool
  URL:=http://sourceforge.net/projects/iperf/
endef

define Package/iperf/Default/description
 Iperf is a modern alternative for measuring TCP and UDP bandwidth
 performance, allowing the tuning of various parameters and
 characteristics.
endef


define Package/iperf
$(call Package/iperf/Default)
  TITLE+= (with single thread support)
endef

define Package/iperf/description
$(call Package/iperf/Default/description)
 This package is built with single thread support.
endef


define Package/iperf-mt
$(call Package/iperf/Default)
  DEPENDS+= +libpthread
  TITLE+= (with multithread support)
endef

define Package/iperf-mt/description
$(call Package/iperf/Default/description)
 This package is built with multithread support.
endef


define Build/Template

$(STAMP_BUILT)-$(2): $(STAMP_PREPARED)
	-$(MAKE) -C $(PKG_BUILD_DIR) clean
	$(call Build/Configure/Default,$(3))
	$(MAKE) -C $(PKG_BUILD_DIR)
	( cd $(PKG_BUILD_DIR)/src; mv -f iperf iperf-$(2) )
	touch $$@

$(STAMP_BUILT): $(STAMP_BUILT)-$(2)

define Package/$(1)/install
	$(INSTALL_DIR) $$(1)/usr/bin
	$(INSTALL_BIN) $$(PKG_BUILD_DIR)/src/iperf-$(2) $$(1)/usr/bin/iperf
endef

endef

CONFIGURE_ARGS += \
	--disable-multicast \

CONFIGURE_VARS += \
	CXX="g++-uc" \
	CXXFLAGS="$$$$CXX_CFLAGS -fno-rtti" \


ifneq ($(SDK)$(CONFIG_PACKAGE_iperf),)
  define Build/singlethread
    $(call Build/Template,iperf,singlethread, \
	--disable-threads \
    )
  endef
endif
$(eval $(Build/singlethread))

ifneq ($(SDK)$(CONFIG_PACKAGE_iperf-mt),)
  define Build/multithread
    $(call Build/Template,iperf-mt,multithread, \
	--enable-threads=posix \
	LDFLAGS="$(TARGET_LDFLAGS) -lpthread" \
	ac_cv_func_pthread_cancel=no \
    )
  endef
endif
$(eval $(Build/multithread))

$(eval $(call BuildPackage,iperf))
$(eval $(call BuildPackage,iperf-mt))