# $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

###############################################################
#              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

#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

