###############################################################################
#
#  <:copyright-BRCM:2016:DUAL/GPL:standard
#  
#     Copyright (c) 2016 Broadcom
#     All Rights Reserved
#  
#  Unless you and Broadcom execute a separate written software license
#  agreement governing use of this software, this software is licensed
#  to you under the terms of the GNU General Public License version 2
#  (the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
#  with the following added to such license:
#  
#     As a special exception, the copyright holders of this software give
#     you permission to link this software with independent modules, and
#     to copy and distribute the resulting executable under terms of your
#     choice, provided that you also meet, for each linked independent
#     module, the terms and conditions of the license of that module.
#     An independent module is a module which is not derived from this
#     software.  The special exception does not apply to any modifications
#     of the software.
#  
#  Not withstanding the above, under no circumstances may you combine
#  this software in any way with any other Broadcom software provided
#  under a license other than the GPL, without Broadcom's express prior
#  written consent.
#  
#  :>
#
###############################################################################
# EPON OAM Negotiation user application

ifeq ("$(ENABLE_CLI)", "y")

	MOD_NAME = bcm_user_appl_eon
	MOD_TYPE = lib
	MOD_DEPS = bal_api common_epon_oam bcm_user_appl_epon_oam

	ifeq ("$(OS_KERNEL)", "linux")
		MOD_DEPS += dev_log_linux
	endif

	srcs = bcmolt_eon.c bcmolt_eon_log.c bcmolt_oam_heartbeat.c

	ENABLE_DPOE_OAM ?= y
	ifeq ("$(ENABLE_DPOE_OAM)", "y")
		EXTRA_DEFINES += -DEON_OAM_SET_DPOE_SUPPORTED
		srcs += oam_sets/dpoe/dpoe.c
	endif # ENABLE_DPOE_OAM

	ENABLE_BRCM_OAM ?= y
	ifeq ("$(ENABLE_BRCM_OAM)", "y")
		EXTRA_DEFINES += -DEON_OAM_SET_BRCM_SUPPORTED
		srcs += oam_sets/brcm/brcm.c
	endif # ENABLE_BRCM_OAM

endif
