BAL and Maple Release 2.2
Signed-off-by: Shad Ansari <developer@Carbon.local>
diff --git a/bcm68620_release/release/make/Makefile.config b/bcm68620_release/release/make/Makefile.config
new file mode 100644
index 0000000..908239a
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.config
@@ -0,0 +1,391 @@
+# Common Makefile configuration
+#
+
+# The following variables must be set
+# MOD_NAME - module name. Depending on MOD_TYPE can be encapsulated (e.g., MOD_NAME=os --> libos.a)
+# MOD_TYPE - module type. Supported types currently are "lib", "app", "linux_module" and "linux_lib"
+# Note:
+# For library module it is possible to specify "unitest" target in
+# $(MAKE_DEVICE_DIR)/modules.host / embedded.
+# In this case unitest.c is compiled and linked with its module library.
+# However, MOD_TYPE remains a "lib".
+#
+# The following variables are optional
+# srcs - list of .c source files relative to SRC_DIR
+# as_srcs - list of .s (lower case s) source files relative to SRC_DIR
+# AS_srcs - list of .S (upper case .S) source files relative to SRC_DIR
+# gen_srcs - list of .c that have to be generated as part of the build
+# MOD_DEPS - list of modules the "current" module depends on. OS abstraction layer dependency
+# (module "os") is always present implicitly. For example, api_cli module's Makefile
+# includes the following line:
+# MOD_DEPS = cli api utils model
+# MOD_INC_DIRS - used when module exports includes in directory(s) other than the module directory
+# MOD_DEFS - additional defines, including -D. the defines are added when compiling "this" module
+# and all modules depending on it
+# MOD_LIBS - additional libraries required by the module, including -l and -L
+# MOD_CUSTOM - if set "y", default rule for building the module is NOT provided.
+# In this case the rule for building $(MOD_TARGET) must be provided in module's Makefile
+#
+# The following variables are not required in most cases, but supported nonetheless
+# EXTRA_CFLAGS - extra CFLAGS the module requires for compilation
+# EXTRA_INCLUDES - extra include directories the module requires for compilation (with -I)
+# EXTRA_LIBS_PATH - additional library search paths
+# EXTRA_LIBS additional libraries to link with
+#
+# The following variables are pre-set and can be used in module-specific Makefile
+# TOP_DIR - fully qualified top directory
+# MOD_DIR - module directory relative to the top directory
+# OUT_DIR_BASE - output directory base
+# ALL_MODULES - list of all modules in the current subsystem (host/embedded)
+# ALL_LIB_MODULES - list of all lib modules in the current subsystem (host/embedded)
+# ALL_APP_MODULES - list of all app modules in the current subsystem (host/embedded)
+# SIMULATION_BUILD - set "y" for simulation build (CROSS_COMPILE is empty)
+# OS - OS
+# ENABLE_EPON - set "y" if EPON mode is included
+# ENABLE_GPON - set "y" if GPON mode is included
+# ENABLE_XGPON - set "y" if XGPON mode is included
+# ENABLE_GPON_OR_XGPON - set "y" if GPON or XGPON mode is included
+# ENABLE_CLI - set "n" if host CLI support is not required
+# ENABLE_LOG - set "n" if host logger support is not required
+#
+# USE_CLANG - set "y" to enable CLANG code pass for improved diagnostic
+#
+# The following variables are pre-set and can be used and/or overwritten in module-specific Makefile
+# SRC_DIR - fully-qualified source directory
+# OUT_DIR - module output directory
+# TARGET_LIB - library name for "lib" module. By default it is $(MOD_NAME)
+# TARGET_LIB_FNAME - module library file name including path. By default it is $(OUT_DIR)/lib$(TARGET_LIB).a
+# MOD_TARGET - module target name, including path. By default it is
+# $(OUT_DIR)/$(MOD_NAME) for "app" modules
+# $(TARGET_LIB_FNAME) for "lib" modules
+# CODEGEN_OUTPUT_DIR - output directory containing generated files
+
+TOOLCHAIN ?= gcc
+OS ?= posix
+DEBUG ?= y
+BLD_DEP ?= gcc
+USE_CLANG ?= n
+
+export BOARD
+export TOOLCHAIN
+export OS
+export DEBUG
+export BLD_DEP
+export OS_KERNEL
+
+V ?= 0
+ifeq (x"$(V)", x"0")
+ SILENT_BUILD = @
+endif
+
+#
+# Compiler warning configuration
+# Some extra warnings are always enabled. Others must be opted in on the module level
+#
+ENABLE_EXTRA_WARNINGS ?= y
+export ENABLE_EXTRA_WARNINGS
+
+# Include optional platform-specific configuration
+-include $(MAKE_DEVICE_DIR)/Makefile.$(SUBSYSTEM).config
+
+ENABLE_EPON ?= y
+ENABLE_GPON ?= y
+ENABLE_XGPON ?= y
+
+ENABLE_GPON_OR_XGPON = n
+ifeq ("$(ENABLE_GPON)", "y")
+ ENABLE_GPON_OR_XGPON = y
+endif
+ifeq ("$(ENABLE_XGPON)", "y")
+ ENABLE_GPON_OR_XGPON = y
+endif
+export ENABLE_EPON
+export ENABLE_GPON
+export ENABLE_XGPON
+export ENABLE_GPON_OR_XGPON
+
+SRC_DIR = $(TOP_DIR)/$(MOD_DIR)
+
+ifeq ("$(RELEASE_BUILD)", "y")
+ OUT_DIR_BASE ?= $(TOP_DIR)/build
+ OUT_DIR = $(OUT_DIR_BASE)/$(MOD_DIR)
+ MODEL_OUT_DIR= $(TOP_DIR)/host_driver/model
+ CONFIG_DIR = host_driver/config
+else
+ OUT_DIR_BASE ?= $(TOP_DIR)/build/$(PLATFORM)/$(SUBSYSTEM)
+ OUT_DIR = $(OUT_DIR_BASE)/$(MOD_DIR)
+ MODEL_OUT_DIR= $(OUT_DIR_BASE)/common/model/$(PLATFORM)
+ CONFIG_DIR = $(SUBSYSTEM)/config
+ OS_PLATFORM_DIR = $(SUBSYSTEM)/os_abstraction/$(PLATFORM)
+endif
+
+# Host CLI and logger support
+ENABLE_CLI ?= y
+ENABLE_LOG ?= y
+ENABLE_KT2 ?= n
+
+MOD_DEFS += -DUSE_DRIVER_CLI=1 -DFULL_DRIVER=1 -DCFE_DRIVER=0
+
+export ENABLE_CLI
+export ENABLE_LOG
+export ENABLE_KT2
+
+ifeq ("$(SUBSYSTEM)", "embedded")
+ override ENABLE_CLI = y
+ override ENABLE_LOG = y
+endif
+
+#
+### Include module Makefile
+# For MOD_CUSTOM only will be included in Makefile.rules second time for propagate custom rules
+#
+include $(SRC_DIR)/Makefile
+
+# Code-generator - related parameters
+CODEGEN_INPUT_DIR = $(SRC_DIR)/codegen_templates
+CODEGEN_OUTPUT_DIR = $(OUT_DIR)
+CODEGEN_DIR = $(TOP_DIR)/bin/codegen
+MODEL_FILE = $(TOP_DIR)/common/model/$(PLATFORM)/$(PLATFORM).objset
+CODEGEN_EXE = $(CODEGEN_DIR)/Teknovus.MetaStructure.CodeGenerator.exe
+MONO_VER ?= 4.3.2.467
+MONO_PATH ?= /opt/mono-$(MONO_VER)/bin/mono
+
+export SRC_DIR
+export OUT_DIR_BASE
+export OUT_DIR
+export MODEL_OUT_DIR
+
+ifeq ("$(wildcard $(MONO_PATH))", "")
+ # If we can't find Mono installed in the correct path, default to the current PATH version.
+ # In the future, we should always use Mono from a common tools directory.
+ # TODO: change this once the compiler/toolchain paths are better defined.
+ MONO_PATH = mono
+endif
+
+# Treat "yes" and "y" the same
+ifeq ("$(USE_CLANG)", "yes")
+ USE_CLANG := y
+endif
+ifeq ("$(USE_CLANG)", "y")
+ include $(MAKE_DIR)/clang.opts
+endif
+
+# Disable code generation in release build
+ifeq ("$(RELEASE_BUILD)", "y")
+ srcs := $(srcs) $(gen_srcs)
+ gen_srcs :=
+ # Disable LINT and CLANG
+ USE_LINT = n
+ USE_CLANG = n
+ EXTRA_DEFINES += -DRELEASE_BUILD
+endif
+
+SRCS = $(strip $(srcs:%=$(SRC_DIR)/%))
+
+# In COMPILE_ALL_IN_ONE_GO mode all .c files of a module are compiled in
+# a single invocation of BLD_CC compiler. In result, objects files are created
+# in OUT_DIR even if module's .c files are spread in sub-directories
+ifeq ("$(COMPILE_ALL_IN_ONE_GO)", "y")
+ srcs_no_dir = $(notdir $(srcs))
+ _OBJS = $(srcs_no_dir:%.c=$(OUT_DIR)/%.o)
+else
+ _OBJS = $(srcs:%.c=$(OUT_DIR)/%.o)
+endif
+
+as_SRCS = $(strip $(as_srcs:%=$(SRC_DIR)/%))
+as_OBJS = $(as_srcs:%.s=$(OUT_DIR)/%.o)
+_OBJS += $(as_OBJS)
+
+AS_SRCS = $(strip $(AS_srcs:%=$(SRC_DIR)/%))
+AS_OBJS = $(AS_srcs:%.S=$(OUT_DIR)/%.o)
+_OBJS += $(AS_OBJS)
+
+ifneq ("$(gen_srcs)", "")
+ GEN_SRCS = $(strip $(gen_srcs:%=$(CODEGEN_OUTPUT_DIR)/%))
+ _OBJS += $(GEN_SRCS:%.c=%.o)
+endif
+OBJS = $(strip $(_OBJS))
+
+# Add default dependency on OS abstraction
+ifeq ("$(MOD_NAME)", "")
+ ifneq (x"$(V)", x"0")
+ $(info MOD_NAME is not set for $(SRC_DIR)/Makefile. Skipping..)
+ endif
+ MOD_TYPE = _skip_
+endif
+
+# Add default dependency on OS abstraction
+ifneq ("$(MOD_SUPPRESS_OS_DEP), "y)
+ ifeq ("$(MOD_TYPE)", "linux_module")
+ _kernel = y
+ endif
+ ifeq ("$(MOD_TYPE)", "linux_lib")
+ _kernel = y
+ endif
+ ifeq ("$(_kernel)", "y")
+ MOD_DEPS := os_linux $(MOD_DEPS)
+ else
+ MOD_DEPS := os $(MOD_DEPS)
+ endif
+endif
+
+# GEN_OBJTAGS define which objects are generated. If not set explicitly,
+# derive it from ENABLE_EPON, ENABLE_GPON, ENABLE_XGPON flags
+ifeq ("$(GEN_OBJTAGS)", "")
+ ifeq ("$(ENABLE_EPON)", "y")
+ GEN_OBJTAGS := $(GEN_OBJTAGS),EPON,AE
+ endif
+ ifeq ("$(ENABLE_GPON)", "y")
+ GEN_OBJTAGS := $(GEN_OBJTAGS),GPON
+ endif
+ ifeq ("$(ENABLE_XGPON)", "y")
+ GEN_OBJTAGS := $(GEN_OBJTAGS),XGPON
+ endif
+ ifeq ("$(GEN_OBJTAGS)", "")
+ $(error At least one of ENABLE_EPON, ENABLE_GPON, ENABLE_XGPON must be set =y)
+ endif
+endif
+
+# Extra types filter
+ifneq ("$(EXTRA_TYPES)", "")
+ EXTRA_TYPES := $(shell echo -n $(EXTRA_TYPES) | sed -e 's/ /\\|/g')
+ GEN_EXTRA_TYPES := -typeNameFilter=\^\($(EXTRA_TYPES)\)\$$
+endif
+
+OS_KERNEL ?= $(OS)
+UC_PLATFORM = $(shell echo $(PLATFORM) | tr a-z A-Z)
+UC_SUBSYSTEM = $(shell echo $(SUBSYSTEM) | tr a-z A-Z)
+UC_OS = $(shell echo $(OS) | tr a-z A-Z)
+UC_OS_KERNEL = $(shell echo $(OS_KERNEL) | tr a-z A-Z)
+
+BUILD_TIME = $(shell date +%s)
+BUILD_TIME_ZONE = $(shell date +%:z)
+EXTRA_CFLAGS += -DBUILD_TIME=$(BUILD_TIME) -DBUILD_TIME_ZONE='"$(BUILD_TIME_ZONE)"'
+
+EXTRA_DEFINES += -DBCM_SUBSYSTEM_$(UC_SUBSYSTEM) -DBCM_PLATFORM_$(UC_PLATFORM) -DBCM_OS_$(UC_OS)
+EXTRA_DEFINES += -D$(UC_OS_KERNEL)_KERNEL_SPACE
+ifeq ("$(ENABLE_EPON)", "y")
+ EXTRA_DEFINES += -DBCM_EPON
+endif
+ifeq ("$(ENABLE_GPON)", "y")
+ EXTRA_DEFINES += -DBCM_GPON
+endif
+ifeq ("$(ENABLE_XGPON)", "y")
+ EXTRA_DEFINES += -DBCM_XGPON
+endif
+
+# Build unitests for simulation and from Jenkins jobs
+UNITEST ?= n
+
+ifeq ("$(SIMULATION_BUILD)", "y")
+ EXTRA_DEFINES += -DSIMULATION_BUILD
+ UNITEST = y
+endif
+
+ifeq ("$(JENKINS_BUILD)", "y")
+ UNITEST = y
+endif
+
+EXTRA_INCLUDES += -I$(SRC_DIR)
+
+OPT_DISABLE_EMBEDDED ?= n
+OPT_DISABLE_HOST ?=n
+
+ifeq ("OPT_DISABLE_$(UC_SUBSYSTEM)", "OPT_DISABLE_EMBEDDED")
+ OPT_DISABLE := $(OPT_DISABLE_EMBEDDED)
+else
+ OPT_DISABLE := $(OPT_DISABLE_HOST)
+endif
+
+ARCH_CFLAGS = $(ARCH_FLAGS)
+ifeq ("$(OPT_DISABLE)", "y")
+ ARCH_CFLAGS += $(DEBUG_O_CFLAGS)
+ EXTRA_LFLAGS += $(DEBUG_O_LFLAGS)
+ EXTRA_ASFLAGS += $(DEBUG_O_ASFLAGS)
+ EXTRA_asFLAGS += $(DEBUG_O_asLAGS)
+else
+ ARCH_CFLAGS += $(RELEASE_O_CFLAGS)
+ EXTRA_LFLAGS += $(RELEASE_O_LFLAGS)
+ EXTRA_ASFLAGS += $(RELEASE_O_ASFLAGS)
+ EXTRA_asFLAGS += $(RELEASE_O_asFLAGS)
+endif
+
+# Treat lib as shared lib if BUILD_SHARED_LIBS is y
+ifeq ("$(BUILD_SHARED_LIBS)", "y")
+ ifeq ("$(MOD_TYPE)", "lib")
+ MOD_TYPE = shared_lib
+ endif
+ SHARED_LIB_PATH ?= $(OUT_DIR_BASE)/shared_libs
+endif
+
+# Calculate MOD_TARGET based on MOD_TYPE
+ifeq ("$(MOD_TYPE)", "lib")
+ ifneq ("$(OBJS)", "")
+ TARGET_LIB ?= $(MOD_NAME)
+ TARGET_LIB_FNAME ?= $(OUT_DIR)/lib$(TARGET_LIB).a
+ endif
+ MOD_TARGET ?= $(TARGET_LIB_FNAME)
+else ifeq ("$(MOD_TYPE)", "shared_lib")
+ ifneq ("$(OBJS)", "")
+ TARGET_LIB ?= $(MOD_NAME)
+ TARGET_LIB_FNAME ?= $(OUT_DIR)/lib$(TARGET_LIB).so
+ endif
+ MOD_TARGET ?= $(TARGET_LIB_FNAME)
+else ifeq ("$(MOD_TYPE)", "app")
+ MOD_TARGET ?= $(OUT_DIR)/$(MOD_NAME)
+else ifeq ("$(MOD_TYPE)", "linux_module")
+ ifeq ("$(KERNELDIR)", "")
+ $(error KERNELDIR must be set in board profile)
+ endif
+ ifeq ("$(KERNEL_ARCH)", "")
+ $(error KERNEL_ARCH must be set in board profile)
+ endif
+ ifeq ("$(KERNEL_OUTDIR)", "")
+ KERNEL_OUTDIR := $(KERNELDIR)
+ endif
+ MOD_TARGET ?= $(SRC_DIR)/$(MOD_NAME).ko
+else ifeq ("$(MOD_TYPE)", "linux_lib")
+ MOD_TARGET ?= $(OUT_DIR_BASE)/$(MOD_NAME).linuxlib
+else ifeq ("$(MOD_TYPE)", "_skip_")
+ MOD_TARGET = .dummy
+else
+ $(error MOD_TYPE $(MOD_TYPE) is incorrect for module $(MOD_NAME). Must be lib or app)
+endif
+
+ifeq ("$(MOD_TARGET)", "")
+ MOD_TARGET = $(MOD_NAME)
+endif
+
+ifeq ("$(OS)", "posix")
+ EXTRA_DEFINES += -D_XOPEN_SOURCE=600
+ LIBS = -lrt -lpthread -lm
+endif
+
+# Make sure that paths in EXTRA_INCLUDES are absolute
+ifneq ("$(EXTRA_INCLUDES)", "")
+ # Make sure that each directory is an absolute path
+ EXTRA_INCS = $(addprefix -I$(TOP_DIR)/, $(subst -I,,$(subst $(TOP_DIR)/,,$(EXTRA_INCLUDES))))
+endif
+ifneq ("$(EXTRA_ASINCLUDES)", "")
+ # Make sure that each directory is an absolute path
+ EXTRA_ASINCS = $(addprefix -I$(TOP_DIR)/, $(subst -I,,$(subst $(TOP_DIR)/,,$(EXTRA_ASINCLUDES))))
+endif
+ifneq ("$(EXTRA_asINCLUDES)", "")
+ # Make sure that each directory is an absolute path
+ EXTRA_asINCS = $(addprefix -I$(TOP_DIR)/, $(subst -I,,$(subst $(TOP_DIR)/,,$(EXTRA_asINCLUDES))))
+endif
+ifeq ("$(USE_LINT)", "y")
+ USE_LINT := yes
+endif
+ifeq ("$(USE_LINT)", "yes")
+ EXTRA_DEFINES += -DUSE_LINT
+endif
+
+EXTRA_DEFINES += $(USER_EXTRA_DEFINES) $(USER_EXTRA_$(UC_SUBSYSTEM)_DEFINES)
+EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS) $(USER_EXTRA_$(UC_SUBSYSTEM)_CFLAGS)
+CFLAGS += $(ARCH_CFLAGS) $(EXTRA_CFLAGS) $(EXTRA_INCS) $(EXTRA_DEFINES)
+ASFLAGS += $(ARCH_FLAGS) $(EXTRA_ASFLAGS) $(EXTRA_ASINCS) $(EXTRA_ASDEFINES)
+asFLAGS += $(ARCH_FLAGS) $(EXTRA_asFLAGS) $(EXTRA_asINCS) $(EXTRA_asDEFINES)
+LFLAGS += $(ARCH_FLAGS) $(EXTRA_LFLAGS)
+DEP_FLAGS += $(EXTRA_CFLAGS) $(EXTRA_INCS) $(EXTRA_DEFINES)
+CLANG_FLAGS += $(EXTRA_CFLAGS) $(EXTRA_INCS) $(EXTRA_DEFINES) $(CLANG_OPTS)
diff --git a/bcm68620_release/release/make/Makefile.initial_config b/bcm68620_release/release/make/Makefile.initial_config
new file mode 100644
index 0000000..541ec84
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.initial_config
@@ -0,0 +1,6 @@
+ifeq ("$(TERM)", "dumb")
+ BOLD_PRINT := printf "\n---- %s --------------------------------------------------\n"
+else
+ BOLD_PRINT?=printf "[01m%s[0m\n"
+endif
+export BOLD_PRINT
diff --git a/bcm68620_release/release/make/Makefile.main b/bcm68620_release/release/make/Makefile.main
new file mode 100644
index 0000000..2ddef1e
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.main
@@ -0,0 +1,153 @@
+# Main Makefile body
+# It is included in the central Makefile twice - for host and embedded subsystems
+# PARAMATER: SUBSYSTEM
+
+UC_SUBSYSTEM = $(shell echo $(SUBSYSTEM) | tr a-z A-Z)
+
+$(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD): $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM) \
+ $(MAKE_DIR)/Makefile.config $(MAKE_DIR)/Makefile.rules $(MAKE_DIR)/Makefile.template $(MAKE_DIR)/Makefile.main
+ @if ! test -f $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD); then\
+ if ls $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_* 2>/dev/null >/dev/null; then\
+ olddeps=`ls $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_*` ; \
+ old_board=`echo $$olddeps | sed 's@$(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_@@'` ; \
+ $(BOLD_PRINT) "Previous build was for different board $$old_board. cleaning up..";\
+ $(MAKE) -s BOARD=$$old_board V=0 clean_$(SUBSYSTEM); \
+ fi;\
+ fi
+ @$(BOLD_PRINT) "Generating list of $(SUBSYSTEM) modules for $(PLATFORM)"
+ @rm -fr $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_*
+ @rm -fr $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)
+ @rm -fr $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)
+ @rm -fr $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)
+ @mkdir -p $(OUT_$(UC_SUBSYSTEM)_DIR)
+ @touch $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)
+ @touch $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)
+ @touch $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)
+ @for mod_dir in `awk '{print $$1}' $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM)`; do\
+ if test "$$mod_dir" = "" ; then continue; fi; \
+ mod_name=`$(MAKE) -s V=0 SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir SKIP_DEPS=yes -f $(MAKE_DIR)/Makefile.template module_name`;\
+ if test "$$mod_name" = "" ; then continue; fi; \
+ mod_name=$${mod_name}_$(SUBSYSTEM);\
+ mod_type=`grep -e '^[[:space:]]*MOD_TYPE[[:space:]]*=' $$mod_dir/Makefile | awk -F= '{sub(/\r/,""); print $$2}' | sed -e 's/^[ \t]*//'`; \
+ echo -n "$$mod_name " >> $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM); \
+ if test "`echo -n $$mod_type | sed -e 's/linux_lib lib/lib/' | sed -e 's/lib linux_lib/lib/'`" = "lib" ; then\
+ echo -n "$$mod_name " >> $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM); \
+ fi;\
+ if test "$$mod_type" = "app" ; then\
+ echo -n "$$mod_name " >> $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM); \
+ fi;\
+ done
+ @touch $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD)
+
+$(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_$(BOARD): $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD)
+ @$(BOLD_PRINT) "Building $(BOARD) board environment for $(PLATFORM)"
+ $(MAKE) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) SKIP_DEPS=yes \
+ ALL_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)`" \
+ ALL_LIB_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)`" \
+ ALL_APP_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)`" \
+ -f $(MAKE_DIR)/Makefile.template board_env
+ @$(BOLD_PRINT) "Generating $(SUBSYSTEM) dependencies for $(PLATFORM)"
+ @for mod_dir in `awk '{print $$1}' $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM)`; do\
+ if test "$$mod_dir" = "" ; then continue; fi; \
+ mod_name=`$(MAKE) -s V=0 SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir SKIP_DEPS=yes -f $(MAKE_DIR)/Makefile.template module_name`;\
+ if test "$$mod_name" = "" ; then continue; fi; \
+ if ! $(MAKE) $(SILENT) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) SKIP_DEPS=yes \
+ ALL_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)`" \
+ ALL_LIB_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)`" \
+ ALL_APP_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)`" \
+ -f $(MAKE_DIR)/Makefile.template moddep; then exit 1;\
+ fi;\
+ done
+ @touch $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_$(BOARD)
+
+.PHONY:
+
+# Make sure that none of module Makefiles changed.
+# If there is a change - we need to regenerate dependencies
+_deps_$(SUBSYSTEM)_: $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_$(BOARD) .PHONY
+ @cat $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM) | while read -r mod_dir_targ; do\
+ mod_dir=`echo $$mod_dir_targ | awk '{print $$1}'`;\
+ if test "$$mod_dir" = "" ; then continue; fi; \
+ if test $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD) -ot $$mod_dir/Makefile; then\
+ echo $$mod_dir/Makefile changed, must regenerate dependencies.;\
+ echo PLEASE RE-RUN make;\
+ rm -f $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_$(BOARD);\
+ exit -1;\
+ fi;\
+ done
+
+build_$(SUBSYSTEM): _deps_$(SUBSYSTEM)_
+ @$(BOLD_PRINT) "Building $(SUBSYSTEM) image for $(PLATFORM)"
+ @cat $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM) | while read -r mod_dir_targ; do\
+ mod_dir=`echo $$mod_dir_targ | awk '{print $$1}'`;\
+ if test "$$mod_dir" = "" ; then continue; fi; \
+ mod_targets=`echo $$mod_dir_targ | awk '{print $$2 $$3 $$4 $$5}'`;\
+ if ! $(MAKE) $(SILENT) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) \
+ ALL_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)`" \
+ ALL_LIB_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)`" \
+ ALL_APP_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)`" \
+ -f $(MAKE_DIR)/Makefile.template $$mod_targets; then exit 1;\
+ fi;\
+ done
+ @$(BOLD_PRINT) "Finished building $(SUBSYSTEM) image for $(PLATFORM)"
+
+clean_$(SUBSYSTEM): BOARD=$(shell ls $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_* 2>/dev/null | sed 's@$(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)_list_@@')
+
+clean_$(SUBSYSTEM):
+ @$(BOLD_PRINT) "Clean $(PLATFORM) $(SUBSYSTEM) BOARD=$(BOARD)"
+ @for mod_dir in `awk '{print $$1}' $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM)`; do\
+ if test "$$mod_dir" = "" ; then continue; fi; \
+ if ! $(MAKE) $(SILENT) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) SKIP_DEPS=yes \
+ -f $(MAKE_DIR)/Makefile.template clean_module; then exit 1; fi;\
+ done
+ $(SILENT_BUILD)rm -f $(OUT_$(UC_SUBSYSTEM)_DIR)/Makefile.config.*
+ $(SILENT_BUILD)rm -f $(OUT_$(UC_SUBSYSTEM)_DIR)/.deps_$(SUBSYSTEM)*
+ $(SILENT_BUILD)rm -f $(OUT_$(UC_SUBSYSTEM)_DIR)/all_*modules.$(SUBSYSTEM)
+ $(SILENT_BUILD)find $(SUBSYSTEM) -name '*~' -print0 2>/dev/null | xargs -0 rm -rf
+ $(SILENT_BUILD)find $(SUBSYSTEM) -name '*.ko' -print0 2>/dev/null | xargs -0 rm -rf
+ $(SILENT_BUILD)find $(SUBSYSTEM) -name '.*.cmd' -print0 2>/dev/null | xargs -0 rm -rf
+ $(SILENT_BUILD)find $(SUBSYSTEM) -name '*.o' -print0 2>/dev/null | xargs -0 rm -rf
+ $(SILENT_BUILD)find $(SUBSYSTEM) -name '*.mod.c' -print0 2>/dev/null | xargs -0 rm -rf
+ $(SILENT_BUILD)find $(SUBSYSTEM) -name modules.order -print0 2>/dev/null | xargs -0 rm -rf
+ $(SILENT_BUILD)find $(SUBSYSTEM) -name Module.symvers -print0 2>/dev/null | xargs -0 rm -rf
+ $(SILENT_BUILD)find $(SUBSYSTEM) -name .tmp_versions -print0 2>/dev/null | xargs -0 rm -rf
+
+help_$(SUBSYSTEM):
+ @echo "$$PLATFORM $(SUBSYSTEM) modules:"
+ @cat $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM) | while read -r mod_dir_targ; do\
+ mod_dir=`echo $$mod_dir_targ | awk '{print $$1}'`;\
+ if test "$$mod_dir" = "" ; then continue; fi; \
+ mod_name=`$(MAKE) -s V=0 SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir SKIP_DEPS=yes -f $(MAKE_DIR)/Makefile.template module_name`;\
+ if test "$$mod_name" = "" ; then continue; fi; \
+ echo " " $${mod_name}_$(SUBSYSTEM);\
+ done
+
+# Targets for building individual $(SUBSYSTEM) module
+%_$(SUBSYSTEM):: _deps_$(SUBSYSTEM)_
+ @while read -r mod_dir_targ; do\
+ mod_dir=`echo $$mod_dir_targ | awk '{print $$1}'`;\
+ if test "$$mod_dir" = "" ; then continue; fi; \
+ mod_name=`$(MAKE) -s V=0 SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir SKIP_DEPS=yes -f $(MAKE_DIR)/Makefile.template module_name`;\
+ if test "$$mod_name" = "" ; then continue; fi; \
+ mod_name=$${mod_name}_$(SUBSYSTEM);\
+ mod_targets=`echo $$mod_dir_targ | awk '{print $$2 $$3 $$4 $$5}'`;\
+ if test "$$mod_name" = "$@" ; then\
+ target_found=y;\
+ $(MAKE) $(SILENT) SUBSYSTEM=$(SUBSYSTEM) MOD_DIR=$$mod_dir OUT_DIR_BASE=$(OUT_$(UC_SUBSYSTEM)_DIR) \
+ ALL_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_modules.$(SUBSYSTEM)`" \
+ ALL_LIB_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_lib_modules.$(SUBSYSTEM)`" \
+ ALL_APP_MODULES="`cat $(OUT_$(UC_SUBSYSTEM)_DIR)/all_app_modules.$(SUBSYSTEM)`" \
+ -f $(MAKE_DIR)/Makefile.template $$mod_targets || exit 1;\
+ fi;\
+ done < $(MAKE_DEVICE_DIR)/modules.$(SUBSYSTEM);\
+ if test "$$target_found" != "y" ; then\
+ echo No rule to make target $@;\
+ exit 1;\
+ fi
+
+docs_$(SUBSYSTEM): _deps_$(SUBSYSTEM)_
+ mkdir -p $(OUT_DOCS_DIR)
+ sed -e 's@%OUT_DOCS_DIR@$(OUT_DOCS_DIR)@g' -e 's@%MODEL_DIR@$(OUT_$(UC_SUBSYSTEM)_DIR)/common/model/$(PLATFORM)@g' \
+ -e 's@%API_DIR@$(TOP_DIR)/$(SUBSYSTEM)/api/$(PLATFORM)@g' doc_config/Doxyfile > $(OUT_DOCS_DIR)/Doxyfile
+ doxygen $(OUT_DOCS_DIR)/Doxyfile
+
diff --git a/bcm68620_release/release/make/Makefile.rules b/bcm68620_release/release/make/Makefile.rules
new file mode 100644
index 0000000..21f4c0c
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.rules
@@ -0,0 +1,495 @@
+# Common Makefile rules
+#
+
+# For linux_lib we don't build anything. Object files are just added
+# when compiling modules depending on the libs
+
+ifeq ("$(MOD_TYPE)", "linux_lib")
+ # Skip libraries that might have crept in dependencies
+ SKIP_LIB_MODULES = y
+ export SKIP_LIB_MODULES
+endif
+
+ifeq ("$(MOD_TYPE)", "linux_module")
+ # Skip libraries that might have crept in dependencies
+ SKIP_LIB_MODULES = y
+ export SKIP_LIB_MODULES
+endif
+
+ifeq ("$(MOD_TYPE)", "lib")
+ MODULE_IS_A_LIBRARY = y
+else ifeq ("$(MOD_TYPE)", "shared_lib")
+ MODULE_IS_A_LIBRARY = y
+else
+ MODULE_IS_A_LIBRARY = n
+endif
+
+# Include module's own auto-generated Makefile.config.$(MODULE) file if any
+# It in turn includes all dependencies
+ifeq (x"$(V)", x"2")
+ $(info !!!MOD_NAME=$(MOD_NAME) MOD_TYPE=$(MOD_TYPE) MOD_TARGET=$(MOD_TARGET))
+ $(info !!!Including own dependency file: $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME))
+endif
+-include $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"2")
+ $(info !!!After include of $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME))
+endif
+
+ifeq (x"$(V)", x"2")
+ $(info !!! Building $(MOD_TYPE) module $(MOD_NAME): depends on $(MOD_DEPS_FILES) SKIP_LIBS=$(SKIP_LIB_MODULES))
+endif
+
+# Skip default rules for custom module
+ifneq ("$(MOD_CUSTOM)", "y")
+
+# Default lib rule
+ifeq ("$(MOD_TYPE)", "lib")
+
+ifeq ("$(SKIP_LIB_MODULES)", "y")
+
+$(MOD_TARGET):
+
+else
+
+# Rule to compile all module's C files in one go
+ifeq ("$(COMPILE_ALL_IN_ONE_GO)", "y")
+
+$(MOD_TARGET): $(SRCS) $(AS_OBJS) $(as_OBJS)
+
+# Create library if there are any objects
+ifneq ("$(SRCS)$(AS_SRCS)$(as_SRCS)$(GEN_SRCS)", "")
+
+ifneq ("$(SRCS)$(GEN_SRCS)", "")
+ifeq (x"$(V)", x"0")
+ @echo "CC $(srcs) $(gen_srcs)"
+endif
+ $(SILENT_BUILD)mkdir -p $(dir $@)
+ $(SILENT_BUILD)cd $(dir $@) && $(BLD_CC) $(CFLAGS) -c $(SRCS) $(GEN_SRCS)
+endif
+ $(SILENT_BUILD)cd $(dir $@) && $(BLD_AR) $(ARFLAGS) $@ $(OBJS)
+ $(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+ @$(BOLD_PRINT) "done: $@"
+# ifneq ("$(SRCS)$(AS_SRCS)$(as_SRCS)$(GEN_SRCS)", "")
+endif
+
+# ifeq ("$(COMPILE_ALL_IN_ONE_GO)", "y")
+else
+
+# Create library if there are any objects
+$(MOD_TARGET): $(OBJS)
+ifneq ("$(OBJS)", "")
+ $(SILENT_BUILD)$(BLD_AR) $(ARFLAGS) $@ $(OBJS)
+ $(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+ @$(BOLD_PRINT) "done: $@"
+endif
+
+# end of ifeq ($(COMPILE_ALL_IN_ONE_GO), "y")
+endif
+
+# end of ifeq ("$(SKIP_LIB_MODULES)", "y")
+endif
+
+# end of ifeq ("$(MOD_TYPE)", "lib")
+endif
+
+# Default shared_lib rule
+ifeq ("$(MOD_TYPE)", "shared_lib")
+
+EXTRA_CFLAGS += -fPIC
+
+# Create library if there are any objects
+$(MOD_TARGET): $(OBJS)
+ifneq ("$(OBJS)", "")
+ $(SILENT_BUILD)$(BLD_CC) -shared -rdynamic -o $@ $(OBJS) $(LFLAGS)
+ $(SILENT_BUILD)mkdir -p $(SHARED_LIB_PATH)/
+ $(SILENT_BUILD)cp $@ $(SHARED_LIB_PATH)/
+ @$(BOLD_PRINT) "done: $@"
+endif
+ $(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+
+# end of ifeq ("$(MOD_TYPE)", "shared_lib")
+endif
+
+# Default app rule
+ifeq ("$(MOD_TYPE)", "app")
+
+# Currently, ThreadX image doesn't support any applications, apart from the
+# image itself. Disable building applications for ThreadX
+ifneq ("$(OS)", "threadx")
+
+$(MOD_TARGET): $(OBJS) $(MOD_DEPS_FILES)
+ $(SILENT_BUILD)$(BLD_CC) -o $@ $(OBJS) $(LFLAGS) $(EXTRA_LIBS_PATH) $(LIBS_START_MARKER) $(EXTRA_LIBS) $(LIBS_END_MARKER) $(LIBS)
+ $(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+ @$(BOLD_PRINT) "done: $(OUT_DIR)/$(MOD_NAME)"
+
+# else of ifneq ("$(OS)", "threadx")
+else
+
+$(MOD_TARGET):
+
+
+# endif of ifneq ("$(OS)", "threadx")
+endif
+
+# endif of ifeq ("$(MOD_TYPE)", "app")
+endif
+
+# For linux_lib we don't build anything. Object files are just added
+# when compiling modules depending on the libs
+ifeq ("$(MOD_TYPE)", "linux_lib")
+ LINUX_LIB_OBJECTS := $(srcs:%.c=$(SRC_DIR)/%.o)
+
+$(MOD_TARGET): $(SRCS) $(GEN_SRCS) $(MOD_DEPS_FILES)
+ $(SILENT_BUILD)touch $(MOD_TARGET)
+ $(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+
+endif
+
+# Default linux_module$(srcs:%=$(SRC_DIR)/%)
+ifeq ("$(MOD_TYPE)", "linux_module")
+ obj-m += $(MOD_NAME).o
+ $(MOD_NAME)-objs := $(srcs:%.c=%.o)
+ LIB_OBJS_REL_PATH = $(foreach oo,$(ALL_LIB_OBJS),$(shell python -c "import os.path; print os.path.relpath('$(oo)', '$(SRC_DIR)')"))
+
+ _KERNEL_MAKEPARMS = -C $(KERNELDIR) M=$(SRC_DIR) KBUILD_EXTRA_SYMBOLS="$(KBUILD_EXTRA_SYMBOLS)" \
+ O=$(KERNEL_OUTDIR) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(CROSS_COMPILE) V=$(V) EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
+ obj-m=$(obj-m) $(MOD_NAME)-objs="$($(MOD_NAME)-objs) $(LIB_OBJS_REL_PATH)"
+ KERNEL_MAKEPARMS = $(_KERNEL_MAKEPARMS:%os_abstraction/posix=%os_abstraction/linux)
+
+ # Prevent parallel build
+.NOTPARALLEL:
+
+ # Only build linux module if not already being built by another make thread.
+ # Otherwise, linux build system get confused
+ # Also, remove -s flag using MAKEFLAGS. Otherwise, linux build system will not print names of the files
+ # being compiled
+$(MOD_TARGET): $(SRCS) $(MOD_DEPS_FILES)
+ifneq ("$(SRC_DIR)", "$(TOP_DIR)/$(MOD_DIR)")
+ @cp -f $(TOP_DIR)/$(MOD_DIR)/Makefile $(SRC_DIR)
+endif
+ $(SILENT_BUILD)if [ ! -f $(SRC_DIR)/.$(MOD_NAME)_in_progress ]; then \
+ touch $(SRC_DIR)/.$(MOD_NAME)_in_progress; \
+ MAKEFLAGS= $(MAKE) $(KERNEL_MAKEPARMS) ;\
+ if [[ "$$?" != "0" ]]; then \
+ rm -f $(SRC_DIR)/.$(MOD_NAME)_in_progress;\
+ exit -2;\
+ fi; \
+ mkdir -p $(OUT_DIR_BASE)/linux_modules ;\
+ touch -c $(MOD_TARGET) ;\
+ cp $(SRC_DIR)/$(MOD_NAME).ko $(OUT_DIR_BASE)/linux_modules/ ;\
+ touch $(OUT_DIR_BASE)/.$(MOD_NAME) ;\
+ $(BOLD_PRINT) "done: $(MOD_TARGET)" ;\
+ rm -f $(SRC_DIR)/.$(MOD_NAME)_in_progress ;\
+ fi
+
+# Take care of compiling generated code for linux kernel
+ifneq ("$(SRC_DIR)", "$(TOP_DIR)/$(MOD_DIR)")
+
+$(SRC_DIR)/%.c : $(CODEGEN_OUTPUT_DIR)/../%.c
+ $(SILENT_BUILD)cp -f $(CODEGEN_OUTPUT_DIR)/../*.[c,h] $(SRC_DIR)/
+
+$(SRC_DIR)/%.h : $(CODEGEN_OUTPUT_DIR)/../%.h
+ $(SILENT_BUILD)cp -f $(CODEGEN_OUTPUT_DIR)/../*.[c,h] $(SRC_DIR)/
+
+endif
+
+# End of MOD_TYPE==linux_module
+endif
+
+else
+# only for MOD_CUSTOM include Module Makefile second time for propagate
+# custom rules, first time included in Makefile.config for all modules
+include $(SRC_DIR)/Makefile
+# End of ifneq ($(MOD_CUSTOM), y)
+endif
+
+$(OUT_DIR)/%.o: $(SRC_DIR)/%.c $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"0")
+ @echo "CC $<"
+endif
+ $(SILENT_BUILD)mkdir -p $(dir $@)
+ $(SILENT_BUILD)$(BLD_CC) $(CFLAGS) -D__BASENAME__=`basename $<` -c -o $@ $<
+ifeq (x"$(USE_LINT)", x"yes")
+ifeq (x"$(V)", x"0")
+ @echo "LINT $<"
+endif
+ $(SILENT_BUILD)FORCE_LINT=$(FORCE_LINT) $(MAKE_DEVICE_DIR)/lint.sh $(LINT_FLAGS) $(filter -I% -D%, $(CFLAGS)) $< || { rm $@; false; }
+endif
+ifeq (x"$(USE_CLANG)", x"y")
+ifeq (x"$(V)", x"0")
+ _fn=`basename "$<" .c` ;\
+ eval "_disable_fn_set=\$${DISABLE_CLANG_$$_fn}"; \
+ if test "$$_disable_fn_set" != "y" ; then echo "CLANG $<"; else echo "CLANG $< ... skipped"; fi
+endif
+ _fn=`basename "$<" .c` ;\
+ eval "_disable_fn_set=\$${DISABLE_CLANG_$$_fn}"; \
+ if test "$$_disable_fn_set" != "y" ; then $(CLANG) $(CLANG_FLAGS) -c $< -o $@.clang && rm -f $@.clang; fi
+# ifeq (x"$(USE_CLANG)", x"y")
+endif
+
+$(OUT_DIR)/%.o: $(SRC_DIR)/%.s $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"0")
+ @echo "AS $<"
+endif
+ $(SILENT_BUILD)mkdir -p $(dir $@)
+ $(SILENT_BUILD)$(BLD_AS) $(asFLAGS) -o $@ $<
+
+$(OUT_DIR)/%.o: $(SRC_DIR)/%.S $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"0")
+ @echo "AS $<"
+endif
+ $(SILENT_BUILD)mkdir -p $(dir $@)
+ $(SILENT_BUILD)$(BLD_CC) $(ASFLAGS) -o $@ $<
+
+
+$(OUT_DIR)/%.d: $(SRC_DIR)/%.c $(SRC_DIR)/Makefile
+ifneq ("$(BUILD_DEPS_IN_CC)", "y")
+ifeq (x"$(V)", x"0")
+ @echo "DP $<"
+endif
+ $(SILENT_BUILD)mkdir -p $(dir $@)
+ $(SILENT_BUILD)$(BLD_DEP) -MM -MT $(@:.d=.o) $(DEP_FLAGS) $< > $@ && sed 's,\($*\.o\)[ :]*,\1 $@ : ,g' -i $@
+endif
+
+$(CODEGEN_OUTPUT_DIR)/%.o: $(CODEGEN_OUTPUT_DIR)/%.c $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+ifeq (x"$(V)", x"0")
+ @echo "CC $<"
+endif
+ $(SILENT_BUILD)mkdir -p $(dir $@)
+ $(SILENT_BUILD)$(BLD_CC) $(CFLAGS) -D__BASENAME__=`basename $<` -c -o $@ $<
+
+$(CODEGEN_OUTPUT_DIR)/%.d: $(CODEGEN_OUTPUT_DIR)/%.c $(SRC_DIR)/Makefile
+ifneq ("$(BUILD_DEPS_IN_CC)", "y")
+ifeq (x"$(V)", x"0")
+ @echo "DP $<"
+endif
+ $(SILENT_BUILD)mkdir -p $(dir $@)
+ $(SILENT_BUILD)$(BLD_DEP) -MM -MT $(@:.d=.o) $(DEP_FLAGS) $< > $@ && sed 's,\($*\.o\)[ :]*,\1 $@ : ,g' -i $@
+endif
+
+ifneq ("$(SKIP_DEPS)", "yes")
+ifneq ("$(MOD_TYPE)", "linux_module")
+ifneq ("$(MOD_TYPE)", "linux_lib")
+-include $(OBJS:.o=.d)
+endif
+endif
+endif
+
+BUILD_UNITEST = $(UNITEST)
+ifeq ("$(OBJS)", "")
+ BUILD_UNITEST = n
+endif
+ifeq ("$(OS)", "threadx")
+ BUILD_UNITEST = n
+endif
+
+# Only build unitest if library objects are included
+ifeq ("$(BUILD_UNITEST)", "y")
+
+unitest: $(OUT_DIR)/unitest
+
+$(OUT_DIR)/unitest: $(OUT_DIR)/unitest.o $(TARGET_LIB_FNAME) $(MOD_DEPS_FILES)
+ $(SILENT_BUILD)$(BLD_CC) -o $@ $(OUT_DIR)/unitest.o $(LFLAGS) $(EXTRA_LIBS_PATH) $(LIBS_START_MARKER) $(EXTRA_LIBS) $(LIBS_END_MARKER) $(LIBS)
+ $(SILENT_BUILD)touch $(OUT_DIR_BASE)/.$(MOD_NAME)
+ @$(BOLD_PRINT) "done: $@"
+
+# else of ifneq ("$(BUILD_UNITEST)", "y")
+else
+
+unitest: $(TARGET_LIB_FNAME) $(MOD_DEPS_FILES)
+
+# endif of ifneq ("$(BUILD_UNITEST)", "y")
+endif
+
+# Generate version header
+MODEL_REVISION_FILE = $(MODEL_OUT_DIR)/bcmolt_model_revision.h
+
+ifneq ("$(RELEASE_BUILD)", "y")
+$(MODEL_REVISION_FILE): $(MODEL_FILE)
+ mkdir -p $(MODEL_OUT_DIR)
+ @$(TOP_DIR)/scripts/update_model_revision.sh $< $@
+
+# Generate sources if necessary
+ifneq ("$(GEN_SRCS)", "")
+ifneq ("$(CUSTOM_CODEGEN)", "y")
+
+$(CODEGEN_OUTPUT_DIR)/.generated: $(MODEL_FILE) $(wildcard $(CODEGEN_DIR)/*) $(wildcard $(CODEGEN_INPUT_DIR)/*) $(MODEL_REVISION_FILE)
+ $(SILENT_BUILD)rm -fr $@
+ @echo "Generating code in $(CODEGEN_OUTPUT_DIR) from model..."
+ @mkdir -p $(CODEGEN_OUTPUT_DIR)
+ $(SILENT_BUILD)$(MONO_PATH) $(CODEGEN_EXE) --genobjmodel -objtags=$(GEN_OBJTAGS) -objset=$(MODEL_FILE) \
+ $(GEN_EXTRA_TYPES) -templatedir=$(CODEGEN_INPUT_DIR) -outdir=$(CODEGEN_OUTPUT_DIR)
+ $(SILENT_BUILD)touch $@
+ @echo "Code generation in $(CODEGEN_OUTPUT_DIR) complete!"
+
+$(GEN_SRCS): $(CODEGEN_OUTPUT_DIR)/.generated
+
+# ifneq ("$(CUSTOM_CODEGEN)", "y")
+endif
+
+# ifneq ("$(GEN_SRCS)", "")
+endif
+
+# ifneq ("$(RELEASE_BUILD)", "y")
+endif
+
+#
+# Dependency rules generation: --> Makefile.config.$(MOD_NAME)
+#
+
+MOD_CONFIG_FILE = $(OUT_DIR_BASE)/Makefile.config.$(MOD_NAME)
+MOD_CONFIG_DEF = $(MOD_NAME)_DEP_DEFINED
+ifneq ("$(MOD_INC_DIRS)", "")
+ # Make sure that each directory is an absolute path
+ MOD_INCS = $(addprefix -I$(TOP_DIR)/, $(subst $(TOP_DIR)/,,$(MOD_INC_DIRS)))
+else
+ MOD_INCS = -I$(SRC_DIR)
+endif
+
+#
+# Generate Makefile.config.$(MODULE) capable of re-creating the module
+#
+moddep: $(GEN_SRCS)
+ifeq (x"$(V)", x"3")
+ @echo "!!!!! moddep for MOD_NAME=$(MOD_NAME) MOD_TYPE=$(MOD_TYPE) MOD_CUSTOM=$(MOD_CUSTOM)!!!"
+endif
+ $(SILENT_BUILD)mkdir -p $(OUT_DIR_BASE)
+ @rm -fr $(MOD_CONFIG_FILE)
+ @rm -fr $(OBJS:.o=.d)
+
+ @echo "ifeq (x\"$$""(V)\", x\"2\")" >> $(MOD_CONFIG_FILE)
+ @echo " $$""(info !!! MODULE=$$""(MOD_NAME) --> $(MOD_CONFIG_FILE): $(MOD_CONFIG_DEF)=$$""($(MOD_CONFIG_DEF)), DEPS=$(MOD_DEPS))" >> $(MOD_CONFIG_FILE)
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+
+ # Prevent double inclusion
+ @echo "ifneq (\"$$""($(MOD_CONFIG_DEF))\", \"y\")" >> $(MOD_CONFIG_FILE)
+ @echo "" >> $(MOD_CONFIG_FILE)
+ @echo "$(MOD_CONFIG_DEF) := y" >> $(MOD_CONFIG_FILE)
+
+ ifeq ("$(MODULE_IS_A_LIBRARY)", "y")
+ @echo "_skip_it := y" >> $(MOD_CONFIG_FILE)
+ else
+ @echo "_skip_it := n" >> $(MOD_CONFIG_FILE)
+ endif
+ @echo "ifneq (\"$$""(SKIP_LIB_MODULES)\", \"y\")" >> $(MOD_CONFIG_FILE)
+ @echo " _skip_it := n" >> $(MOD_CONFIG_FILE)
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+
+ @echo "ifneq (\"$$""(_skip_it)\", \"y\")" >> $(MOD_CONFIG_FILE)
+
+ ifeq ("$(MODULE_IS_A_LIBRARY)", "y")
+ ifneq ("$(OBJS)", "")
+ @echo "EXTRA_LIBS += $(LIBS_MARKER)$(TARGET_LIB)" >> $(MOD_CONFIG_FILE)
+ @echo "EXTRA_LIBS_PATH += $(LIBS_PATH_MARKER)$(OUT_DIR)" >> $(MOD_CONFIG_FILE)
+ endif
+ ifneq ("$(MOD_LIBS)", "")
+ @echo "EXTRA_LIBS += $(MOD_LIBS)" >> $(MOD_CONFIG_FILE)
+ endif
+ @echo "ifneq (x\"$$""(MOD_NAME)\", x\"$(MOD_NAME)\")" >> $(MOD_CONFIG_FILE)
+ @echo " MOD_DEPS_FILES += $(OUT_DIR_BASE)/.$(MOD_NAME)" >> $(MOD_CONFIG_FILE)
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+ ifneq ("$(startup_src)", "")
+ @echo "" >> $(MOD_CONFIG_FILE)
+ @echo "ENTRY_POINT_SRC = $(SRC_DIR)/$(startup_src)" >> $(MOD_CONFIG_FILE)
+ @echo "" >> $(MOD_CONFIG_FILE)
+ endif
+ endif
+
+ ifeq ("$(MOD_TYPE)", "linux_lib")
+ ifneq ("$(OBJS)", "")
+ @echo "ALL_LIB_OBJS += $(LINUX_LIB_OBJECTS)" >> $(MOD_CONFIG_FILE)
+ endif
+ @echo "ifneq (x\"$$""(MOD_NAME)\", x\"$(MOD_NAME)\")" >> $(MOD_CONFIG_FILE)
+ @echo " MOD_DEPS_FILES += $(OUT_DIR_BASE)/.$(MOD_NAME)" >> $(MOD_CONFIG_FILE)
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+ endif
+
+ ifeq ("$(MOD_TYPE)", "linux_module")
+ @echo "ifneq (x\"$$""(MOD_NAME)\", x\"$(MOD_NAME)\")" >> $(MOD_CONFIG_FILE)
+ @echo " KBUILD_EXTRA_SYMBOLS += $(SRC_DIR)/Module.symvers" >> $(MOD_CONFIG_FILE)
+ @echo " MOD_DEPS_FILES += $(OUT_DIR_BASE)/.$(MOD_NAME)" >> $(MOD_CONFIG_FILE)
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+ endif
+
+ # Module creation rules
+ @echo "$(MOD_NAME)_$(SUBSYSTEM): $(OUT_DIR_BASE)/.$(MOD_NAME)" >> $(MOD_CONFIG_FILE)
+ @echo "" >> $(MOD_CONFIG_FILE)
+ @echo "$(OUT_DIR_BASE)/.$(MOD_NAME): .FORCE" >> $(MOD_CONFIG_FILE)
+ ifeq ("$(MOD_CUSTOM)", "y")
+ @echo " $$""(MAKE) MOD_DIR=$(MOD_DIR) -f $(MAKE_DIR)/Makefile.template $(MOD_TARGET)" >> $(MOD_CONFIG_FILE)
+ else
+ ifneq ("$(OBJS)", "")
+ @echo " $$""(MAKE) MOD_DIR=$(MOD_DIR) -f $(MAKE_DIR)/Makefile.template $(MOD_TARGET)" >> $(MOD_CONFIG_FILE)
+ endif
+ ifeq ("$(OBJS)", "")
+ @echo " if [ ! -f $(OUT_DIR_BASE)/.$(MOD_NAME) ]; then touch $(OUT_DIR_BASE)/.$(MOD_NAME); fi" >> $(MOD_CONFIG_FILE)
+ endif
+ endif
+ @echo "" >> $(MOD_CONFIG_FILE)
+ @echo ".FORCE:" >> $(MOD_CONFIG_FILE)
+ @echo "" >> $(MOD_CONFIG_FILE)
+
+ ifneq ("$(MOD_DEFS)", "")
+ @echo "EXTRA_CFLAGS += $(MOD_DEFS)" >> $(MOD_CONFIG_FILE)
+ endif
+
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+
+ # If it is a library and this file is included as someone's dependency - extend MOD_DEP_FULL_NAMES
+ # and generate a rule to rebuilt the library
+ ifneq ("$(MOD_DEPS)", "")
+ @echo "ifeq (x\"$$""(V)\", x\"2\")" >> $(MOD_CONFIG_FILE)
+ @echo " $$""(info !!! Now include dependencies $(MOD_DEPS))" >> $(MOD_CONFIG_FILE)
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+ @echo "$(MOD_NAME)_MOD_DEPS = $(MOD_DEPS)" >> $(MOD_CONFIG_FILE)
+ @echo "ifneq (x\"$$""(SKIP_DEPS)\", x\"yes\")" >> $(MOD_CONFIG_FILE)
+ @echo "include $$""($(MOD_NAME)_MOD_DEPS:%=$(OUT_DIR_BASE)/Makefile.config.%)" >> $(MOD_CONFIG_FILE)
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+ @echo "ifeq (x\"$$""(V)\", x\"2\")" >> $(MOD_CONFIG_FILE)
+ @echo " $$""(info !!! $(MOD_NAME) finished including dependencies)" >> $(MOD_CONFIG_FILE)
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+ endif
+
+ @echo "EXTRA_CFLAGS += $(MOD_INCS)" >> $(MOD_CONFIG_FILE)
+
+ @echo "" >> $(MOD_CONFIG_FILE)
+ @echo "endif" >> $(MOD_CONFIG_FILE)
+#
+# end of moddep: target
+#
+
+clean_module:
+ifeq ("$(MOD_TYPE)", "linux_module")
+ $(SILENT_BUILD)-test -f $(SRC_DIR)/Makefile && $(MAKE) $(KERNEL_MAKEPARMS) clean
+ $(SILENT_BUILD)cd $(SRC_DIR) && rm -fr $($(MOD_NAME)-objs) $($(MOD_NAME)-objs:../%=../.%.cmd)
+ $(SILENT_BUILD)rm -fr $(OUT_DIR_BASE)/linux_modules/$(MOD_NAME).ko
+endif
+ifeq ("$(MOD_TYPE)", "linux_lib")
+ $(SILENT_BUILD)rm -fr $(LINUX_LIB_OBJECTS)
+endif
+ $(SILENT_BUILD)cd $(SRC_DIR) && rm -fr $(patsubst %.c,.%.o.cmd,$(srcs))
+ $(SILENT_BUILD)[ ! -d $(OUT_DIR) ] || find $(OUT_DIR) -name '*.[o,d,a]' -print0 | xargs -0 rm -rf
+ $(SILENT_BUILD)[ ! -d $(OUT_DIR) ] || find $(OUT_DIR) -name '*~' -print0 | xargs -0 rm -rf
+ $(SILENT_BUILD)[ ! -d $(OUT_DIR) ] || find $(OUT_DIR) -name '*.ko' -print0 | xargs -0 rm -rf
+ $(SILENT_BUILD)[ ! -d $(OUT_DIR) ] || find $(OUT_DIR) -name '.*.cmd' -print0 | xargs -0 rm -rf
+ $(SILENT_BUILD)rm -fr $(SRC_DIR)/*.mod.c $(SRC_DIR)/modules.order $(SRC_DIR)/Module.symvers $(SRC_DIR)/.tmp_versions
+ $(SILENT_BUILD)rm -fr $(MOD_TARGET) $(OUT_DIR)/$(TARGET) $(OUT_DIR)/unitest $(TARGET_LIB_FNAME)
+ $(SILENT_BUILD)rm -fr $(ALL_LIB_OBJS)
+ $(SILENT_BUILD)rm -fr $(GEN_SRCS) $(CODEGEN_OUTPUT_DIR)/.generated
+ifneq ("$(MOD_NAME)", "")
+ $(SILENT_BUILD)rm -fr $(OUT_DIR_BASE)/.$(MOD_NAME)
+ $(SILENT_BUILD)rm -fr $(SRC_DIR)/.$(MOD_NAME)_in_progress
+endif
+
+clobber: clean_module
+ $(SILENT_BUILD)rm -fr $(OUT_DIR)
+
+# Optional platform-specific rules
+-include $(MAKE_DEVICE_DIR)/Makefile.$(SUBSYSTEM).rules
+
+# Generate board-specific environment if any
+board_env: $(BOARD_ENV_RULE)
+
+
+module_name:
+ $(info $(MOD_NAME))
diff --git a/bcm68620_release/release/make/Makefile.template b/bcm68620_release/release/make/Makefile.template
new file mode 100644
index 0000000..633e962
--- /dev/null
+++ b/bcm68620_release/release/make/Makefile.template
@@ -0,0 +1,12 @@
+# Central Makefile template
+# Builds specific module
+# Input parameters:
+# MOD_DIR
+# TOP_DIR
+
+ifeq (x"$(V)", x"1")
+ $(info Building module $(MOD_DIR))
+endif
+
+include $(MAKE_DIR)/Makefile.config
+include $(MAKE_DIR)/Makefile.rules
diff --git a/bcm68620_release/release/make/bcm68620/Makefile.host.config b/bcm68620_release/release/make/bcm68620/Makefile.host.config
new file mode 100644
index 0000000..6f42b11
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/Makefile.host.config
@@ -0,0 +1,23 @@
+# Maple host configuration
+#
+# Set environment, extra flags, etc.
+# In particular, set CROSS_COMPILE
+# For linux environment make sure to set also OS_KERNEL=linux, KERNELDIR, KERNEL_OUTDIR and KERNEL_ARCH
+ifneq ("$(BOARD)", "")
+ include $(MAKE_DEVICE_DIR)/board.$(BOARD).config
+endif
+
+include $(MAKE_DEVICE_DIR)/$(TOOLCHAIN).opts
+
+export KERNELDIR
+export KERNEL_OUTDIR
+export KERNEL_ARCH
+export OS_KERNEL
+
+ifeq ("$(USE_ONU_SIM)", "y")
+ CFLAGS += -DCONFIG_ONU_SIM
+ export CONFIG_ONU_SIM := y
+endif
+
+LINT_FLAGS = -e686 $(MAKE_DEVICE_DIR)/gcc.lnt $(MAKE_DEVICE_DIR)/config.lnt
+
diff --git a/bcm68620_release/release/make/bcm68620/Makefile.host.rules b/bcm68620_release/release/make/bcm68620/Makefile.host.rules
new file mode 100644
index 0000000..54c4c44
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/Makefile.host.rules
@@ -0,0 +1,7 @@
+# Maple host rules
+#
+# Platform/board-specific rules
+# In particular, set BOARD_ENV_RULE if there is anything board-specific to be done
+ifneq ("$(BOARD)", "")
+ -include $(MAKE_DEVICE_DIR)/board.$(BOARD).rules
+endif
diff --git a/bcm68620_release/release/make/bcm68620/armcc.lnt b/bcm68620_release/release/make/bcm68620/armcc.lnt
new file mode 100644
index 0000000..99aa766
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/armcc.lnt
@@ -0,0 +1,5 @@
+-i/projects/xpon_co_lint/sources/supp/lnt
+co-ARMCC-5.lnt
+-i/tools/arm/DS-5_5.18.0/Linux-64/include
+-d"__int64=long long"
+
diff --git a/bcm68620_release/release/make/bcm68620/board.remote_wrx.config b/bcm68620_release/release/make/bcm68620/board.remote_wrx.config
new file mode 100644
index 0000000..57cfb32
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/board.remote_wrx.config
@@ -0,0 +1,25 @@
+# Remote WRX board
+#
+export CONFIG_TRANSPORT_RAW = n
+
+ifeq ("$(SUBSYSTEM)", "embedded")
+ $(error Can't build embedded subsystem for this board)
+else
+ ARCH_FLAGS += -EB -mabi=64
+ TOOLCHAIN_PATH ?= /opt/toolchains/maple/toolchains_bin/mipscross/linux/bin
+ CROSS_COMPILE = $(TOOLCHAIN_PATH)/mips64-nlm-linux-
+
+ # a kludge here. If CONFIG_TRANSPORT_RAW is not set, that means that we are building for
+ # wrx, but not the same wrx where Maple is. For example, building for WRX that controls
+ # switch directly and maple remotely. In this case, we don't want any board-specific stuff
+ # to be compiled in (e.g., FPGA, I2C, etc.).
+ override BOARD =
+
+ # OS for user space
+ OS = posix
+
+ SIMULATION_BUILD = y
+
+endif
+
+
diff --git a/bcm68620_release/release/make/bcm68620/board.wrx.config b/bcm68620_release/release/make/bcm68620/board.wrx.config
new file mode 100644
index 0000000..99bdf12
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/board.wrx.config
@@ -0,0 +1,112 @@
+# WRX board
+#
+
+# Use raw transport
+export CONFIG_TRANSPORT_RAW = y
+
+ENABLE_PMC ?= y
+
+ifeq ("$(ENABLE_PMC)", "y")
+ EXTRA_CFLAGS += -DBCM_PMC_EXIST
+endif
+
+ifeq ("$(SUBSYSTEM)", "embedded")
+ TOOLCHAIN = armcc
+ OS=threadx
+
+ # We use gcc for dependency generation in order to speed up the build process
+ GCCVER ?= 4.8.1
+
+ # Use raw transport
+ # Should be moved go common host/embedded section when the host environment is ready
+ COMPILE_ALL_IN_ONE_GO ?= n
+ export COMPILE_ALL_IN_ONE_GO
+
+ # Definition for enable Periodic ARM DS-5 license model, up to 4X improvement for compilation time
+ # the output from the /tools/bin/get_lic_servers arm5-periodic is optimized for each site, the
+ # "38224@lic-tlva-001:38224@lic-blr-001:38224@lic-irva-350:38224@lic-irva-000" string is valide for HZ site
+ export ARMLMD_LICENSE_FILE :=$(shell if [ -f /tools/bin/get_lic_servers ] ; then /tools/bin/get_lic_servers arm5-periodic ; \
+else echo "38224@lic-tlva-001.broadcom.net:38224@lic-blr-001.broadcom.net:38224@lic-irva-350.broadcom.net:38224@lic-irva-000.broadcom.net"; fi)
+ export ARMCC5_CCOPT :=--sitelicense --licretry
+ export ARMCC5_ASMOPT :=--sitelicense --licretry
+ export ARMCC5_LINKOPT :=--sitelicense --licretry
+ export ARMCC5_FROMELFOPT :=--sitelicense --licretry
+ export ARMCC5_AROPT :=--sitelicense --licretry
+
+ USE_UNCACHE_BW_MAP ?= n
+ export USE_UNCACHE_BW_MAP
+ USE_UNCACHE_SR_NSR_COUNTERS ?= n
+ export USE_UNCACHE_SR_NSR_COUNTERS
+
+ ifeq ("$(SIMULATION)", "y")
+ EXTRA_DEFINES += -DSIMULATION
+ endif
+
+ USE_SYM_TAB ?= y
+ export USE_SYM_TAB
+
+ ifeq ("$(USE_SYM_TAB)", "y")
+
+ export SYMTAB_GEN_TOOLS = $(TOP_DIR)/scripts/bcmSymTlbGen.sh
+
+ ifeq ("$(SYMTAB_NO_DATA)", "y")
+ export SYMTAB_ND=-nd
+ endif
+
+ ifeq ("$(SYMTAB_NO_LDATA)", "y")
+ export SYMTAB_NLD=-nld
+ endif
+
+ ifeq ("$(SYMTAB_NO_LFANC)", "y")
+ export SYMTAB_NLF=-nlf
+ endif
+
+ EXTRA_DEFINES += -DUSE_SYM_TAB
+
+ export DUMMY_SYMTAB = $(TOP_DIR)/embedded/sys/bsp/symtab.c
+ endif
+
+ ifeq ("$(ENABLE_TRACE)", "y")
+ EXTRA_DEFINES += -DTX_ENABLE_EVENT_TRACE
+ ifeq ("$(DEBUG_TRACE_INIT)", "y")
+ EXTRA_DEFINES += -DDEBUG_TRACE_INIT
+ endif
+ endif
+
+ INT_CHECK ?= y
+ ifeq ("$(INT_CHECK)", "y")
+ EXTRA_DEFINES += -DINTERRUPT_VALIDATION
+ endif
+else
+ BOARD_DIR ?= $(TOP_DIR)/../boards/cur/$(BOARD)
+ KERNEL_BRCM_VER = 3.0.2-m1.01
+ TOOLCHAIN_PATH ?= /opt/toolchains/maple/toolchains_bin/mipscross/linux/bin
+ CROSS_COMPILE = $(TOOLCHAIN_PATH)/mips64-nlm-linux-
+
+ KERNELDIR = $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/linux
+ KERNEL_OUTDIR ?= $(KERNELDIR)
+ export KERNELDIR
+ export KERNEL_OUTDIR
+
+
+ # use Linux kernel
+ export OS_KERNEL= linux
+ # OS for user space
+ OS = posix
+
+ # Architecture definition
+ KERNEL_ARCH = mips
+ ARCH_FLAGS += -EB -mabi=64
+
+ export KERNEL_ARCH
+ export ARCH_FLAGS
+
+ export KERNEL_TAR_NAME = wrx_linux-sdk.tar.bz2
+ export LIBS_TAR_NAME = libraries.tar.bz2
+
+ # Rule tu build wrx kernel. The rule itself is defined in board.wrx.rules
+ export BOARD_ENV_RULE = wrx_linux_kernel
+
+endif
+
+
diff --git a/bcm68620_release/release/make/bcm68620/board.wrx.rules b/bcm68620_release/release/make/bcm68620/board.wrx.rules
new file mode 100644
index 0000000..3546f5d
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/board.wrx.rules
@@ -0,0 +1,26 @@
+# WRX-specific rules
+
+ifeq ("$(SUBSYSTEM)", "host")
+ # Build linux kernel if not done yet
+
+wrx_linux_kernel:
+ if [ ! -d $(BOARD_DIR) ]; then\
+ $(BOLD_PRINT) "ERROR: $(BOARD_DIR) directory doesn't not exist" ; \
+ exit -1; \
+ fi;\
+ if [ -f $(KERNEL_OUTDIR)/vmlinux ] ; then \
+ $(BOLD_PRINT) "found compiled $(BOARD) kernel in $(KERNEL_OUTDIR)" ;\
+ exit 0;\
+ fi;\
+ if [ ! -f $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/$(KERNEL_TAR_NAME) ]; then\
+ $(BOLD_PRINT) "ERROR: Kernel tar file doesn't exist. Please get the latest version of $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/$(KERNEL_TAR_NAME) ";\
+ exit -1;\
+ fi;\
+ if [ ! -f $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/$(LIBS_TAR_NAME) ]; then \
+ $(BOLD_PRINT) "ERROR: Kernel Libraries tar file not exists. Please get latest version of $(BOARD_DIR)/linux/$(KERNEL_BRCM_VER)/$(LIBS_TAR_NAME) ";\
+ exit -1;\
+ fi;\
+ $(BOLD_PRINT) "Building wrx kernel";\
+ cd $(BOARD_DIR); $(MAKE)
+
+endif
diff --git a/bcm68620_release/release/make/bcm68620/gcc.lnt b/bcm68620_release/release/make/bcm68620/gcc.lnt
new file mode 100644
index 0000000..3a3c198
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/gcc.lnt
@@ -0,0 +1,5 @@
+-i/projects/xpon_co_lint/sources/supp/lnt
+co-gcc.lnt
+-emacro(633, BUG_ON)
+-parent(va_list, __gnuc_va_list)
+-parent(va_list, __builtin_va_list)
diff --git a/bcm68620_release/release/make/bcm68620/gcc.opts b/bcm68620_release/release/make/bcm68620/gcc.opts
new file mode 100644
index 0000000..718b403
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/gcc.opts
@@ -0,0 +1,53 @@
+# Maple SDK requires C99
+EXTRA_CFLAGS += -Wall -Werror
+ARFLAGS = r
+
+BLD_CC = $(CCACHE) $(CROSS_COMPILE)gcc
+BLD_AS = $(CCACHE) $(CROSS_COMPILE)gcc
+BLD_AR = $(CROSS_COMPILE)ar
+BLD_DEP = $(BLD_CC)
+
+CFLAGS += -std=c99
+ifeq ("$(ENABLE_EXTRA_WARNINGS)", "y")
+ CFLAGS += -Wextra -Wbad-function-cast -Wcast-align -Wcast-qual -Wchar-subscripts
+ CFLAGS += -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wredundant-decls
+ CFLAGS += -Wstrict-prototypes -Wparentheses -Wswitch -Wswitch-default -Wunused -Wuninitialized -Wunused-but-set-variable
+ CFLAGS += -Wno-unused-parameter -Wno-missing-field-initializers -Wno-sign-compare
+ CFLAGS += -Wshadow -Wno-inline
+endif
+
+BUILD_DEPS_IN_CC ?= y
+export BUILD_DEPS_IN_CC
+
+ifeq ("$(BUILD_DEPS_IN_CC)", "y")
+ CFLAGS += -MMD -MP
+endif
+
+ifeq ("$(CROSS_COMPILE)", "")
+ ARCH_FLAGS += -m32 -march=i386
+ SIMULATION_BUILD ?= y
+ export SIMULATION_BUILD
+ GCCVER ?= 4.8.1
+ export GCCVER
+ # Temporary, until bad cast in bcm_dev_log_task.c is fixed (SWMAPLE-2123)
+ CFLAGS += -Wno-strict-aliasing
+endif
+
+ifeq ("$(EXPORT_DYNAMIC_SYMBOLS)", "y")
+ ARCH_FLAGS += -Wl,-export-dynamic
+endif
+
+ifneq ("$(SIMULATION_BUILD)", "y")
+ EXTRA_CFLAGS += -Wframe-larger-than=16384
+endif
+
+LIBS_MARKER =-l
+LIBS_PATH_MARKER =-L
+LIBS_START_MARKER = -Wl,--start-group
+LIBS_END_MARKER = -Wl,--end-group
+
+# Debug and release optimization options. Can be overwritten in Makefile.config.$(PLATFORM)
+DEBUG_O_CFLAGS ?= -g -ggdb -O0
+DEBUG_O_LFLAGS ?= -g
+RELEASE_O_CFLAGS ?= -g -O2
+RELEASE_O_LFLAGS ?= -g
diff --git a/bcm68620_release/release/make/bcm68620/modules.host b/bcm68620_release/release/make/bcm68620/modules.host
new file mode 100644
index 0000000..a7a0f59
--- /dev/null
+++ b/bcm68620_release/release/make/bcm68620/modules.host
@@ -0,0 +1,67 @@
+host_customized/dev_ctrl_linux
+host_customized/coop_dba_linux
+host_customized/embedded_cli
+host_customized/embedded_cli/main
+host_customized/os_abstraction
+host_customized/os_abstraction/linux
+host_customized/os_abstraction/os_cli
+host_customized/transport/nl_socket
+host_customized/transport/unix_socket
+host_customized/transport/plugin
+host_customized/transport/plugin/mux
+host_customized/transport/plugin/raw_nl
+host_customized/transport/plugin/raw_ud
+host_customized/transport/plugin/udp
+host_customized/user_config
+host_customized/user_config/board_selector
+host_customized/ll_pcie
+host_customized/pcie
+host_customized/i2c
+host_customized/board/wrx
+host_customized/model_linux
+host_customized/utils_linux
+host_customized/api_linux
+host_customized/host_api_linux
+host_driver/api
+host_driver/utils
+host_driver/debug
+host_driver/dev_ctrl
+host_driver/coop_dba
+host_driver/dev_ctrl_daemon
+host_driver/dev_ctrl_daemon/user
+host_driver/host_api
+host_driver/keep_alive
+host_driver/keep_alive/daemon
+host_driver/model
+host_driver/pcie
+host_driver/transport/inband
+host_driver/transport
+host_driver/transport/mux
+host_driver/transport/mux/daemon
+host_driver/transport/pcie_sw_queue
+host_driver/fld
+host_driver/common_gpon
+host_reference/api_cli
+host_reference/device_selector
+host_reference/cli
+host_reference/dev_log
+host_reference/dev_log_linux
+host_reference/dev_log_linux/kernel
+host_reference/api_dev_log
+host_reference/linenoise
+host_reference/user_appl
+host_reference/user_appl/eon
+host_reference/user_appl/omon
+host_reference/user_appl/epon_hde
+host_reference/user_appl/protection_switching
+host_reference/user_appl/epon_oam
+host_reference/user_appl/epon_oam_cli
+host_reference/user_appl/image_transfer
+host_reference/user_appl/sw_upgrade
+host_reference/user_appl/playback
+host_reference/user_appl/dpoe_sec
+host_reference/user_appl/ngpon2_onu_tuning
+host_reference/api_proxy
+host_reference/remote_cli
+host_reference/common_epon_oam
+host_reference/time_measurement
diff --git a/bcm68620_release/release/make/clang.opts b/bcm68620_release/release/make/clang.opts
new file mode 100644
index 0000000..1b383ef
--- /dev/null
+++ b/bcm68620_release/release/make/clang.opts
@@ -0,0 +1,6 @@
+# CLANG options
+
+# CLANG tool
+export CLANG ?= clang
+export CLANG_OPTS = -Wno-unused-function
+export LLVMVER ?= 3.6
diff --git a/bcm68620_release/release/make/copy_host_fs.sh b/bcm68620_release/release/make/copy_host_fs.sh
new file mode 100755
index 0000000..7cffbf3
--- /dev/null
+++ b/bcm68620_release/release/make/copy_host_fs.sh
@@ -0,0 +1,31 @@
+#! /bin/bash
+
+#set -x
+
+HOST_FS_TARGET=${OUT_HOST_DIR}/fs
+HOST_OUTPUT_TARGET=${OUT_HOST_DIR}/output
+
+echo -n "Copying host fs to ${HOST_FS_TARGET}..."
+mkdir -p ${HOST_FS_TARGET}
+rm -fr ${HOST_FS_TARGET}/*
+pushd ${HOST_FS_TARGET}
+ln -s ${OUT_HOST_DIR}/linux_modules/* .
+ln -s ${TOP_DIR}/host_customized/board/wrx/fs/* .
+ln -s ${TOP_DIR}/embedded_binaries/* .
+ln -s ${OUT_HOST_DIR}/host_reference/user_appl/bcm_user_appl .
+popd
+
+echo -n "Copying all modules and libraries to ${HOST_OUTPUT_TARGET}..."
+mkdir -p ${HOST_OUTPUT_TARGET}
+rm -fr ${HOST_OUTPUT_TARGET}/*
+pushd ${HOST_OUTPUT_TARGET}
+ln -s ${OUT_HOST_DIR}/linux_modules/* .
+ln -s `find ${OUT_HOST_DIR} -name 'lib*.a'` .
+ln -s ${OUT_HOST_DIR}/host_reference/user_appl/bcm_user_appl .
+popd
+
+# Extract i2c addresses from bcmolt_i2c_devs_addr.h into the tail of a target file called i2c_addrs.sh. svk_init.sh will include i2c_addrs.sh to access i2c addresses.
+grep -w "BCM_I2C_DEV_ADDR" ${TOP_DIR}/host_customized/i2c/bcmolt_i2c_devs_addr.h | sed -s "s/BCM_I2C_DEV_ADDR(\(.*\), \(.*\), 0x\(.*\))/\1=\3/" >> ${HOST_FS_TARGET}/i2c_addrs.sh
+
+echo "Done"
+