BAL and Maple Release 2.2
Signed-off-by: Shad Ansari <developer@Carbon.local>
diff --git a/bal_release/Makefile b/bal_release/Makefile
new file mode 100644
index 0000000..5fa6488
--- /dev/null
+++ b/bal_release/Makefile
@@ -0,0 +1,425 @@
+###############################################################################
+#
+# <:copyright-BRCM:2016:proprietary:standard
+#
+# Broadcom Ltd. Proprietary and Confidential.(c) 2016 Broadcom Ltd.
+# All Rights Reserved
+#
+# This program is the proprietary software of Broadcom Ltd. 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 Ltd. (an "Authorized License"). Except as set forth in
+# an Authorized License, Broadcom Ltd. grants no license (express or implied), right
+# to use, or waiver of any kind with respect to the Software, and Broadcom Ltd.
+# 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 LTD 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 Ltd., 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 Ltd.
+# 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 U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS
+# SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY
+# LIMITED REMEDY.
+# :>
+#
+###############################################################################
+# Central Makefile
+#
+
+# Identify whether it is customer or development build
+ifneq ("$(wildcard .release_build)","")
+ RELEASE_BUILD=y
+ export RELEASE_BUILD
+endif
+
+DOCS_SUBSYSTEM := core
+ifeq ("$(BUILD_OF_AGENT)", "y")
+ ifneq ("$(findstring core,$(MAKECMDGOALS))", "")
+ $(error Setting BUILD_OF_AGENT=$(BUILD_OF_AGENT) in incompatible with one of make targets "$(MAKECMDGOALS)"")
+ endif
+ # Backward compatibility
+ ifeq ("$(MAKECMDGOALS)", "clean")
+ OVEERIDE_GOAL = clean_agent
+ endif
+ ifeq ("$(MAKECMDGOALS)", "")
+ OVEERIDE_GOAL = sdn_agent
+ endif
+ DOCS_SUBSYSTEM := agent
+endif
+ifeq ("$(BUILD_OF_AGENT)", "n")
+ ifneq ("$(findstring agent,$(MAKECMDGOALS))", "")
+ $(error Setting BUILD_OF_AGENT=$(BUILD_OF_AGENT) in incompatible with one of make targets "$(MAKECMDGOALS)"")
+ endif
+ # Backward compatibility
+ ifeq ("$(MAKECMDGOALS)", "clean")
+ OVEERIDE_GOAL = clean_core
+ endif
+ ifeq ("$(MAKECMDGOALS)", "")
+ OVEERIDE_GOAL = core
+ endif
+endif
+ifneq ("$(findstring agent,$(MAKECMDGOALS))", "")
+ BUILD_OF_AGENT = y
+endif
+
+BUILD_NC_AGENT ?= y
+
+export BUILD_OF_AGENT
+export BUILD_NC_AGENT
+
+PLATFORM ?= maple
+TOP_DIR=$(shell pwd)
+export PLATFORM
+export TOP_DIR
+
+MAKE_DIR=$(TOP_DIR)/mk
+MAKE_DEVICE_DIR=$(MAKE_DIR)/$(DEVICE)
+export MAKE_DIR
+export MAKE_DEVICE_DIR
+
+TOP_SRC_DIR=$(TOP_DIR)/src
+export TOP_SRC_DIR
+
+include $(MAKE_DIR)/Makefile.initial_config
+include $(TOP_DIR)/branch.info
+
+OUT_DIR ?= $(TOP_DIR)/build
+OUT_DOCS_DIR ?= $(OUT_DIR)/doc
+
+export OUT_DIR
+export OUT_DOCS_DIR
+
+# List of all modules, all library modules and all application modules
+export ALL_MODULES
+export ALL_LIB_MODULES
+export ALL_APP_MODULES
+
+# Current board
+export BOARD
+ifneq ("$(BOARD)", "")
+ BOARD_DIR ?= $(TOP_DIR)/3rdparty/maple/boards/cur/$(BOARD)
+ export BOARD_DIR
+endif
+
+# Location of Maple SDK dir
+MAPLE_SDK_DIR ?= $(TOP_DIR)/3rdparty/maple/cur
+
+LOCAL_MAPLE_SDK_DIR = 3rdparty/maple/sdk
+export MAPLE_SDK_DIR
+export LOCAL_MAPLE_SDK_DIR
+MAPLE_BOARD ?= $(BOARD)
+ifneq ("$(MAPLE_BOARD)", "")
+ MAPLE_BOARD_DIR ?= $(MAPLE_SDK_DIR)/../boards/cur/$(MAPLE_BOARD)
+else
+ MAPLE_BOARD_DIR = $(shell cat $(TOP_DIR)/$(LOCAL_MAPLE_SDK_DIR)/build/.maple_board_dir 2> /dev/null)
+ tmp = $(shell ; rm -f $(OUT_DIR)/.maple_board_dir)
+endif
+
+ING_SDK_VER ?= 6.5.7
+ING_SDK ?= sdk-all-$(ING_SDK_VER)
+ING_SDK_PATCH ?=sdk-bal-$(ING_SDK_VER).patch
+ING_SDK_TOP_DIR ?= $(TOP_DIR)/3rdparty/bcm-sdk
+ifeq ("$(BOARD)", "")
+ ING_SDK_DEFAULT_DIR := $(ING_SDK_TOP_DIR)/build/$(ING_SDK)
+else
+ ING_SDK_DEFAULT_DIR := $(ING_SDK_TOP_DIR)/build-$(BOARD)/$(ING_SDK)
+endif
+ING_SDK_DIR ?= $(ING_SDK_DEFAULT_DIR)
+export ING_SDK_VER
+export ING_SDK
+export ING_SDK_PATCH
+export ING_SDK_TOP_DIR
+export ING_SDK_DIR
+
+SWITCH ?= qax
+export SWITCH
+
+TMP_BAL_VERSION_H=${MAKE_DIR}/bal_version.tmp
+BAL_VERSION_H:=${TOP_DIR}/src/common/include/bal_version.h
+
+# NOTE: BUILD_INFO is set and exported by Jenkins when built by that tool
+export JENKINS_BUILD
+ifeq ("$(JENKINS_BUILD)", "y")
+ PERFORCE_REVISION:=$(P4_CHANGELIST)
+else ifneq ("$(RELEASE_BUILD), "y")
+ PERFORCE_REVISION:=$(shell p4 changes -m 1 //$(DEPOT)/$(BRANCH)/...\#have | cut -d " " -f 2)
+ BUILD_INFO="Developer build \("${USER}"@"${PWD}"\)"
+ export BUILD_INFO
+else
+ BUILD_INFO="Customer Release Build \("${USER}"@"${PWD}"\)"
+ export BUILD_INFO
+endif
+
+
+RELEASE_TYPE:=${RELEASE_TYPE}
+BUILD_USER:=${USER}
+BUILD_TOPDIR:=${TOP_DIR}
+BUILD_PERFORCE_REVISION:=$(PERFORCE_REVISION)
+BUILD_VERSION_PREFIX:=$(RELEASE_TYPE)$(MAJOR).$(MINOR).$(PATCH)
+BUILD_VERSION:=$(BUILD_VERSION_PREFIX).${BUILD_PERFORCE_REVISION}
+BUILD_DATE:=`date +%m-%d-%Y-%H%M%S`
+export BUILD_VERSION
+export BUILD_PERFORCE_REVISION
+export SRC_RELEASE_FILE_PREFIX ?= release.src.$(BUILD_VERSION_PREFIX)
+export INCLUDE_MAPLE_SDK_RELEASE ?= y
+
+V ?= 0
+ifeq (x"$(V)", x"0")
+ SILENT = -s
+ export SILENT
+ SILENT_BUILD=@
+endif
+
+# Include board support file
+# It exports variables such as CROSS_COMPILE
+ifneq ("$(BOARD)", "")
+ -include mk/boards/$(BOARD)/board.config
+endif
+
+ifneq ("$(OVEERIDE_GOAL)", "")
+all: $(OVEERIDE_GOAL)
+else
+all: print_maple_dir core sdn_agent
+endif
+
+clean: clean_core clean_agent clean_ocs_omci
+ $(SILENT_BUILD)rm -fr $(OUT_DIR)
+
+help_general:
+ @echo "make parameters:"
+ @echo " BOARD - board to build for"
+ @echo " BOARD_DIR - board directory"
+ @echo " V=<output_level> - =1-verbose command output, =2-makefile debug output"
+ @echo " EXTRA_TYPES - Low-level option. Space-delimited list of extra types without bcmolt_ prefix"
+ @echo " ENABLE_CLI - =n-exclude CLI support. Included by default"
+ @echo "make targets:"
+ @echo " all - build all subsystems. This is the default target"
+ @echo " core - build core subsystem (BAL standalone)"
+ @echo " sdn_agent - build agent subsystem (BAL SDN agent)"
+ @echo " maple_sdk_dir - create 3rdparty/maple/sdk"
+ @echo " maple_sdk - build maple sdk. Please set BOARD=<board> parameter"
+ @echo " maple_sdk_clean - clean maple sdk"
+ @echo " ing_sdk_dir - create 3rdparty/bcm-sdk/build"
+ @echo " ing_sdk - build 3rdparty/bcm-sdk/build"
+ @echo " ing_sdk_clean - clean 3rdparty/bcm-sdk/build"
+ @echo " ing_bcm_user - build the bcm_user binary (toolchains paths must be set correctly first)"
+ @echo " clean - clean everything"
+ @echo " clean_core - clean core subsystem"
+ @echo " clean_sdn_agent - clean SDN agent"
+ @echo " clean_ocs_omci - clean OCS OMCI stack"
+ @echo " clean_bcm_omci - clean Broadcom OMCI stack"
+ @echo " docs - generate reference document in html format"
+ @echo " docs_pdf - generate reference document in pdf format"
+ @echo " docs_clean - clean documents"
+ @echo " version_file - builds BAL version file"
+ @echo " bin_release_core - create BAL core binary release archive"
+ @echo " bin_release_sdn_agent - create BAL SDN agent binary release archive"
+ @echo " bin_release - create BAL core and SDN agent binary release archives"
+ @echo " src_release - create all BAL source release archives"
+ @echo ""
+ @echo "Optional make arguments:"
+ @echo ""
+ @echo " BUILD_NC_AGENT=n - do NOT build NETCONF agent into bcm_sdn_agent. Used with make target \"sdn_agent\""
+ @echo " TEST_SW_UTIL_LOOPBACK=y - stub out the switch utils"
+ @echo ""
+
+
+help: help_general help_core
+
+.PHONY: version_file
+
+version_file:
+ @echo " Generating $@"
+ @echo "/*************************************************************" > $(TMP_BAL_VERSION_H)
+ @echo " * DO NOT EDIT! THIS FILE WAS AUTO GENERATED. DO NOT EDIT! *" >> $(TMP_BAL_VERSION_H)
+ @echo " *************************************************************/" >> $(TMP_BAL_VERSION_H)
+ @echo " wrote header..."
+ @$(BUILD_TOPDIR)/tools/copyright_tools/insert_copyright.pl -t c -l $(BUILD_TOPDIR)/COPYRIGHT >> $(TMP_BAL_VERSION_H)
+ @echo "#if !defined(BAL_VERSION_H)" >> $(TMP_BAL_VERSION_H)
+ @echo "#define BAL_VERSION_H" >> $(TMP_BAL_VERSION_H)
+ @echo "" >> $(TMP_BAL_VERSION_H)
+ @echo "#define BAL_VERSION \"${BUILD_VERSION}\"" >> $(TMP_BAL_VERSION_H)
+ @echo "#define BAL_VERSION_STR_LEN (`echo ${BUILD_VERSION} | wc -c`)" >> $(TMP_BAL_VERSION_H)
+ @echo "" >> $(TMP_BAL_VERSION_H)
+ @echo "#define BAL_BUILD_DATE \"`date`\"" >> $(TMP_BAL_VERSION_H)
+ @echo "#define BAL_BUILD_INFO \"${BUILD_INFO}\"" >> $(TMP_BAL_VERSION_H)
+ @echo "" >> $(TMP_BAL_VERSION_H)
+ @echo "#endif /* BAL_VERSION_H */" >> $(TMP_BAL_VERSION_H)
+ @diff $(TMP_BAL_VERSION_H) $(BAL_VERSION_H) > /dev/null; \
+ if [ $$? -ne 0 ]; then \
+ mv -f $(TMP_BAL_VERSION_H) $(BAL_VERSION_H); \
+ fi
+
+.PHONY: overlay_bal_maple_scripts
+
+overlay_bal_maple_scripts:
+ @echo "Creating and Overlaying BAL-specific svk_init.sh and trx_init.sh onto maple fs"
+ @echo "(in $(LOCAL_MAPLE_SDK_DIR)/build/fs/)"
+ @cp -f $(LOCAL_MAPLE_SDK_DIR)/host_customized/board/wrx/fs/svk_init.sh ~/svk_init.sh
+ @cat ~/svk_init.sh | sed s/".\/bcm_user_appl"/'.\/bcm_user_appl < trx_init.sh \&\& .\/bcm_user_appl'/g > ~/svk_init_for_bal.sh
+ @cat ~/svk_init.sh | sed s/".\/bcm_user_appl"/'.\/bcm_user_appl < trx_init.sh'/g > ~/svk_init_for_bal_startup.sh
+ @mkdir -p $(LOCAL_MAPLE_SDK_DIR)/build/fs/
+ @mv -f ~/svk_init_for_bal.sh $(LOCAL_MAPLE_SDK_DIR)/build/fs/svk_init.sh
+ @mv -f ~/svk_init_for_bal_startup.sh $(LOCAL_MAPLE_SDK_DIR)/build/fs/svk_init_startup.sh
+ @chmod 755 $(LOCAL_MAPLE_SDK_DIR)/build/fs/svk_init.sh
+ @chmod 755 $(LOCAL_MAPLE_SDK_DIR)/build/fs/svk_init_startup.sh
+ @cp -f $(TOP_DIR)/scripts/trx_init.sh $(LOCAL_MAPLE_SDK_DIR)/build/fs/.
+ @rm ~/svk_init.sh
+
+.PHONY:
+
+.PHONY: sdn_agent
+sdn_agent: version_file build_sdn_agent
+
+.PHONY: build_sdn_agent
+build_sdn_agent: build_agent
+ $(SILENT_BUILD)mv $(TOP_DIR)/build/agent/3rdparty/indigo/ofpal_of_agent $(TOP_DIR)/build/agent/bcm_sdn_agent
+ $(SILENT_BUILD)mk/create_artifacts.sh
+
+.PHONY: ing_bcm_user
+
+ing_bcm_user:
+ @echo "Building ING bcm.user"
+ @pushd 3rdparty/bcm-sdk/build/sdk-all-6.4.4/systems/linux/user/gto-2_6 && make && popd
+
+
+# The following variables are only set if they have not been set
+# previously or passed in.
+
+.PHONY: docs
+docs: docs_$(DOCS_SUBSYSTEM)
+
+docs_pdf: docs_$(DOCS_SUBSYSTEM)
+ $(SILENT_BUILD)$(MAKE) -C $(OUT_DOCS_DIR)/latex
+
+docs_clean:
+ $(SILENT_BUILD)$(BOLD_PRINT) "Cleaning docs"
+ $(SILENT_BUILD)rm -fr $(OUT_DOCS_DIR)
+
+clobber: clean docs_clean
+
+.PHONY: print_maple_dir
+
+print_maple_dir:
+ @echo "Using MAPLE from $(MAPLE_SDK_DIR) copied to $(LOCAL_MAPLE_SDK_DIR)"
+
+core: version_file build_core
+ $(SILENT_BUILD)export BUILD_NC_AGENT=n;\
+ export BUILD_OF_AGENT=n;\
+ mk/create_artifacts.sh
+
+%_core:
+ $(SILENT_BUILD)$(MAKE) $(SILENT) SUBSYSTEM=core -f $(MAKE_DIR)/Makefile.main BUILD_NC_AGENT=n $@
+
+agent: version_file build_agent
+
+%_agent:
+ $(SILENT_BUILD)$(MAKE) $(SILENT) SUBSYSTEM=agent -f $(MAKE_DIR)/Makefile.main $@
+
+.PHONY: bin_release_sdn_agent
+bin_release_sdn_agent: bin_release_agent
+
+.PHONY: bin_release
+bin_release: bin_release_core bin_release_agent
+
+.PHONY: maple_sdk_devel_to_release
+
+maple_sdk_devel_to_release:
+ifneq ("$(RELEASE_BUILD)", "y")
+ $(SILENT_BUILD)if [ ! -f $(MAPLE_SDK_DIR)/build/maple/host/fs/bcm68620_boot.bin ]; then \
+ echo !!! Build maple first;\
+ echo make -C $(MAPLE_SDK_DIR) BOARD=wrx;\
+ exit -1;\
+ fi
+ $(SILENT_BUILD)cd $(MAPLE_SDK_DIR) && rm -fr release && scripts/rel_delivery.sh $(MAPLE_REL_DELIVERY_PREFIX)
+ $(SILENT_BUILD)rm -fr $(LOCAL_MAPLE_SDK_DIR)
+endif
+ $(SILENT_BUILD)mkdir -p $(LOCAL_MAPLE_SDK_DIR)
+ $(SILENT_BUILD)cp -ar $(MAPLE_SDK_DIR)/release/* $(LOCAL_MAPLE_SDK_DIR)/
+ifneq ("$(RELEASE_BUILD)", "y")
+ $(SILENT_BUILD)cp $(MAPLE_SDK_DIR)/make/bcm68620/lint.sh $(LOCAL_MAPLE_SDK_DIR)/make/bcm68620/
+endif
+
+.PHONY: maple_sdk_dir
+maple_sdk_dir: maple_sdk_devel_to_release
+ $(SILENT_BUILD)if [ ! -f $(LOCAL_MAPLE_SDK_DIR)/embedded_binaries/bcm68620_boot.bin ]; then \
+ echo !!! $(LOCAL_MAPLE_SDK_DIR)/embedded_binaries/bcm68620_boot.bin is absent;\
+ echo !!! Please copy BCM68620 SDK release to $(LOCAL_MAPLE_SDK_DIR);\
+ exit -1;\
+ fi
+ $(SILENT_BUILD)mkdir -p src/common/os_abstraction
+ $(SILENT_BUILD)rm -fr src/common/os_abstraction/*
+ $(SILENT_BUILD)cd src/common/os_abstraction && ln -s ../../../$(LOCAL_MAPLE_SDK_DIR)/host_customized/os_abstraction/* .
+ $(SILENT_BUILD)rm -f src/common/os_abstraction/bcmos_platform.h
+
+src_release:
+ $(SILENT_BUILD)$(MAKE_DIR)/src_release.sh
+
+.PHONY: maple_sdk
+maple_sdk: maple_sdk_build overlay_bal_maple_scripts
+
+maple_sdk_build:
+ $(SILENT_BUILD)rm -fr $(TOP_DIR)/$(LOCAL_MAPLE_SDK_DIR)/build/output/*
+ $(SILENT_BUILD)cd $(LOCAL_MAPLE_SDK_DIR) && \
+ unset OUT_DIR && \
+ BOARD=$(MAPLE_BOARD) BOARD_DIR=$(MAPLE_BOARD_DIR) $(MAKE) $(SILENT)
+ifeq ("$(BOARD)", "")
+ $(SILENT_BUILD)mkdir -p $(TOP_DIR)/$(LOCAL_MAPLE_SDK_DIR)/build/output/
+ $(SILENT_BUILD)find $(TOP_DIR)/$(LOCAL_MAPLE_SDK_DIR) -name 'lib*.a' -exec ln -s \{\} $(TOP_DIR)/$(LOCAL_MAPLE_SDK_DIR)/build/output/ 2> /dev/null \;
+ $(SILENT_BUILD)rm -f $(TOP_DIR)/$(LOCAL_MAPLE_SDK_DIR)/build/.maple_board_dir
+else
+ $(SILENT_BUILD)echo $(MAPLE_BOARD_DIR) > $(TOP_DIR)/$(LOCAL_MAPLE_SDK_DIR)/build/.maple_board_dir
+endif
+
+maple_sdk_clean:
+ $(SILENT_BUILD)OUT_DIR=$(TOP_DIR)/$(LOCAL_MAPLE_SDK_DIR)/build OUT_DIR_BASE=$(TOP_DIR)/$(LOCAL_MAPLE_SDK_DIR)/build \
+ BOARD_DIR=$(MAPLE_BOARD_DIR) $(MAKE) $(SILENT) -C $(LOCAL_MAPLE_SDK_DIR) TOP_DIR=$(TOP_DIR)/3rdparty/maple/sdk \
+ BOARD=$(MAPLE_BOARD) clean
+
+ing_sdk_dir:
+ $(SILENT_BUILD)$(ING_SDK_TOP_DIR)/make_ing_dir.sh
+
+ing_sdk:
+ $(SILENT_BUILD)$(MAKE) -C $(ING_SDK_TOP_DIR) -f Makefile.sdk sdk
+
+ing_sdk_clean:
+ifeq ($(ING_SDK_DEFAULT_DIR), $(ING_SDK_DIR))
+ $(SILENT_BUILD)rm -fr $(ING_SDK_DIR)
+else
+ $(SILENT_BUILD)$(MAKE) -C $(ING_SDK_DIR) clean
+endif
+
+clean_ocs_omci:
+ $(SILENT_BUILD)$(MAKE) -C $(TOP_DIR)/3rdparty/ocs_omci clean
+
+#clean_bcm_omci:
+# $(SILENT_BUILD)$(MAKE) -C $(TOP_DIR)/3rdparty/ocs_omci clean
+
+.PHONY: clean_sdn_agent
+clean_sdn_agent: clean_agent
+
+print-% : ; @echo $* = $($*)
+