#
# Copyright (c) 2014 The Linux Foundation. All rights reserved.
# Copyright (C) 2010-2014 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:=frr
PKG_VERSION:=1.0
PKG_RELEASE:=1
PKG_REV:=08bf9b8f378409e56df11a4dd796b2d309121ee5

PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)

PKG_FILES_DIR:=$(TPLINK_DIR)/opensource/$(PKG_NAME)/files
PKG_SOURCE_DIR:=$(BUILD_DIR)/frr/
PKG_BUILD_DIR:=$(BUILD_DIR)/frr/build

PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
EXTRA_LDFLAGS := -lpcre2-8 -ljson -ljson-c -llogger

include $(INCLUDE_DIR)/package.mk

define Package/${PKG_NAME}
  SECTION:=net
  CATEGORY:=Network
  SUBMENU:=Routing and Redirection
  DEPENDS:=+libncurses +libjson +ljson-c +libpcre2-8 +libpthread +librt +libreadline +sdwan +liblogger
  TITLE:=frrouting software set
endef

TARGET_CFLAGS += $(FPIC) -L$(STAGING_DIR)/usr/lib/ -I$(STAGING_DIR)/../host/include -L$(STAGING_DIR)/../host/lib -lpcre2-8 -std=gnu11
ifdef CONFIG_DPDK
	TARGET_CFLAGS += -DSUPPORT_DPDK
endif
CONFIGURE_CMD:=../configure
CONFIGURE_ARGS += \
	PKG_CONFIG=$(STAGING_DIR)/../host/bin/pkg-config \
	PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig \
	--build=$(GNU_HOST_NAME) \
	--host=$(GNU_TARGET_NAME) \
	--enable-user=root \
	--enable-group=root \
	--enable-vty-group=root \
	--enable-fpm \
	--disable-doc \
	--disable-dependency-tracking \
	--disable-bgpd \
	--disable-ldpd \
	--disable-pimd \
	--enable-nhrpd \
	--disable-eigrpd \
	--disable-babeld \
	--disable-isisd \
	--disable-fabricd

define Package/${PKG_NAME}/description
	FRR is free software that implements and manages various IPv4 and IPv6 routing
	protocols. It runs on nearly all distributions of Linux and BSD and
	supports all modern CPU architectures.
endef

define Build/Prepare
	$(INSTALL_DIR) $(PKG_SOURCE_DIR)
	$(CP) -u $(TPLINK_DIR)/opensource/$(PKG_NAME)/src/* $(PKG_SOURCE_DIR)
	$(INSTALL_DIR) $(PKG_BUILD_DIR)
ifneq ($(wildcard ./patches/$(CONFIG_PRODUCT_NAME)),)
	cp -rf patches/$(CONFIG_PRODUCT_NAME) $(PKG_SOURCE_DIR)/patches
else
	cp -rf patches/generic $(PKG_SOURCE_DIR)/patches
endif
	cd ${PKG_SOURCE_DIR} && ./bootstrap.sh &
	sleep 1
	cd ${PKG_SOURCE_DIR} && ./bootstrap.sh
	cd $(PKG_SOURCE_DIR) && echo y | patch -p1 < patches/0001-frr-8.1-compile.patch
endef

#define Build/Configure
#	$(call Build/Configure/Default)
#endef

define Build/Compile
	#cd $(PKG_SOURCE_DIR) && echo y | patch -p1 < patchs/0001-frr-8.1-compile.patch
	$(MAKE) -C $(PKG_BUILD_DIR) 
endef

define Package/${PKG_NAME}/install
	$(INSTALL_DIR) $(1)/usr/lib/
	$(INSTALL_DIR) $(1)/usr/bin/
	$(INSTALL_DIR) $(1)/usr/sbin/
	$(INSTALL_DIR) $(1)/etc
	$(CP)  $(PKG_SOURCE_DIR)/tools/etc/frr/* $(1)/etc
	$(CP)  $(PKG_INSTALL_DIR)/usr/bin/vtysh $(1)/usr/bin/
	$(CP)  $(PKG_INSTALL_DIR)/usr/lib/lib*.so.* $(1)/usr/lib/
	$(CP)  $(PKG_INSTALL_DIR)/usr/sbin/ospf6d $(1)/usr/sbin/
	$(CP)  $(PKG_INSTALL_DIR)/usr/sbin/ospfd $(1)/usr/sbin/
	$(CP)  $(PKG_INSTALL_DIR)/usr/sbin/ripd $(1)/usr/sbin/
	$(CP)  $(PKG_INSTALL_DIR)/usr/sbin/ripngd $(1)/usr/sbin/
	$(CP)  $(PKG_INSTALL_DIR)/usr/sbin/staticd $(1)/usr/sbin/
	$(CP)  $(PKG_INSTALL_DIR)/usr/sbin/zebra $(1)/usr/sbin/
	$(CP)  $(PKG_INSTALL_DIR)/usr/sbin/nhrpd $(1)/usr/sbin/

	$(CP)  $(STAGING_DIR)/usr/lib/libcap.so.* $(1)/usr/lib/
	$(CP)  $(STAGING_DIR)/usr/lib/libcares.so.* $(1)/usr/lib/
	$(CP)  $(STAGING_DIR)/usr/lib/libpcre2-8.so.* $(1)/usr/lib/
	$(CP)  $(STAGING_DIR)/usr/lib/libreadline.so.* $(1)/usr/lib/
	$(CP)  $(STAGING_DIR)/usr/lib/libyang.so.* $(1)/usr/lib/
	$(CP)  $(STAGING_DIR)/usr/lib/libjson-c.so.* $(1)/usr/lib/
	$(CP)  $(STAGING_DIR)/usr/lib/libncurses.so.* $(1)/usr/lib/
	$(CP)  $(STAGING_DIR)/usr/lib/libncursesw.so.* $(1)/usr/lib/
endef

define Build/Clean
	rm -rf  $(PKG_SOURCE_DIR)
endef

$(eval $(call BuildPackage,${PKG_NAME}))
