# $Id: Make.local.template,v 1.181 Broadcom SDK $
# $Copyright: Copyright 2012 Broadcom Corporation.
# This program is the proprietary software of Broadcom Corporation
# and/or its licensors, and may only be used, duplicated, modified
# or distributed pursuant to the terms and conditions of a separate,
# written license agreement executed between you and Broadcom
# (an "Authorized License").  Except as set forth in an Authorized
# License, Broadcom grants no license (express or implied), right
# to use, or waiver of any kind with respect to the Software, and
# Broadcom expressly reserves all rights in and to the Software
# and all intellectual property rights therein.  IF YOU HAVE
# NO AUTHORIZED LICENSE, THEN YOU HAVE NO RIGHT TO USE THIS SOFTWARE
# IN ANY WAY, AND SHOULD IMMEDIATELY NOTIFY BROADCOM AND DISCONTINUE
# ALL USE OF THE SOFTWARE.  
#  
# Except as expressly set forth in the Authorized License,
#  
# 1.     This program, including its structure, sequence and organization,
# constitutes the valuable trade secrets of Broadcom, and you shall use
# all reasonable efforts to protect the confidentiality thereof,
# and to use this information only in connection with your use of
# Broadcom integrated circuit products.
#  
# 2.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS
# PROVIDED "AS IS" AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES,
# REPRESENTATIONS OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY,
# OR OTHERWISE, WITH RESPECT TO THE SOFTWARE.  BROADCOM SPECIFICALLY
# DISCLAIMS ANY AND ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY,
# NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES,
# ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
# CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING
# OUT OF USE OR PERFORMANCE OF THE SOFTWARE.
# 
# 3.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL
# BROADCOM OR ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL,
# INCIDENTAL, SPECIAL, INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER
# ARISING OUT OF OR IN ANY WAY RELATING TO YOUR USE OF OR INABILITY
# TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF
# THE AMOUNT ACTUALLY PAID FOR THE SOFTWARE ITSELF OR USD 1.00,
# WHICHEVER IS GREATER. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING
# ANY FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY.$
#

# Usage for Make.local.template and Make.local:
#
# Make.local.template is checked into the tree, but Make.local is never
# checked in.  Copy Make.local.template to Make.local, then change
# Make.local to select the desired compilation options (mostly debugging
# features).
#
# Note on CFGFLAGS usage:
#
#   Because CFGFLAGS may be used with other source preprocessing tools,
#   please limit the values added to CFGFLAGS to -D defines.
#
#
# Table of Contents:
#
#     Compiler Related Options
#     Boot and Debug Related Options
#     Operational and Policy Options
#     System Management and Multiple CPU Options
#     Selective Device Support (Switches and PHYs)
#     Miscellaneous Options
#

################################################################
#
# Compiler Related Options
#
################################################################

# Compiling out #ifdef DEBUG code saves about 1.3% on executable size.
# It is recommended to leave debug enabled when developing applications.
#DEBUG_IFDEFS=FALSE

# SAL resource usage tracking #ifdef control
# DEBUG_IFDEFS should also be  TRUE for this switch to take effect.
#BCM_RESOURCE_USAGE_PROFILE_IFDEFS=TRUE

# Uncomment to build without debug symbols
#DEBUG_SYMBOLS=FALSE

# Uncomment to add private CFLAGS
#DEBUG_CFLAGS=

# Uncomment to turn off the optimizer when debugging (recommended)
#DEBUG_OPTIMIZE=FALSE

# Compiling out assert() saves about 1.1% on executable size,
# however do so is VERY MUCH discouraged.
#DEBUG_ASSERTS=FALSE

# Controlling GCC -pedantic flag
#DEBUG_PEDANTIC=TRUE

# compiler.h overrides, these disable various compiler
# related features even if the compiler normally supports them

# Disable use of long long for uint64
#CFGFLAGS += -DCOMPILER_OVERRIDE_NO_LONGLONG

# Disable use of doubles
#CFGFLAGS += -DCOMPILER_OVERRIDE_NO_DOUBLE

# Disable inlining of functions
#CFGFLAGS += -DCOMPILER_OVERRIDE_NO_INLINE

# Disable use of const
#CFGFLAGS += -DCOMPILER_OVERRIDE_NO_CONST

# Disable use of static functions
#CFGFLAGS += -DCOMPILER_OVERRIDE_NO_STATIC

# Disable RPC flexible (long) bitmaps.
# Warning: Disabling this changes the RPC version to 2 and
# makes systems running this code incompatible with systems
# running previous versions of BCM RPC code.
#CFGFLAGS += -DBCM_RPC_PBMP_64

#
# Define if longs are 64 bits on your compiler;
# this is typically true ONLY for 64-bit processors.
#CFGFLAGS += -DLONGS_ARE_64BITS

#
# Define if pointers are 64 bits on your compiler;
# this is typically true ONLY for 64-bit processors.
# NOTE: This support works ONLY under conditions where the
# upper 32 bits for ALL pointers are ZERO.
#CFGFLAGS += -DPTRS_ARE_64BITS


################################################################
#
# Boot and Debug Related Options
#
################################################################

# Define this to add debug code for RX pool buffer tracking
#CFGFLAGS += -DBCM_RXP_DEBUG

# Allow debugging of PCI reads/writes (debug +pci)
#CFGFLAGS += -DSOC_PCI_DEBUG

# Make default debugging settings be 0 (very very quiet)
#CFGFLAGS += -DNO_DEBUG_OUTPUT_DEFAULT

# Don't use vxMemProbe
#CFGFLAGS += -DVX_NO_MEM_PROBE

# Allow debugging of Memory Allocation/Deallocation logging
#CFGFLAGS += -DMEMLOG_SUPPORT

################################################################
################################################################
#
# Operational and Policy Options
#
################################################################

# VLAN policy control:
#	NO_DEFAULT_ETHER	do not init ether ports into vlan 1
#	NO_DEFAULT_CPU		do not init cpu ports into vlan 1
#	NO_DEFAULT_SPI_SUBPORT	do not init spi subports into vlan 1
#	NO_AUTO_STACK		do not init stack/HG ports into created vlans
#CFGFLAGS += -DBCM_VLAN_NO_DEFAULT_ETHER
#CFGFLAGS += -DBCM_VLAN_NO_DEFAULT_CPU
#CFGFLAGS += -DBCM_VLAN_NO_DEFAULT_SPI_SUBPORT
#CFGFLAGS += -DBCM_VLAN_NO_AUTO_STACK

# VLAN multicast flood Policy Control:
# BCM_VLAN_MCAST_FLOOD_ALL      Flood all multicast packets to the VLAN
# BCM_VLAN_MCAST_FLOOD_UNKNOWN  Flood unknown multicast packets to the vlan
# BCM_VLAN_MCAST_FLOOD_NONE     Forward multicast packets with known
#                               destination addresses to the appropriate ports.
#                               All packets destined to an unknown multicast
#                               address are dropped.
#CFGFLAGS += -DBCM_MCAST_FLOOD_DEFAULT=BCM_VLAN_MCAST_FLOOD_ALL
#CFGFLAGS += -DBCM_MCAST_FLOOD_DEFAULT=BCM_VLAN_MCAST_FLOOD_UNKNOWN
#CFGFLAGS += -DBCM_MCAST_FLOOD_DEFAULT=BCM_VLAN_MCAST_FLOOD_NONE

#Port Enable/Disable Policy control:
#       PORT_DEFAULT_DISABLE       disable ports during switch initialization
#CFGFLAGS += -DBCM_PORT_DEFAULT_DISABLE

# sal thread priority override (this value used for all threads if defined)
#CFGFLAGS += -DSAL_THREAD_PRIORITY=255

# disable printing of thread name in messages
#CFGFLAGS += -DSAL_THREAD_NAME_PRINT_DISABLE

# disable runtime reading of flash config.bcm file (even if !NO_FILEIO)
#CFGFLAGS += -DSAL_CONFIG_FILE_DISABLE

# disable all Application SAL dependencies
#NO_SAL_APPL=1


# Prevent scheduling in SPL locks when interrupt code is run as a thread.
# This option should not be necessary if all locks are implemented correctly,
# however, some locks may still rely on the assumption that scheduling does
# not occur when interrupts are disabled. If you experience any locking
# problems in e.g. Linux User Mode, try enabling this option.
# Please note that turning on this option will reduce performance by an
# estimated 5 to 10 %.
#CFGFLAGS += -DSAL_SPL_NO_PREEMPT

# disable mapping of higig cosq when mapping priority to cosq
# (use identity mapping instead : map prio0->cos0, prio1->cos1, ... , prio7->cos7)
#CFGFLAGS += -DBCM_COSQ_HIGIG_MAP_DISABLE

# Enable ukernel debugging module
#CFGFLAGS += -DSOC_UKERNEL_DEBUG


################################################################
#
# System Management and Multiple CPU Options
#
################################################################

# Turn on BCMX inclusion
#     INCLUDE_BCMX for any support
INCLUDE_BCMX=1

# Telekinesis suite applications for CPU to CPU communication and discovery
#     CPUDB:         Simple CPU data base manager
#     CPUTRANS:      CPU to CPU communication mechanisms
#     DISCOVER:      Simple discovery; will also include CPUTRANS
#     STKTASK:       Stack manager application
#
#CFGFLAGS += -DINCLUDE_LIB_CPUDB
#CFGFLAGS += -DINCLUDE_LIB_CPUTRANS
#CFGFLAGS += -DINCLUDE_LIB_DISCOVER
#CFGFLAGS += -DINCLUDE_LIB_STKTASK

# Option for discovery to use the application-data field in routing
# packets for Board-ID and CPU base flag information.
#CFGFLAGS += -DDISCOVER_APP_DATA_BOARDID

# Optionally override list of included dispatch modules
# Note: including RPC automatically includes the Telekinesis suite libs
# ESW is the enterprise platforms.
# ROBO includes the managed devices.
# SBX includes API support for bcm988020QSK24X2
#DISPATCH_LIST = RPC ESW ASYNC SBX

# Define to have end-to-end flow control enabled on boards that
# support it
#CFGFLAGS += -DBCM_BOARD_AUTO_E2E

# Define the following to support per-CPU transmit pointers.
# This allows the TX setup and send functions to be defined on a
# per-CPU basis, allowing mixed in-band and out-of-band communication.
#CFGFLAGS += -DBCM_C2C_TRANSPORT_SWITCHING

# Options for feature list (INCLUDE_XXX)
# If FEATURE_LIST is defined, it is a list of features to include.
# See Make.config for the default feature list.
#
# Avaliable features:
#
#     BCMX
#     BCMX_DIAG
#     CHASSIS
#     CUSTOMER
#     DRIVERS
#     EDITLINE
#     I2C
#     L3
#     MEM_SCAN
#     ATPTRANS_SOCKET
#     TELNET
#     TEST
#     ACL
#     RCPU
#     KNET - Linux user mode kernel network support
#     BCM_SAL_PROFILE - make available an API to track SAL usage.
#     CINT - Include the C Interpreter in the diagnostic shell. 
#            Please note this cannot be used in Linux kernel mode. 
#     C_UNIT - Include the C unit testing framework.  If CINT is also included
#              then hooks will be provided for use from it.
#     PHY_SYM_DBG - PHY GUI MDIO read/write support. Socket interface
#                   to PHY GUI for Symbolic debugging.
#     APIMODE - call SDK API functions from shell, requires CINT
#     DUNE_UI - dune legacy user interface. For debug only. Tested
#               on linux-user-gto-2.6 only.
#     KBP   -   include nlm2(11K)/nlm3(12K) KBP support
#     BHH   -   Include Support for BHH Application (MPLS-TP OAM based on Y.1731) 
#               using BTE on select devices.
#     AVS   - Include AVS support
#FEATURE_LIST=ATPTRANS_SOCKET BCMX_DIAG L3 I2C BCMX MEM_SCAN EDITLINE \
#    CUSTOMER TELNET DRIVERS CHASSIS TEST ACL RCPU BCM_SAL_PROFILE CINT \
#    PTP CES FCMAP BOARD KNET REGEX MACSEC APIMODE BFD KBP AVS

#FEATURE_LIST= ATPTRANS_SOCKET PTP CINT L3 I2C BCMX BCMX_DIAG MEM_SCAN EDITLINE BCM_SAL_PROFILE CUSTOMER TEST CHASSIS MSTP RCPU  

# ARAD + KT2
FEATURE_LIST= ATPTRANS_SOCKET PTP CINT L3 I2C BCMX BCMX_DIAG MEM_SCAN EDITLINE BCM_SAL_PROFILE CUSTOMER TEST CHASSIS MSTP RCPU   INTR BSAFE TELNET DRIVERS DUNE_UI 
#
###############################################################
#              KBP supported devices
#
#Enable this for 11K device support
#KBP_DEVICE = KBP_11K
#
#Enable this for 12K device support
#KBP_DEVICE = KBP_ALG
#
###############################################################

################################################################
#
# Selective Device Support (Switches and PHYs)
#
################################################################

# Multiple Chip Support
#
# By default, the driver supports all Strata switch and fabric chips
# included in this software release.  It checks device IDs at runtime
# to run the correct driver modules.
#
# To save space, the driver can be compiled to support just a subset of
# the chips.  To do this, uncomment the line for BCM_PTL_SPT (partial
# support) and uncomment one line for each chip to support.
#
# Note that there are a lot more chips than drivers.
# For example, the BCM5615 driver is also used for BCM5625 and BCM5645.
#

BCM_PTL_SPT = 1

#BCM_5675_A0 = 1
#BCM_56102_A0 = 1
#BCM_56112_A0 = 1
#BCM_56304_B0 = 1
#BCM_56314_A0 = 1
#BCM_56504_A0 = 1
#BCM_56504_B0 = 1
#BCM_56514_A0 = 1
#BCM_56624_A0 = 1
#BCM_56624_B0 = 1
#BCM_56680_A0 = 1
#BCM_56680_B0 = 1
#BCM_56580_A0 = 1
#BCM_56700_A0 = 1
#BCM_56800_A0 = 1
#BCM_56218_A0 = 1
#BCM_56224_A0 = 1
#BCM_56224_B0 = 1
#BCM_56725_A0 = 1
#BCM_56820_A0 = 1
#BCM_53314_A0 = 1
#BCM_53324_A0 = 1
#BCM_56634_A0 = 1
#BCM_56634_B0 = 1
#BCM_56524_A0 = 1
#BCM_56524_B0 = 1
#BCM_56685_A0 = 1
#BCM_56685_B0 = 1
#BCM_56334_A0 = 1
#BCM_56334_B0 = 1
#BCM_56840_A0 = 1
#BCM_56840_B0 = 1
#BCM_56850_A0 = 1
#BCM_56142_A0 = 1
#BCM_56150_A0 = 1
#BCM_56836_A0 = 1
#BCM_56640_A0 = 1
BCM_56440_A0 = 1
BCM_56440_B0 = 1
BCM_56450_A0 = 1
BCM_56450_B0 = 1
BCM_56450_B1 = 1
#BCM_56960_A0 = 1
#BCM_56860_A0 = 1

#BCM_5338_A0 = 1
#BCM_5380_A0 = 1
#BCM_5338_B0 = 1
#BCM_5325_A1 = 1

#BCM_5324_A0 = 1
#BCM_5396_A0 = 1
#BCM_5389_A0 = 1
#BCM_5398_A0 = 1
#BCM_5324_A1 = 1
#BCM_53115_A0 = 1
#BCM_53118_A0 = 1
#BCM_53280_A0 = 1
#BCM_53280_B0 = 1
#BCM_53101_A0 = 1
#BCM_53125_A0 = 1
#BCM_53128_A0 = 1
#BCM_53600_A0 = 1
#BCM_89500_A0 = 1

#BCM_88030_A0 = 1
#BCM_QE2000_A0 = 1
#BCM_BME3200_B0 = 1
#BCM_BM9600_A0 = 1
#BCM_88230_A0 = 1
#BCM_88230_B0 = 1
#BCM_88230_C0 = 1

# ARAD
BCM_88640_A0=1
BCM_88650_A0=1
BCM_88650_B0=1
BCM_88660_A0=1

#BCM_TK371X_A0 = 1

# Options for multiple PHY support
# If BCM_PHY_LIST is defined, it is a list of PHYs to include.
# The default is to include all of them.
# If none of them should be included specify BCM_PHY_LIST=EMPTY
#BCM_PHY_LIST=522X 54XX 5464 5421S 5482 54616 54680 54680E 52681E 54880E 54682 54684 54640 54640E 54880 SERDES SIMUL 8703 8705 8706 8072 8040 8481 8750 8729 84740 84756 84328 EMPTY

# Options for BCM5338 5380
#CFGFLAGS += -DROBO_OLD
#ROBO_OLD = 1

# Support for phy simulation
#CFGFLAGS += -DINCLUDE_PHY_SIMUL
#CFGFLAGS += -DSIM_ALL_PHYS        # All phys use simulation driver
#CFGFLAGS += -DSIM_CMIC_LINK_STAT  # Get link status from CMIC register

# Support for BOARD library
# if BOARD_LIST is defined, it is a list of Board drivers to include.
# The default is to include all board drivers appropriate for the devices
# included in the build. If none of them should be included specify
# BOARD_LIST=EMPTY.
#BOARD_LIST=GENERIC

# Support for event logging
#CFGFLAGS += -DINCLUDE_SHARED_EVLOG

# Support for BCM API port translation
#CFGFLAGS += -DINCLUDE_BCM_API_XLATE_PORT

# Support for callback error checks and abort in traverse api's
#CFGFLAGS += -DBCM_CB_ABORT_ON_ERR
################################################################
#
# Misc Options
#
################################################################
#CFGFLAGS += -DSOC_MEM_L3_DEFIP_WAR

# Compile out Register/Table descriptive strings to generate a
# compact image
#CFGFLAGS +=-DSOC_NO_NAMES
#CFGFLAGS +=-DSOC_NO_ALIAS
#CFGFLAGS +=-DSOC_NO_DESC

# Reload/WarmBoot Support
#
CFGFLAGS += -DBCM_WARM_BOOT_SUPPORT
#
# Need this for validation using SOC scripts; Will move to tcl 
# someday
CFGFLAGS += -DBCM_WARM_BOOT_SUPPORT_SW_DUMP
#
# Adds a CRC check on scache buffer: Calculate when saving,
# and verify when loading.
# When doing ISSU, both source and destination versions should either have
# this flag enabled or disabled.
#CFGFLAGS += -DSCACHE_CRC_CHECK

################################################################
#
# Enable Easy Reload Support
#
################################################################
#CFGFLAGS += -DBCM_EASY_RELOAD_SUPPORT
# For validation purposes
#CFGFLAGS += -DBCM_EASY_RELOAD_SUPPORT_SW_DUMP

# Software Trunk failover Support
#
#CFGFLAGS += -DBCM_TRUNK_FAILOVER_SUPPORT

################################################################
#
# Override default VXWORKS thread options to make set 
# VX_UNBREAKABLE flag in task creation.
#
################################################################
#CFGFLAGS += -DVX_THREAD_OPT_UNBREAKABLE


################################################################
#
# Use default priority for BDE interrupt thread.
#
################################################################
#CFGFLAGS += -DSAL_BDE_THREAD_PRIO_DEFAULT

################################################################
#
# Use cached DMA memory when mapping kernel DMA memory to user
# mode. Should only be enabled on cache-coherent platforms.
#
################################################################
#CFGFLAGS += -DSAL_BDE_CACHE_DMA_MEM

################################################################
#
# Take the spl lock upon entering an ISR
#
################################################################
#CFGFLAGS += -DSAL_SPL_LOCK_ON_IRQ

################################################################
#
# Silently ignore NULL pointer free in sal_free API
# Default behaviour is to assert if a NULL pointer is passed to sal_free
#
################################################################
#CFGFLAGS += -DSAL_FREE_NULL_IGNORE

################################################################
# Enable SBX MPLS TP support
################################################################
#CFGFLAGS += -DBCM_SBX_MPLSTP_SUPPORT
#CFGFLAGS += -DBCM_SBX_C1_MPLSTP_SUPPORT

################################################################
# Restrict SBX C2 Fte range to C2's range
################################################################
#CFGFLAGS += -DBCM_SBX_C1_C2_INTEROP

################################################################
# For historical reasons the PCI probe function skips device 12
# by default to prevent a system hang on certain platforms.
# Set this value to zero to probe all PCI devices.
################################################################
#CFGFLAGS += -DOVERRIDE_PCI_SKIP_DEV_MASK=0

################################################################
# Override max devices supported by PLI BDE
################################################################
#CFGFLAGS += -DPLI_MAX_DEVICES

################################################################
# Track BCM API calls to avoid deinitialization while calls active
# This will incur a small time penalty for each BCM API call
################################################################
#CFGFLAGS += -DBCM_CONTROL_API_TRACKING

################################################################
# Override default retry time for detach to wait for executing
# APIs to complete.
################################################################
#CFGFLAGS += -DBCM_DETACH_POLL_INTERVAL_USECS_DEFAULT=100000
#CFGFLAGS += -DBCM_DETACH_NUM_RETRIES_DEFAULT=3000

################################################################
# Disable the RX module initialization
################################################################
#CFGFLAGS += -DBCM_RX_DISABLE

################################################################
# Enable TX callback in interrupt thread
################################################################
#CFGFLAGS += -DTX_CB_INTR

