[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/make/common/Custom.bld b/mcu/make/common/Custom.bld
new file mode 100644
index 0000000..a293b0e
--- /dev/null
+++ b/mcu/make/common/Custom.bld
@@ -0,0 +1,35 @@
+#  Copyright Statement:

+#  --------------------

+#  This software is protected by Copyright and the information contained

+#  herein is confidential. The software may not be copied and the information

+#  contained herein may not be used or disclosed except with the written

+#  permission of MediaTek Inc. (C) 2005

+#

+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES

+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")

+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON

+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,

+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF

+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.

+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE

+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR

+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH

+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO

+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S

+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.

+#

+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE

+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,

+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,

+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO

+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.

+#

+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE

+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF

+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND

+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER

+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).

+#

+#

+# Please don't edit the line, even space etc.

+CUSTOM_RELEASE =  FALSE
\ No newline at end of file
diff --git a/mcu/make/common/build.mak b/mcu/make/common/build.mak
new file mode 100644
index 0000000..adc3bc0
--- /dev/null
+++ b/mcu/make/common/build.mak
@@ -0,0 +1,2778 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+#
+# *************************************************************************
+# build.mak  - MOLY build script
+#
+#  USAGE:
+#     ./tools/make -f[make file] [build_flag] <CUSTOMER> <PROJECT> <ACTION>
+#
+#     Example:
+#     ./tools/make -fmake/common/build.mak -r -R CUSTOMER=mtk PROJECT=gprs new
+#
+#  IMPORTANT NOTES:
+#
+# *************************************************************************
+
+# *************************************************************************
+# Set SUFFIXES
+# *************************************************************************
+.SUFFIXES:
+.SUFFIXES: .lis
+
+# *************************************************************************
+# Set PHONY
+# *************************************************************************
+.PHONY : new cleanall emigen cmmgen asngen nvram_auto_gen codegen asnregen update genlog cleanbin genverno gencustominfo cksysdrv cksysdrv_slim cksysdrv_clean scan remake libs code_generate cleancodegen cleanmod done startbuildlibs gen_infolog drv_feature_check ckmake ckmemlayout ckmemlayout2 removecode genremoveinfo clean_codegen slim_codegen slim_mcddll slim_update ss_lcs_gen backup elfpatch cp_dsp_files FORCE nvram_edit_h_gen gen_gfh_cfg umts_gen asngen asngen_l4 asnregen copycmm copro_info_gen copro_injection gen_setup_env mcf_gen
+# *************************************************************************
+# Set DELETE_ON_ERROR
+# *************************************************************************
+.DELETE_ON_ERROR:
+# *************************************************************************
+# MediaTek is the default CUSTOMER.
+# *************************************************************************
+
+# *************************************************************************
+# Common macro definitions
+# *************************************************************************
+#$(call Upper,$(1)) ...... reference $(1) in upper-case letters
+Upper = $(subst z,Z,$(subst y,Y,$(subst x,X,$(subst w,W,$(subst v,V,$(subst u,U,$(subst t,T,$(subst s,S,$(subst r,R,$(subst q,Q,$(subst p,P,$(subst o,O,$(subst n,N,$(subst m,M,$(subst l,L,$(subst k,K,$(subst j,J,$(subst i,I,$(subst h,H,$(subst g,G,$(subst f,F,$(subst e,E,$(subst d,D,$(subst c,C,$(subst b,B,$(subst a,A,$(1)))))))))))))))))))))))))))
+Lower = $(subst Z,z,$(subst Y,y,$(subst X,x,$(subst W,w,$(subst V,v,$(subst U,u,$(subst T,t,$(subst S,s,$(subst R,r,$(subst Q,q,$(subst P,p,$(subst O,o,$(subst N,n,$(subst M,m,$(subst L,l,$(subst K,k,$(subst J,j,$(subst I,i,$(subst H,h,$(subst G,g,$(subst F,f,$(subst E,e,$(subst D,d,$(subst C,c,$(subst B,b,$(subst A,a,$(1)))))))))))))))))))))))))))
+# -----------------------------
+#  Include scripts
+# -----------------------------
+include make/common/option.mak            # Build option definitons
+-include make/common/internal_action.mak
+-include make/common/standalone_action.mak
+ifeq ($(strip $(OS_VERSION)),MSWin32)
+-include tools/NVRAMStatistic/nvram_edit_gen.mak
+endif
+
+ifneq ($(wildcard ./mtk_tools/CCACHE_SUPPORT.txt),)
+ifdef CCACHE_DIR
+-include make/common/ccache.mak
+endif
+endif
+
+ifdef DETERMINISTIC
+  ifeq ($(strip $(DETERMINISTIC)),TRUE)
+    DISABLE_PWD_PATH := TRUE
+  endif
+endif
+
+ifdef DISABLE_PWD_PATH
+  ifeq ($(strip $(DISABLE_PWD_PATH)),TRUE)
+    CFLAGS     += -fdebug-prefix-map=$(PWD)=.
+    CPLUSFLAGS += -fdebug-prefix-map=$(PWD)=.
+  endif
+endif
+
+ifeq ($(strip $(COMPILER)),GCC)
+  ifneq ($(strip $(COMPOBJS)),)
+    LINK_OBJ_LIST =$(call sort,$(foreach lib,$(COMPOBJS),-l$(patsubst lib%,%,$(basename $(notdir $(lib))))))
+  endif
+  ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+    LIBDIR_TEMP := $(CUS_MTK_LIB)
+    ifneq ($(strip $(CUS_REL_SRC_COMP) $(CUS_REL_MTK_COMP)),)
+      LINK_LIB_LIST = $(call sort,$(foreach lib,$(COMPLIST) $(CUS_REL_MTK_COMP),-l$(lib)))
+    endif
+    LINK_SEARCH_PATH += -L "$(COMPLIBDIR)" -L "$(CUS_MTK_LIB)"
+    LINK_SEARCH_PATH += $(foreach compobjs,$(COMPOBJS) $(BL_COMPOBJS),-L "$(dir $(compobjs))")
+  else
+    LIBDIR_TEMP := $(COMPLIBDIR)
+    ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+      LINK_LIB_LIST = $(call sort,$(foreach lib,$(COMPLIST),-l$(lib)))
+    else
+      LINK_LIB_LIST = $(call sort,$(foreach lib,$(COMPLIST) $(CUS_REL_MTK_COMP),-l$(lib)))
+    endif
+    LINK_SEARCH_PATH += -L "$(COMPLIBDIR)"
+    LINK_SEARCH_PATH += $(foreach compobjs,$(COMPOBJS) $(BL_COMPOBJS),-L "$(dir $(compobjs))")
+    LINK_SEARCH_PATH += -L "$(CUS_MTK_LIB)"
+  endif  
+  ifneq ($(filter __CHECK_SYMBOL_MULTIPLE_DEFINITION__,$(strip $(COM_DEFS))),)    
+    LINK_FILTER_LIB := $(NO_WHOLE_ARCHIVE_LIB)
+    LINK_FILTER_LIB_LIST := $(call sort,$(foreach lib,$(LINK_FILTER_LIB),-l$(lib)))
+    LINK_LIB_LIST    := $(filter-out -l $(LINK_FILTER_LIB_LIST), $(LINK_LIB_LIST))
+    LINK_OBJ_LIST    := $(filter-out -l $(LINK_FILTER_LIB_LIST), $(LINK_OBJ_LIST))
+    WHOLE_ARCHIVE    := $(strip $(LINK_OPTION_PREFIX))--whole-archive
+    NO_WHOLE_ARCHIVE := $(strip $(LINK_OPTION_PREFIX))--no-whole-archive
+  endif
+  LINK_SYS_LIB_LIST += -lnosys -lm -lc -lgcc
+  ifeq ($(strip $(MAIF_SUPPORT)),TRUE)
+    LINK_SYS_LIB_LIST += -lsupc++
+  endif
+  LNKOPT += $(strip $(LINK_OPTION_PREFIX))--start-group $(strip $(LINK_SYS_LIB_LIST)) $(WHOLE_ARCHIVE) $(sort $(strip $(LINK_OBJ_LIST) $(LINK_LIB_LIST))) $(NO_WHOLE_ARCHIVE) $(LINK_FILTER_LIB_LIST) $(strip $(LINK_OPTION_PREFIX))--end-group
+  LNKOPT := $(subst \,/,$(LNKOPT))  
+  ADEFTrans = $(strip -defsym $(1)=$(strip $(2)))
+else
+  ADEFTrans = -pd "$(1) SETL {$(strip $(2))}"
+endif
+
+-include $(strip $(TMPDIR))/~cleanmod.tmp      # Define clean modules
+ifndef DO_CLEAN_MODULE
+  # Default clean all
+  DO_CLEAN_MODULE =  FALSE
+  CLEAN_MODS      =
+else
+  ifneq ($(filter L1,$(call Upper,$(CLEAN_MODS))),)
+    NEED_CLEAN_CGENLST = TRUE
+  else
+    NEED_CLEAN_CGENLST = FALSE
+  endif
+  ifneq ($(filter GL1,$(call Upper,$(CLEAN_MODS))),)
+    CLEAN_MODS := $(CLEAN_MODS) l1_ext
+  endif
+  ifneq ($(filter EPHY,$(call Upper,$(CLEAN_MODS))),)
+    CLEAN_MODS := $(CLEAN_MODS) ephy_ext
+  endif
+  ifneq ($(filter EL1,$(call Upper,$(CLEAN_MODS))),)
+    CLEAN_MODS := $(CLEAN_MODS) el1d_ext
+  endif
+  ifneq ($(filter CL1,$(call Upper,$(CLEAN_MODS))),)
+    CLEAN_MODS := $(CLEAN_MODS) rfd
+  endif
+  ifneq ($(filter MML1_RF,$(call Upper,$(CLEAN_MODS))),)
+    CLEAN_MODS := $(CLEAN_MODS) mml1_rf_ext_pcore
+  endif
+  ifneq ($(filter NL1,$(call Upper,$(CLEAN_MODS))),)
+    CLEAN_MODS := $(CLEAN_MODS) nl1_ext
+  endif
+endif
+
+-include $(strip $(TMPDIR))/~updatemod.tmp     # Define update modules
+ifndef DO_UPDATE_MODULE
+  # Default update all
+  DO_UPDATE_MODULE = FALSE
+  UPDATE_MODS      =
+endif
+
+-include $(strip $(TMPDIR))/~remakemod.tmp     # Define remake modules
+ifndef DO_REMAKE_MODULE
+  # Default remake all
+  DO_REMAKE_MODULE = FALSE
+  REMAKE_MODS      =
+endif
+
+-include $(strip $(TMPDIR))/~scanmod.tmp     # Define scan modules
+ifndef DO_SCAN_MODULE
+   # Default scan all
+  DO_SCAN_MODULE  =  FALSE
+  SCAN_MODS       =
+endif
+
+# default mbis tempfile
+ifndef MBIS_BUILD_TIME_TMP
+  MBIS_BUILD_TIME_TMP = tmp
+endif
+ifndef MBIS_BUILD_INFO_LOG
+  MBIS_BUILD_INFO_LOG = tmp
+endif
+
+ifndef DUMMY_LIS
+  DUMMY_LIS = FALSE
+endif
+
+CHK_LTE_COMP = FALSE
+
+FULL_PRJ_NAME = $(strip $(PROJECT_NAME))($(strip $(FLAVOR)))
+
+####################################################################
+# End of alias build settings.
+####################################################################
+
+include make/common/xgeninc.mak
+
+COM_DEFS_TARGET     := $(COM_DEFS)
+COMMINCDIRS_TARGET  := $(COMMINCDIRS)
+RULESDIR_TARGET     := $(RULESDIR)
+XGEN_INC_DIR_ORI    := $(XGEN_INC_DIR)
+XGEN_INC_DIR_TARGET ?= $(XGEN_INC_DIR)
+
+#################
+# MoDIS setting #
+#################
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  include make/common/modisconfig.mak
+endif
+
+# *************************************************************************
+#  Remove Repeated Common Include Path
+# *************************************************************************
+XGEN_INC_DIR += $(COMMINCDIRS)
+XGEN_INC_DIR_TARGET += $(COMMINCDIRS_TARGET)
+ifneq ($(call uc,$(strip $(ACTION))),CRIP)
+  COMMINCDIRS         := $(call uniq,$(COMMINCDIRS))
+  XGEN_INC_DIR        := $(call uniq,$(XGEN_INC_DIR))
+  COMMINCDIRS_TARGET  := $(call uniq,$(COMMINCDIRS_TARGET))
+  XGEN_INC_DIR_TARGET := $(call uniq,$(XGEN_INC_DIR_TARGET))
+endif
+
+# *************************************************************************
+#  Target Definitions
+# *************************************************************************
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+  MTK_LIBS =  $(foreach COMP,$(CUS_REL_MTK_COMP),$(CUS_MTK_LIB)/lib$(COMP).a)
+else
+  MTK_LIBS =
+endif
+
+ifeq ($(strip $(DO_UPDATE_MODULE)),TRUE)
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(filter gl1,$(UPDATE_MODS)),)
+    UPDATE_MODS := $(UPDATE_MODS) l1_ext
+  endif
+  ifneq ($(filter ephy,$(UPDATE_MODS)),)
+    UPDATE_MODS := $(UPDATE_MODS) ephy_ext
+  endif
+  ifneq ($(filter el1d el1,$(UPDATE_MODS)),)
+    UPDATE_MODS := $(UPDATE_MODS) el1d_ext
+  endif
+  ifneq ($(filter mml1_rf,$(UPDATE_MODS)),)
+    UPDATE_MODS := $(UPDATE_MODS) mml1_rf_ext_pcore
+  endif
+  ifneq ($(filter nl1,$(UPDATE_MODS)),)
+    UPDATE_MODS := $(UPDATE_MODS) nl1_ext
+  endif
+  ifeq ($(filter cxif_check,$(UPDATE_MODS)),)
+    ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+      UPDATE_MODS := $(UPDATE_MODS) cxif_check
+    endif
+  endif
+  ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+   ifeq ($(filter dbinfo,$(UPDATE_MODS)),)
+    ifneq ($(TEST_LOAD_TYPE),BASIC)
+      UPDATE_MODS := $(UPDATE_MODS) dbinfo
+    endif
+   endif
+  endif
+  ifeq ($(filter verno,$(UPDATE_MODS)),)
+    UPDATE_MODS := $(UPDATE_MODS) verno
+  endif
+  endif
+  COMPLIBLIST = $(call sort,$(foreach comp,$(UPDATE_MODS),$(comp).a))
+else
+  ifeq ($(strip $(DO_REMAKE_MODULE)),TRUE)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    ifneq ($(filter gl1,$(REMAKE_MODS)),)
+      REMAKE_MODS := $(REMAKE_MODS) l1_ext
+    endif
+    ifneq ($(filter ephy,$(REMAKE_MODS)),)
+      REMAKE_MODS := $(REMAKE_MODS) ephy_ext
+    endif
+    ifneq ($(filter el1d el1,$(REMAKE_MODS)),)
+      REMAKE_MODS := $(REMAKE_MODS) el1d_ext
+    endif 
+    ifneq ($(filter mml1_rf,$(REMAKE_MODS)),)
+      REMAKE_MODS := $(REMAKE_MODS) mml1_rf_ext_pcore
+    endif 
+    ifneq ($(filter nl1,$(REMAKE_MODS)),)
+      REMAKE_MODS := $(REMAKE_MODS) nl1_ext
+    endif 
+    ifeq ($(filter cxif_check,$(REMAKE_MODS)),)
+      ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+        REMAKE_MODS := $(REMAKE_MODS) cxif_check
+      endif
+    endif
+    ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+     ifeq ($(filter dbinfo,$(REMAKE_MODS)),)
+      ifneq ($(TEST_LOAD_TYPE),BASIC)
+        REMAKE_MODS := $(REMAKE_MODS) dbinfo
+      endif
+     endif
+    endif
+    ifeq ($(filter verno,$(REMAKE_MODS)),)
+      REMAKE_MODS := $(REMAKE_MODS) verno
+    endif
+    endif
+    COMPLIBLIST = $(call sort,$(foreach comp,$(REMAKE_MODS),$(comp).a))
+  else
+    COMPLIBLIST = $(call sort,$(foreach comp,$(COMPLIST),$(comp).a))
+  endif
+endif
+
+ifeq ($(strip $(DO_UPDATE_MODULE)),TRUE)
+  COMPSCANLIST = $(UPDATE_MODS)
+else
+  ifeq ($(strip $(DO_SCAN_MODULE)),TRUE)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    ifneq ($(filter gl1,$(SCAN_MODS)),)
+      SCAN_MODS := $(SCAN_MODS) l1_ext
+    endif
+    ifneq ($(filter ephy,$(SCAN_MODS)),)
+      SCAN_MODS := $(SCAN_MODS) ephy_ext
+    endif
+    ifneq ($(filter el1d el1,$(SCAN_MODS)),)
+      SCAN_MODS := $(SCAN_MODS) el1d_ext
+    endif
+    ifneq ($(filter mml1_rf,$(SCAN_MODS)),)
+      SCAN_MODS := $(SCAN_MODS) mml1_rf_ext_pcore
+    endif  
+    ifneq ($(filter nl1,$(SCAN_MODS)),)
+      SCAN_MODS := $(SCAN_MODS) nl1_ext
+    endif
+    endif
+    COMPSCANLIST = $(SCAN_MODS)
+  else
+   COMPSCANLIST = $(COMPLIST)
+  endif
+endif
+
+CHK_COMPLIST = $(filter-out $(foreach comp,$(COMPLIST),$(comp).a),$(call lc,$(COMPLIBLIST)))
+ifneq ($(words $(CHK_COMPLIST)),0)
+  ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+    $(error $(foreach comp,$(CHK_COMPLIST),"$(comp)") NOT in CUS_REL_SRC_COMP or NOT in CUS_REL_PAR_SRC_COMP)
+  else
+    $(error $(foreach comp,$(CHK_COMPLIST),"$(comp)") NOT in COMPLIST)
+  endif
+endif
+
+ALL_MODULELIS := $(foreach comp,$(sort $(call uniq,$(COMPLIST) $(CUS_REL_MTK_COMP))),$(comp).lis)
+ALL_MODULEDEF := $(foreach mod,$(sort $(call uniq,$(COMPLIST) $(CUS_REL_MTK_COMP))),$(strip $(MODULEINFODIR))/$(mod)/$(mod).def)
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  MODULELIS := $(foreach comp,$(sort $(COMPLIST)),$(comp).lis)
+else
+  ifndef MODULELIS
+    MODULELIS := $(foreach comp,$(call lc,$(COMPLIBLIST)),$(subst .a,.lis,$(comp)))
+  endif
+endif
+
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+    ALL_MODULELIS := $(MODULELIS)
+    ALL_MODULEDEF := $(foreach mod,$(sort $(call uniq,$(COMPLIST))),$(strip $(MODULEINFODIR))/$(mod)/$(mod).def)
+endif
+
+CHK_SCANLIST = $(filter-out $(foreach comp,$(COMPLIST),$(comp)),$(COMPSCANLIST))
+ifneq ($(words $(CHK_SCANLIST)),0)
+  $(error $(CHK_SCANLIST) NOT in COMPLIST)
+endif
+
+COMP_DEP_LIST = $(foreach comp,$(sort $(COMPSCANLIST)),$(comp).dep)
+
+# *************************************************************************
+# Search Paths
+# *************************************************************************
+vpath
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+vpath %.dep $(subst \,/,$(strip $(RULESDIR)))
+vpath %.a $(strip $(COMPLIBDIR))
+vpath %.bin $(strip $(TARGDIR))
+endif
+
+# *************************************************************************
+#  Debug
+# *************************************************************************
+ifndef CUSTOM_DEBUG_MODULES
+  CUSTOM_DEBUG_MODULES :=
+else
+  ifneq ($(filter ALL,$(call Upper,$(CUSTOM_DEBUG_MODULES))),)
+    CUSTOM_DEBUG_MODULES := $(call Upper,$(COMPLIST))
+  else
+    ifneq ($(strip $(CUSTOM_DEBUG_MODULES)),NONE)
+      CUSTOM_DEBUG_MODULES := $(filter-out NONE,$(call Upper,$(CUSTOM_DEBUG_MODULES)))
+    endif
+  endif
+endif
+
+ifndef CUSTOM_NON_DEBUG_MODULES
+  CUSTOM_NON_DEBUG_MODULES :=
+else
+  ifneq ($(filter ALL,$(call Upper,$(CUSTOM_NON_DEBUG_MODULES))),)
+    CUSTOM_NON_DEBUG_MODULES := $(call Upper,$(COMPLIST))
+  else
+    ifneq ($(strip $(CUSTOM_NON_DEBUG_MODULES)),NONE)
+      CUSTOM_NON_DEBUG_MODULES := $(filter-out NONE,$(call Upper,$(CUSTOM_NON_DEBUG_MODULES)))
+    endif
+  endif
+endif
+
+#************************************************************************
+# Dependency check
+#************************************************************************
+# default AUTO_CHECK_DEPEND value depends on the build action, if it is not passed by make command from make.pl
+ifndef SMART_CHECK
+  SMART_CHECK := FALSE
+endif
+
+ifeq ($(SMART_CHECK), TRUE)
+  AUTO_CHECK_DEPEND := TRUE
+endif
+
+ifndef AUTO_CHECK_DEPEND
+  AUTO_CHECK_DEPEND := FALSE
+endif
+ifneq ($(filter $(MAKECMDGOALS),remake cgen),)
+  AUTO_CHECK_CGEN := TRUE
+else
+  AUTO_CHECK_CGEN := $(AUTO_CHECK_DEPEND)
+endif
+
+# NEED_CHECK_DEPEND_LIST: the . files that affect all actions
+RULE_DEF_FOLDER = $(wildcard make/common/rule_def/*.mak)
+NEED_CHECK_DEPEND_LIST := $(PROJECT_MAKEFILE)
+NEED_CHECK_DEPEND_LIST += make/common/build.mak
+NEED_CHECK_DEPEND_LIST += make/common/buildconfig.mak 
+NEED_CHECK_DEPEND_LIST += make/common/option.mak
+NEED_CHECK_DEPEND_LIST += make/common/codegen.mak
+NEED_CHECK_DEPEND_LIST += $(strip $(RULE_DEF_FOLDER))
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  NEED_CHECK_DEPEND_LIST += make/common/modisconfig.mak
+  NEED_CHECK_MODIS_LIST  := make/common/modisbuild.mak
+endif
+
+# AUTO_CHECK_DEBUG = TRUE will not delete temp file for gen dep
+AUTO_CHECK_DEBUG := FALSE
+
+define ckMemLayoutProcess
+ckMemLayout_$(1).det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,ckMemLayout_$(1).det,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$$(IF_EXIST) $$(FIXPATH)/tools/ckMemLayout.pl $$(THEN)\
+		$$(IF_EXIST) $$(strip $(TARGDIR))/$(2) $$(THEN)\
+			$$(IF_EXIST) $$(strip $(TARGDIR))/$(3) $$(THEN)\
+				(perl $$(FIXPATH)/tools/ckMemLayout.pl 2 TRUE $(4) "$$(strip $(TARGDIR))/$(2)" $$(TMPDIR)/~flash_cfg_tmp.c "$$(strip $$(PROJECT_MAKEFILE))" $$(strip $$(BUILD_SYSDIR)) $$(strip $$(INSIDE_MTK)) $(strip $(INFOMAKELOG)) > $$(strip $$(COMPLOGDIR))/ckmemlayout2_$(1).log  2>&1)$$(WITH) \
+				($$(IF_ERR_TRUE) $$(THEN) (echo Error: Failed in ckMemLayout.pl. Please check $$(strip $$(COMPLOGDIR))/ckmemlayout2_$(1).log $$(WITH) exit 1) $$(CMD_END))\
+			$$(CMD_END)\
+		$$(CMD_END)\
+	$$(CMD_END)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,ckMemLayout_$(1).det,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endef
+ifeq ($(strip $(COMPILER)),GCC)
+$(eval $(call ckMemLayoutProcess,target,$(MAP_FILE),$(SYM_FILE),$(SCATTERFILE)))
+else
+$(eval $(call ckMemLayoutProcess,target,$(LIS_FILE),$(SYM_FILE),$(SCATTERFILE)))
+endif
+#*************************************************************************
+# PCIBT check
+#*************************************************************************
+ifneq ($(strip $(NO_PCIBT)),TRUE)
+  -include make/common/comp_pcibt.mak
+endif
+
+# *************************************************************************
+# New Build
+# *************************************************************************
+ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+  ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+# [TATAKA Migrate] multi-mode skip sysgen asngen asnregen
+# multi-mode
+    ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+new : backup cleanall genlog sysgen cleancodegen cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen nras_gen asngen umts_gen codegen asnregen
+    else
+new : backup cleanall genlog sysgen cleancodegen cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen asngen umts_gen codegen asnregen
+    endif
+  else
+# HSPA, TDD128HSPA
+new : backup cleanall genlog sysgen cleancodegen cp_mddata mspm_gen icd_ac_gen mipc_gen asngen umts_gen codegen asnregen
+  endif
+else
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+# GSM, GPRS
+new : backup cleanall genlog sysgen cleancodegen cp_mddata mspm_gen icd_ac_gen mipc_gen asngen codegen asnregen
+  else
+# single-mode
+# [TATAKA Migrate] single-mode skip sysgen asngen asnregen
+new : backup cleanall genlog sysgen cleancodegen cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen asngen codegen
+  endif
+endif
+
+else #mpd swrd
+
+ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+  ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+# multi-mode
+new : backup cleanall genlog sysgen cleancodegen cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen codegen
+  else
+# HSPA, TDD128HSPA
+new : backup cleanall genlog sysgen cleancodegen cp_mddata mspm_gen icd_ac_gen mipc_gen codegen
+  endif
+else
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+# GSM, GPRS
+new : backup cleanall genlog sysgen cleancodegen cp_mddata mspm_gen icd_ac_gen mipc_gen codegen
+  else
+new : backup cleanall genlog sysgen cleancodegen cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen codegen
+  endif
+endif
+
+endif
+
+# *************************************************************************
+#  concatenate new and update
+# *************************************************************************
+new : update
+
+# *************************************************************************
+#  Update Build
+# *************************************************************************
+ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+  ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+    ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+# HSPA, TDD128HSPA, multi-mode
+      ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen nras_gen umts_gen codegen
+      else
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen umts_gen codegen
+      endif
+    else
+      ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+# GSM, GPRS
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen codegen
+      else
+# single-mode
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen codegen
+      endif
+    endif
+  else
+# CUSTOM_RELEASE = FALSE
+    ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+# HSPA, TDD128HSPA, multi-mode
+      ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen nras_gen umts_gen codegen
+      else
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen umts_gen codegen
+      endif
+    else
+      ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+# GSM, GPRS
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen codegen
+      else
+# single-mode
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen codegen
+      endif
+    endif
+  endif
+
+else # new swrd
+
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+# HSPA, TDD128HSPA, multi-mode
+    ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen nras_gen nvram_edit_h_gen nvram_auto_gen genmoduleinfo
+    else
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen
+    endif
+  else
+    ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+# GSM, GPRS
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen 
+    else
+# single-mode
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen 
+    endif
+  endif
+else
+# CUSTOM_RELEASE = FALSE
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+# HSPA, TDD128HSPA, multi-mode
+    ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen nras_gen genmoduleinfo
+    else
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen
+    endif
+  else
+    ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+# GSM, GPRS
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen 
+    else
+# single-mode
+update : backup genlog sysgen cleanbin cp_mddata mspm_gen icd_ac_gen mipc_gen eas_gen
+    endif
+  endif
+endif
+
+endif
+
+
+# *************************************************************************
+#  concatenate mcddll
+# *************************************************************************
+ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+ifneq ($(strip $(ACTION)),slim_update)
+# [TATAKA Migrate] only NON single-mode need to build mcddll_update
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+update : mcddll_update
+  endif
+endif
+endif
+
+# *************************************************************************
+#  copy L1 headers for xl1r
+# *************************************************************************
+ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+ifeq ($(strip $(FPGA_L1_ROUTER_SUPPORT)),TRUE)
+update : xl1r_gen
+endif
+endif
+
+# *************************************************************************
+#  concatenate errc_gen
+# *************************************************************************
+ifeq ($(strip $(MPD_SOURCE_4G_BUILD)),TRUE)
+update : errc_gen
+endif
+
+# *************************************************************************
+#   Gen caband tbl
+# *************************************************************************
+update : caband_gen
+
+# *************************************************************************
+#  concatenate update and remake
+# *************************************************************************
+update : cksysdrv_slim remake
+
+# *************************************************************************
+#  Remake Build
+# *************************************************************************
+ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+remake : rcdb_gen
+endif
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  remake : backup genlog cleanbin genverno sysgen  libs $(BIN_FILE) end
+else
+  remake : genlog cleanbin genverno sysgen
+endif
+
+include make/common/codegen.mak
+
+# *************************************************************************
+#  update dsp Build flow
+# *************************************************************************
+update_dsp: sysgen dsp_process genverno update_cgen_dsp libs $(BIN_FILE) end
+
+
+# *************************************************************************
+# Target: cp_mddata
+# copy custom/service/cacerts/ to build/$proj/$flavor/cacerts/
+# *************************************************************************
+cp_mddata: FORCE
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $(strip $(PROJDIR))/mddata/ $(THEN) ($(DEL_DIR) $(strip $(PROJDIR))/mddata/) $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/mddata/cacerts/ $(THEN) ($(MKDIR) $(strip $(PROJDIR))/mddata/cacerts/) $(CMD_END)
+	@$(COPY_DIR) ./custom/service/cacerts/ $(strip $(PROJDIR))/mddata/cacerts
+	@$(COPY_DIR) ./custom/service/apncfg/ $(strip $(PROJDIR))/mddata/apncfg
+	@$(COPY_DIR) ./custom/service/plmn/ $(strip $(PROJDIR))/mddata/plmn
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: LINK_BIN_FILE
+#  Executable Targets
+# *************************************************************************
+ifeq ($(strip $(COMPILER)),GCC)
+LINK_BIN_FILE: AUTOADJUST_SCATTERFILE GCC_LINK_BIN_FILE
+endif
+
+# *************************************************************************
+# TARGET: AUTOADJUST_SCATTERFILE(Only exists under GCC)
+# *************************************************************************
+AUTOADJUST_SCATTERFILE :
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) ./tools/AutoAdjustInputSection.pl $(THEN) \
+		perl ./tools/AutoAdjustInputSection.pl "$(CROSS)" "$(strip $(PROJECT_MAKEFILE))" $(strip $(INFOMAKELOG)) $(SCATTERFILE) > $(strip $(COMPLOGDIR))/AutoAdjustInputSection.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in AutoAdjustInputSection.pl. Please check $(strip $(COMPLOGDIR))/AutoAdjustInputSection.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+	@$(IF_EXIST) ./tools/AutoAdjustL2CacheLockSection.pl $(THEN) \
+		perl ./tools/AutoAdjustL2CacheLockSection.pl "$(CROSS)" $(SCATTERFILE) $(strip $(TMPDIR))/ > $(strip $(COMPLOGDIR))/AutoAdjustL2CacheLockSection.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in AutoAdjustL2CacheLockSection.pl. Please check $(strip $(COMPLOGDIR))/AutoAdjustL2CacheLockSection.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: GCC_LINK_BIN_FILE
+#  Executable Targets
+# *************************************************************************
+GCC_LINK_BIN_FILE: $(strip $(TMPDIR))/~customIncDef.tmp
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) ./tools/NVRAMStatistic/src/ckSySDrv_flash_cfg_preproc.c $(THEN)\
+		$(CC) $(VIA)$(strip $(TMPDIR))/~customIncDef.tmp -E ./tools/NVRAMStatistic/src/ckSySDrv_flash_cfg_preproc.c > $(strip $(TMPDIR))/~flash_cfg_tmp.c \
+	$(CMD_END)
+
+	@$(ECHO) -n Linking $(strip $(NEWTARGNAME)) ...
+	@$(CHK_TIME)
+
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/ckImgSize.log $(THEN) ($(DEL_FILE) $(strip $(COMPLOGDIR))/ckImgSize.log) $(CMD_END)
+
+  ifeq ($(strip $(SSS_SUPPORT)),SSS_SOURCE)
+		@$(COPY_FILE) $(strip $(COMPLIBDIR))/libsss.a $(SSS_SOURCE_COPY_DST)
+  endif
+	@$(ECHO) -n "$(LNKOPT)" > $(strip $(TMPDIR))/~libs.tmp
+	@$(IF_EXIST) $(strip $(TMPDIR))/~libs.tmp $(THEN) ($(COPY_FILE) $(strip $(TMPDIR))/~libs.tmp $(strip $(COMPLOGDIR))/link_option.log) $(CMD_END)
+
+	@perl ./tools/link.pl $(strip $(LINK)) $(strip $(SCATTERFILE)) $(TARGDIR)/link.log $(strip $(TMPDIR))/~libs.tmp "$(strip $(PROJECT_MAKEFILE))" $(strip $(TARGDIR))/$(MAP_FILE) > $(strip $(COMPLOGDIR))/link_info.log $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			(echo Error: link failed. Please check $(TARGDIR)/link.log) $(WITH) \
+			($(COPY_FILE) $(TARGDIR)/link.log $(strip $(TMPDIR))/aapmc_link.log) $(WITH) \
+			($(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(IMG_FILE)) $(CMD_END))\
+		$(CMD_END))
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN)\
+		$(strip $(DUMP)) -x $(strip $(TARGDIR))/$(IMG_FILE) > $(strip $(TARGDIR))/$(SYM_FILE) 2>&1 \
+	$(CMD_END)
+ # mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: FROMELF_BIN_FILE:
+#  Executable Targets
+# *************************************************************************
+FROMELF_BIN_FILE:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_NOT_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) \
+			(echo $(strip $(TARGDIR))/$(IMG_FILE) is not existed!Please check $(TARGDIR)/link.log. $(WITH) exit 1) \
+		$(CMD_END)
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) \
+		(perl ./tools/iv_copy_process.pl $(strip $(TARGDIR))/$(IMG_FILE) $(strip $(TARGDIR))/$(SYM_FILE) > $(strip $(COMPLOGDIR))/iv_copy_process.log) 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in iv_copy_process.pl. Please check $(strip $(COMPLOGDIR))/iv_copy_process.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+
+ifneq ($(strip $(TCM_ONLY_LOAD)),TRUE)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) \
+		(perl ./tools/AutoGen/postBuild/update_mpu_table.pl $(strip $(TARGDIR))/$(IMG_FILE) $(strip $(TARGDIR))/$(SYM_FILE)  $(strip $(SCATTERFILE)) "$(strip $(PROJECT_MAKEFILE))" > $(strip $(COMPLOGDIR))/update_mpu_table.log) 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in update_mpu_table.pl. Please check $(strip $(COMPLOGDIR))/update_mpu_table.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+endif
+
+ifeq ($(strip $(AMMS_DRDI_SUPPORT)),TRUE)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) \
+		(perl ./tools/AutoGen/postBuild/update_drdi_table.pl $(strip $(TARGDIR))/$(IMG_FILE) $(strip $(TARGDIR))/$(SYM_FILE) > $(strip $(COMPLOGDIR))/update_drdi_table.log) 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in update_drdi_table.pl. Please check $(strip $(COMPLOGDIR))/update_drdi_table.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+endif
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) \
+		(python ./tools/memdumptablegen.py "$(strip $(TMPDIR))/memdump_profile.bin" "$(CROSS)" "./service/mdmp/mdmp_profile.c" "$(strip $(TARGDIR))/$(IMG_FILE)" "$(strip $(TMPDIR))/~inc_def.tmp" > $(strip $(COMPLOGDIR))/memdumptablegen.log) 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in memdumptablegen.py. Please check $(strip $(COMPLOGDIR))/memdumptablegen.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) \
+		(perl ./tools/AutoGen/postBuild/update_dump_table.pl $(strip $(TARGDIR))/$(IMG_FILE) $(strip $(TARGDIR))/$(SYM_FILE) $(strip $(TMPDIR))/memdump_profile.bin "$(strip $(PROJECT_MAKEFILE))" > $(strip $(COMPLOGDIR))/update_dump_table.log) 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in update_dump_table.pl. Please check $(strip $(COMPLOGDIR))/update_dump_table.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+
+# -----------------------------
+# Create gdb-index elf file for speepup dubugger
+# -----------------------------
+ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+	@$(ECHO) -n Creating gdb index file $(GDB_FILE)
+	@$(ECHO) -n "$(strip $(GDB_CREATE)) -ex file $(strip $(TARGDIR))/$(IMG_FILE) -ex save gdb-index $(strip $(TMPDIR)) -ex quit" > $(strip $(COMPLOGDIR))/gdb_index.log
+	@$(strip $(GDB_CREATE)) -ex "file $(strip $(TARGDIR))/$(IMG_FILE)" -ex "save gdb-index $(strip $(TMPDIR))" -ex "quit" >> $(strip $(COMPLOGDIR))/gdb_index.log 2>&1 $(WITH) \
+	($(IF_ERR_TRUE) $(THEN) (echo Error: Failed to create gdb index temporarily file. Please check $(strip $(COMPLOGDIR))/gdb_index.log $(WITH) exit 1) $(CMD_END))
+
+	@$(ECHO) -n "$(strip $(BIN_CREATE)) --add-section .gdb_index=$(strip $(TMPDIR))/$(strip $(GDB_TMP_FILE)) --set-section-flags .gdb_index=readonly $(strip $(TARGDIR))/$(IMG_FILE) $(strip $(TARGDIR))/$(strip $(GDB_FILE))" >> $(strip $(COMPLOGDIR))/gdb_index.log
+	@$(strip $(BIN_CREATE)) --add-section .gdb_index=$(strip $(TMPDIR))/$(strip $(GDB_TMP_FILE)) --set-section-flags .gdb_index=readonly $(strip $(TARGDIR))/$(IMG_FILE) $(strip $(TARGDIR))/$(strip $(GDB_FILE)) >> $(strip $(COMPLOGDIR))/gdb_index.log 2>&1 $(WITH) \
+	($(IF_ERR_TRUE) $(THEN) (echo Error: Failed to create gdb index file: $(strip $(GDB_FILE)). Please check $(strip $(COMPLOGDIR))/gdb_index.log $(WITH) exit 1) $(CMD_END))
+
+	@$(MOVE) $(strip $(TARGDIR))/$(strip $(IMG_FILE)) $(strip $(TMPDIR))/$(IMG_FILE)_ori
+	@$(MOVE) $(strip $(TARGDIR))/$(strip $(GDB_FILE)) $(strip $(TARGDIR))/$(IMG_FILE)
+endif
+
+# -----------------------------
+# The size of the binary image depends on the available memory on the target
+# platform.
+# -----------------------------
+	@$(ECHO) -n Creating binary file $(BIN_FILE)
+ifeq ($(strip $(COMPILER)),GCC)
+	@perl ./tools/gen_bin_from_elf.pl $(strip $(BIN_CREATE)) $(strip $(SCATTERFILE)) $(strip $(TARGDIR))/$(IMG_FILE) $(strip $(TARGDIR))/$(BIN_FILE) > $(strip $(COMPLOGDIR))/gen_bin_from_elf.log 2>&1 $(WITH) \
+	($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in gen_bin_from_elf.pl. Please check $(strip $(COMPLOGDIR))/gen_bin_from_elf.log $(WITH) exit 1) $(CMD_END))
+endif
+
+ifneq ($(filter $(strip $(SV5_PLATFORM)),$(PLATFORM)),)
+	@$(LIST_DIR) "$(strip $(TARGDIR))/$(strip $(BIN_FILE))/*_GFH" 1>$(DEV_NUL) 2>&1 $(WITH) \
+	$(IF_ERR_FALSE) $(THEN) \
+		perl ./tools/get_gfh_files.pl $(strip $(TARGDIR))/$(strip $(BIN_FILE)) GFH > $(strip $(COMPLOGDIR))/get_gfh_files.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in get_gfh_files.pl. Please check $(strip $(COMPLOGDIR))/get_gfh_files.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+endif
+
+ifneq ($(filter __VI_ENABLED__,$(strip $(COM_DEFS))),)
+	@perl .\tools\vivaProcess.pl $(strip $(TARGDIR))\$(strip $(BIN_FILE)) $(strip $(PROJECT_MAKEFILE)) >$(strip $(TARGDIR))\log\vivaProcess.log & \
+		(if ERRORLEVEL 1 (echo Error in vivaProcess.pl. Please check $(strip $(TARGDIR))\log\vivaProcess.log & exit 1))
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(BIN_FILE) and LINK
+# *************************************************************************
+$(BIN_FILE): LINK POSTBUILD
+
+LINK: LINK_BIN_FILE  FROMELF_BIN_FILE
+
+# *************************************************************************
+# TARGET: POSTBUILD
+# *************************************************************************
+ifeq ($(strip $(COMPILER)),GCC)
+POSTBUILD:
+endif
+POSTBUILD:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory $(CMD_ARGU) GCC_POSTBUILD
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: GEN_META_DATABASE
+# *************************************************************************
+gen_meta_db:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+ifneq ($(TEST_LOAD_TYPE),BASIC)
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory gen_sfini
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+	@$(IF_EXIST) $(CODEGEN_DATABASE_OUT) $(THEN) ($(CGEN) $(strip $(GEN_DB_OPTION)) -sf $(CODEGEN_DATABASE_OUT) $(MODISBUILD_TST_DB)/sf.ini) $(CMD_END)
+else
+	@$(IF_EXIST) $(CODEGEN_DATABASE_OUT) $(THEN) ($(CGEN) $(strip $(GEN_DB_OPTION)) -sfcm $(CODEGEN_DATABASE_OUT) $(MODISBUILD_TST_DB)/sf.ini) $(CMD_END)
+endif
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: GCC_POSTBUILD
+# *************************************************************************
+ifeq ($(NO_DSP),FALSE)
+GCC_POSTBUILD: ckMemLayout_target.det dsp_process copy_mcddll gen_meta_db
+else
+GCC_POSTBUILD: ckMemLayout_target.det copy_mcddll gen_meta_db
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+#=== SBC
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) \
+		(perl ./tools/gfh_cfg_flash.pl $(strip $(FLASHFILE)) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(call Upper,$(strip $(PROJECT_NAME))_$(strip $(SUB_BOARD_VER))_$(strip $(PLATFORM))_$(strip $(CHIP_VER))).$(strip $(PURE_VERNO)).bin $(VERNO) "$(strip $(PROJECT_MAKEFILE))" "$(strip $(BUILD_DATE_TIME))" $(strip $(TMPDIR)) > $(strip $(COMPLOGDIR))/gfh_cfg_flash.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: gfh_cfg_flash.pl Failed!! Please check $(strip $(COMPLOGDIR))/gfh_cfg_flash.log) $(CMD_END))) \
+	$(CMD_END)
+
+	@$(MAKE) -f$(strip ${MAKE_COMMON})/build.mak -r -R gen_gfh_cfg
+	@$(IF_EXIST) $(strip $(TMPDIR))/~gfh_cfg_flash.tmp $(THEN) ($(CAT) $(strip $(TMPDIR))/~gfh_cfg_flash.tmp >> $(strip $(TMPDIR))/~gfh_cfg.tmp) $(CMD_END)
+
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/backup $(THEN) ($(DEL_DIR) $(strip $(TARGDIR))/backup) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) \
+		(perl ./tools/gfh_process.pl $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(strip $(TMPDIR))/~gfh_cfg.tmp "$(strip $(PROJECT_MAKEFILE))" $(strip $(TARGDIR))/$(SYM_FILE) $(strip $(COMPLOGDIR))/gfh_process.log) > $(strip $(COMPLOGDIR))/gfh_process.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in gfh_process.pl. Please check $(strip $(COMPLOGDIR))/gfh_process.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+
+ifeq ($(strip $(AMMS_DRDI_SUPPORT)),TRUE)
+	@perl ./tools/strip_drdi_bin.pl $(strip $(TARGDIR))/$(IMG_FILE) $(strip $(TARGDIR))/$(BIN_FILE) $(strip $(TARGDIR))/$(DRDI_BIN_FILE) $(DUMP)> $(strip $(COMPLOGDIR))/strip_drdi_bin.log 2>&1 $(WITH) \
+	($(IF_ERR_TRUE) $(THEN) (echo Error: Failed in strip_drdi_bin.pl Please check $(strip $(COMPLOGDIR))/strip_drdi_bin.log $(WITH) exit 1) $(CMD_END))
+endif
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) \
+		(perl ./tools/append2.pl $(strip $(FLASHFILE)) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(call Upper,$(strip $(PROJECT_NAME))_$(strip $(SUB_BOARD_VER))_$(strip $(PLATFORM))_$(strip $(CHIP_VER))).$(strip $(PURE_VERNO)).bin $(VERNO) "$(strip $(PROJECT_MAKEFILE))" "$(strip $(BUILD_DATE_TIME))" $(strip $(TMPDIR)) $(strip $(SCATTERFILE)) $(SYM_FILE) $(L1CORE_SYM_FILE) $(strip $(INFOMAKELOG)) $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE))> $(strip $(COMPLOGDIR))/append2.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: append2.pl Failed!! Please check $(strip $(COMPLOGDIR))/append2.log) $(CMD_END))) \
+	$(CMD_END)
+#=== SBC
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE))/ROM $(THEN) \
+		($(COPY_FILE) $(SCATTERFILE_FLASHTOOL) $(strip $(TARGDIR))/$(strip $(BIN_FILE))/$(strip $(SCATTERFILE_FLASHTOOL_NAME))) \
+	$(ELSE) \
+		($(COPY_FILE) $(SCATTERFILE_FLASHTOOL) $(strip $(TARGDIR))/$(strip $(SCATTERFILE_FLASHTOOL_NAME))) \
+	$(CMD_END)
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/"$(subst ~,,$(strip $(notdir $(PROJECT_MAKEFILE))))" $(THEN) $(DEL_FILE) $(strip $(TARGDIR))/"$(subst ~,,$(strip $(notdir $(PROJECT_MAKEFILE))))" $(CMD_END)
+	@$(IF_EXIST) "make/$(subst ~,,$(notdir $(strip $(PROJECT_MAKEFILE))))" $(THEN) ($(COPY_FILE) "make/$(subst ~,,$(notdir $(strip $(PROJECT_MAKEFILE))))" $(strip $(TARGDIR)) > $(DEV_NUL)) $(CMD_END)
+
+# mkimage
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) \
+		(echo "[MCU MK IMAGE] Generate mk image - Begin" $(AND) \
+		$(MOVE) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(strip $(TARGDIR))/$(strip $(BIN_FILE))_ori $(AND) \
+		$(MCU_MK_IMAGE_TOOL) $(strip $(TARGDIR))/$(strip $(BIN_FILE))_ori $(MCU_MK_IMAGE_CFG) > $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(AND) \
+		echo "[MCU MK IMAGE] Generate mk image - End")\
+	$(CMD_END)
+ifeq ($(strip $(AMMS_DRDI_SUPPORT)),TRUE)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE)) $(THEN) \
+		(echo "[MCU MK IMAGE] Generate mk image - Begin" $(AND) \
+		$(MOVE) $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE)) $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE))_ori $(AND) \
+		$(MCU_MK_IMAGE_TOOL) $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE))_ori $(MCU_DRDI_MK_IMAGE_CFG) > $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE)) $(AND) \
+		echo "[MCU MK IMAGE] Generate mk image - End") \
+	$(CMD_END)
+endif
+
+ifneq ($(filter _SIMULATION __PALLADIUM__,$(strip $(COM_DEFS))),)
+  ifeq ($(filter REL_CR_%,$(strip $(RELEASE_PACKAGE))),)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE))_ori $(THEN) \
+		$(IF_EXIST) $(strip $(TARGDIR))/sim $(THEN) ($(DEL_DIR) $(strip $(TARGDIR))/sim) $(CMD_END) $(AND) \
+		$(IF_NOT_EXIST) $(strip $(TARGDIR))/sim $(THEN) ($(MKDIR) $(strip $(TARGDIR))/sim) $(CMD_END) $(AND) \
+		$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE))_ori $(THEN) ($(MOVE) $(strip $(TARGDIR))/$(strip $(BIN_FILE))_ori $(strip $(TARGDIR))/sim/MD_IMAGE) $(CMD_END) \
+	$(CMD_END)
+  endif
+endif
+# mkimage end
+
+ifeq ($(strip $(AMMS_DRDI_SUPPORT)),TRUE)
+# merge main.bin and drdi.bin
+	@$(MOVE) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(strip $(TARGDIR))/$(strip $(BIN_FILE))_ori
+	@$(MOVE) $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE)) $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE))_ori
+	@$(CAT) $(strip $(TARGDIR))/$(strip $(BIN_FILE))_ori $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE))_ori > $(strip $(TARGDIR))/$(strip $(BIN_FILE))
+endif
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE))_ori $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(strip $(BIN_FILE))_ori) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE))_ori $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(strip $(DRDI_BIN_FILE))_ori) $(CMD_END)
+
+
+# To support DBG Info Gen.
+	@$(IF_NOT_EXIST) $(strip $(BUILD_TST_DB)) $(THEN) ($(MKDIR) $(strip $(BUILD_TST_DB))) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TMPDIR))/~DbgInfoGen.cfg $(THEN) ($(DEL_FILE) $(strip $(TMPDIR))/~DbgInfoGen.cfg) $(CMD_END)
+	@perl ./tools/echoLongString4.pl $(strip $(TMPDIR))/~DbgInfoGen.cfg ELF=$(strip $(TARGDIR))/$(IMG_FILE) HW=$(strip $(PLATFORM))_$(strip $(CHIP_VER)) SW=$(strip $(VERNO))
+	@perl ./tools/lnitem.pl $(strip $(TMPDIR))/~DbgInfoGen.cfg
+	@$(ECHO) -n PRJ=$(strip $(BRANCH)) >> $(strip $(TMPDIR))/~DbgInfoGen.cfg
+	@$(ECHO) -n TIME=$(strip $(BUILD_DATE_TIME)) >> $(strip $(TMPDIR))/~DbgInfoGen.cfg
+	@$(ECHO) -n DBNAME=MCU_PCORE >> $(strip $(TMPDIR))/~DbgInfoGen.cfg
+	@$(ECHO) -n DB=$(strip $(BUILD_TST_DB))/DbgInfo_$(strip $(SLIM_BRANCH))_$(strip $(PROJECT_NAME))_$(strip $(DBG_INFO_VERNO))_$(strip $(DBG_BUILD_DATE_TIME)) >> $(strip $(TMPDIR))/~DbgInfoGen.cfg
+	@perl ./tools/echoLongString4.pl $(strip $(TMPDIR))/~DbgInfoGen.cfg LNKOPT="$(strip $(LNKOPT))"
+	@$(ECHO) -n DWARFADDR=TRUE >> $(strip $(TMPDIR))/~DbgInfoGen.cfg
+
+	@$(LIST_DIR) "$(strip $(TARGDIR))/DbgInfo_$(strip $(SLIM_BRANCH))*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(TARGDIR))/DbgInfo_$(strip $(SLIM_BRANCH))* $(CMD_END)
+	@$(LIST_DIR) "$(strip $(BUILD_TST_DB))/DbgInfo_*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(BUILD_TST_DB))/DbgInfo_* $(CMD_END)
+	@$(LIST_DIR) "$(strip $(BUILD_TST_DB))/_DbgInfo_*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(BUILD_TST_DB))/_DbgInfo_* $(CMD_END)
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(IMG_FILE)) $(THEN) \
+		(echo Generating DbgInfo Database... $(WITH) \
+		$(DBG_INFOGEN) -CFG-"$(strip $(TMPDIR))/~DbgInfoGen.cfg" 2>$(strip $(COMPLOGDIR))/DbgInfoGen.log $(WITH)  \
+		($(IF_ERR_TRUE) $(THEN) (echo DbgInfoGen Error. Please check $(strip $(COMPLOGDIR))/DbgInfoGen.log $(WITH) exit 1) $(CMD_END)))\
+		$(CMD_END)
+
+	@$(IF_EXIST) $(strip $(BUILD_TST_DB))/DbgInfo_$(strip $(SLIM_BRANCH))_$(strip $(PROJECT_NAME))_$(strip $(DBG_INFO_VERNO))_$(strip $(DBG_BUILD_DATE_TIME)) $(THEN) \
+		($(COPY_FILE) $(strip $(BUILD_TST_DB))/DbgInfo_$(strip $(SLIM_BRANCH))_$(strip $(PROJECT_NAME))_$(strip $(DBG_INFO_VERNO))_$(strip $(DBG_BUILD_DATE_TIME))* $(strip $(TARGDIR))) \
+		$(CMD_END)
+
+	@$(IF_EXIST) $(strip $(BUILD_SYSDIR))/$(strip $(BOARD_VER)).cfg $(THEN) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) \
+			($(COPY_FILE) $(strip $(BUILD_SYSDIR))/$(strip $(BOARD_VER)).cfg $(strip $(TARGDIR))/$(strip $(BOARD_VER)).cfg) \
+		$(CMD_END))\
+	$(CMD_END)
+	
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: genverno
+# Generate VersionNo
+# *************************************************************************
+ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+genverno: gen_cxif_checksum
+endif
+genverno:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN)\
+		($(ECHO) "$@ START TIME=" >>$(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME)>>$(strip $(TARGDIR))/build.log) $(CMD_END)
+
+	@$(IF_NOT_EXIST) $(VERNODIR) $(THEN) ($(MKDIR) $(VERNODIR)) $(CMD_END)
+	@$(IF_EXIST) $(strip $(VERNODIR))/verno.c $(THEN) ($(DEL_FILE) $(strip $(VERNODIR))/verno.c) $(CMD_END)
+
+	@perl ./tools/genverno.pl "$(strip $(VERNODIR))" "$(strip $(VERNO))" "$(strip $(BUILD_DATE_TIME))" "$(strip $(BRANCH))" "$(strip $(HAL_VERNO))" "$(strip $(HW_VER))" "$(strip $(BUILD))" "$(strip $(FLAVOR))" "$(strip $(PLATFORM))" "$(strip $(DSP_PROJECT))" "$(strip $(DSP_FLAVOR))" "$(strip $(PROJECT_NAME))" "$(call lc,$(strip $(MTK_MODEM_ARCH)))"
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN)\
+		($(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME) >> $(strip $(TARGDIR))/build.log) $(CMD_END)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: gen_cxif_checksum
+# Generate cxifchksum.c
+# *************************************************************************
+gen_cxif_checksum:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN)\
+		($(ECHO) "$@ START TIME=" >>$(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME)>>$(strip $(TARGDIR))/build.log) $(CMD_END)
+
+	@$(IF_NOT_EXIST) $(PROJ_INTERNAL_DIR)/auto_cxif $(THEN) ($(MKDIR) $(PROJ_INTERNAL_DIR)/auto_cxif) $(CMD_END)
+	@$(IF_EXIST) $(PROJ_INTERNAL_DIR)/auto_cxif/cxifchksum.c $(THEN) ($(DEL_FILE) $(PROJ_INTERNAL_DIR)/auto_cxif/cxifchksum.c) $(CMD_END)
+
+	@perl ./tools/gencxifchksum.pl "$(strip $(PROJECT_NAME))" "$(strip $(FLAVOR))" "$(call lc,$(strip $(MTK_MODEM_ARCH)))" "$(PROJ_INTERNAL_DIR)/auto_cxif"
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN)\
+		($(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log $(AND) \
+		 $(CHK_TIME) >> $(strip $(TARGDIR))/build.log) $(CMD_END)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: drv_feature_check
+# Check DRV Feature Files
+# *************************************************************************
+drv_feature_check: gencustominfo gen_infolog $(PREGEN_DEP)/drv_feature_check.det
+
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./drv_feature_check.det)
+else
+$(PREGEN_DEP)/drv_feature_check.det: FORCE
+endif
+$(PREGEN_DEP)/drv_feature_check.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN)\
+		($(ECHO) "$@ START TIME=" >>$(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME)>>$(strip $(TARGDIR))/build.log) \
+	$(CMD_END)
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/drv_check.log $(THEN) ($(DEL_FILE) $(strip $(COMPLOGDIR))/drv_check.log) $(CMD_END)
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/drv_features_option.log $(THEN) ($(DEL_FILE) $(strip $(COMPLOGDIR))/drv_features_option.log) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TARGDIR))/MMI_DRV_DEFS.mak $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/MMI_DRV_DEFS.mak) $(CMD_END)
+
+ifeq ($(MODIS_COMPILER),CLANG)
+	@perl ./tools/drv_feature_check.pl $(subst \,/,$(strip $(PROJDIR))) $(subst \,/,$(strip $(PROJECT_NAME))) $(firstword $(strip $(CC_MODIS))) $(subst \,/,$(strip $(VIA))) interface/driver/drv_def/drv_features.h $(subst \,/,$(strip $(TARGDIR))/drv_features_option.h) FALSE 0 $(subst \,/,$(strip $(TARGDIR))\MMI_DRV_DEFS.mak) DRV $(MODIS_COMPILER) 2>>$(strip $(TARGDIR))/log/drv_check.log
+else
+	@perl ./tools/drv_feature_check.pl $(subst \,/,$(strip $(PROJDIR))) $(subst \,/,$(strip $(PROJECT_NAME))) $(firstword $(strip $(CC))) $(subst \,/,$(strip $(VIA))) interface/driver/drv_def/drv_features.h $(subst \,/,$(strip $(TARGDIR))/drv_features_option.h) FALSE 0 $(subst \,/,$(strip $(TARGDIR))\MMI_DRV_DEFS.mak) DRV $(MODIS_COMPILER) 2>>$(strip $(TARGDIR))/log/drv_check.log
+endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN) \
+		($(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME) >> $(strip $(TARGDIR))/build.log) \
+	$(CMD_END)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Set the CKSYSDRV_DEP
+# *************************************************************************
+CKSYSDRV_DEP := tools/NVRAMStatistic/src/ckSySDrv_flash_cfg_preproc.c $(strip $(BUILD_SYSDIR))/custom_MemoryDevice.h ./custom/driver/common/flash_opt.h
+
+# *************************************************************************
+# TARGET: $(PREGEN_DEP)/ckSysDrv.det :
+# Check if system drive space is enough or not
+# *************************************************************************
+$(PREGEN_DEP)/ckSysDrv.det: $(strip $(CKSYSDRV_DEP))
+
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./ckSysDrv.det)
+else
+$(PREGEN_DEP)/ckSysDrv.det: FORCE
+endif
+$(PREGEN_DEP)/ckSysDrv.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# If building for basic, l1s, don't run cksysdrv.pl
+# If module "custom" is released to customer with .a only, don't run cksysdrv.pl
+ifneq ($(filter __FS_ON__,$(strip $(COM_DEFS))),)
+	@$(ECHO) -n checking system drive space ...
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~customIncDef.tmp $(foreach def,$(COM_DEFS),-D$(def))
+	@$(ECHO) -n -D__NULL_DEF__ >> $(strip $(TMPDIR))/~customIncDef.tmp
+  ifeq ($(strip $(COMPILER)),GCC)
+		@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~customInc.tmp $(foreach inc,$(subst \,/,$(COMMINCDIRS)),-I$(inc))
+  else
+		@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~customInc.tmp $(foreach inc,$(COMMINCDIRS),-I$(inc))
+  endif
+	@($(CAT) $(strip $(TMPDIR))/~customInc.tmp >> $(strip $(TMPDIR))/~customIncDef.tmp) $(AND) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TARGDIR))/module/custom/custom.def `$(DO) \
+			($(ECHO) -n "-D$(PRE_VAR)i" >> $(strip $(TMPDIR))/~customIncDef.tmp) \
+		$(DONE)) $(AND) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TARGDIR))/module/custom/custom.inc` $(DO) \
+			($(ECHO) -n "-I$(PRE_VAR)i" >> $(strip $(TMPDIR))/~customIncDef.tmp) \
+		$(DONE)) $(AND)\
+		($(CC) $(VIA)$(strip $(TMPDIR))/~customIncDef.tmp -E tools/NVRAMStatistic/src/ckSySDrv_flash_cfg_preproc.c > $(TMPDIR)/~flash_cfg_tmp.c)
+
+	@perl ./tools/ckSysDrv.pl $(TMPDIR)/~flash_cfg_tmp.c $(strip $(PROJDIR))/cksysdrv/~fs_quota_usage.log $(strip $(PROJDIR))/nvram_auto_gen/~nvram_lid_size.log $(strip $(FEATURE_OVERLOAD)) $(strip $(SYSTEM_DRIVE_ON_NAND)) $(strip $(NVRAM_PSEUDO_MERGE)) $@> $(strip $(COMPLOGDIR))/ckSysDrv.log
+
+endif
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: cksysdrv_slim
+# Check operator setting Files (An independent target)
+# *************************************************************************
+ifeq ($(MODIS_CONFIG),FALSE)
+cksysdrv_slim: $(PREGEN_DEP)/ckSysDrv.det
+	@$(ECHO) -n cksysdrv was done.
+else
+cksysdrv_slim:
+endif
+
+cksysdrv: cksysdrv_clean nvram_auto_gen $(PREGEN_DEP)/ckSysDrv.det
+	@$(ECHO) -n cksysdrv was done.
+
+cksysdrv_clean:
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/cksysdrv.log $(THEN) \
+		($(DEL_FILE) $(strip $(COMPLOGDIR))/cksysdrv.log) $(CMD_END)
+
+# *************************************************************************
+# Target: errc_gen
+# gen some files by excel table setting
+# *************************************************************************
+errc_gen: $(PREGEN_DEP)/errc_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./errc_gen.det)
+else
+$(PREGEN_DEP)/errc_gen.det: FORCE
+endif
+$(PREGEN_DEP)/errc_gen.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(IF_EXIST) protocol/lte_sec/errc/gen_evt_tbl/gen_evt_tbl.pl $(THEN) \
+			((perl protocol/lte_sec/errc/gen_evt_tbl/gen_evt_tbl.pl "$(strip $(PROJECT_MAKEFILE))" TARGET $(PROJDIR) $(strip $(COMPLOGDIR)) $@> $(strip $(COMPLOGDIR))/errc_gen_tbl.log) $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: generate errc files Failed. Please check $(strip $(COMPLOGDIR))/errc_gen_tbl.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+else
+	@$(IF_EXIST) protocol/lte_sec/errc/gen_evt_tbl/gen_evt_tbl.pl $(THEN) \
+			((perl protocol/lte_sec/errc/gen_evt_tbl/gen_evt_tbl.pl "$(strip $(PROJECT_MAKEFILE))" MODIS $(MODISPROJDIR)/_BUILD_XGEN $(strip $(MODISPROJDIR))/_BUILD_LOG $@ > $(strip $(MODISPROJDIR))/_BUILD_LOG/errc_gen_tbl.log) $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: generate errc files Failed. Please check $(strip $(MODISPROJDIR))/_BUILD_LOG/errc_gen_tbl.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Target: xl1r_gen
+# gen el1 header files
+# *************************************************************************
+xl1r_gen: $(PREGEN_DEP)/xl1r_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./xl1r_gen.det)
+else
+$(PREGEN_DEP)/xl1r_gen.det: FORCE
+endif
+$(PREGEN_DEP)/xl1r_gen.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(IF_EXIST) protocol/smt/xl1r/cgen/gen_l1_header.pl $(THEN) \
+			((perl protocol/smt/xl1r/cgen/gen_l1_header.pl $(PROJDIR) $(strip $(COMPLOGDIR)) $@> $(strip $(COMPLOGDIR))/xl1r_gen_tbl.log) $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: generate xl1r files Failed. Please check $(strip $(COMPLOGDIR))/xl1r_gen_tbl.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+else
+	@$(IF_EXIST) protocol/smt/xl1r/cgen/gen_l1_header.pl $(THEN) \
+			((perl protocol/smt/xl1r/cgen/gen_l1_header.pl $(MODISPROJDIR)/_BUILD_XGEN $(strip $(MODISPROJDIR))/_BUILD_LOG $@ > $(strip $(MODISPROJDIR))/_BUILD_LOG/xl1r_gen_tbl.log) $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: generate xl1r files Failed. Please check $(strip $(MODISPROJDIR))/_BUILD_LOG/xl1r_gen_tbl.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Target: caband_gen
+# gen some files by excel table setting
+# *************************************************************************
+caband_gen: $(PREGEN_DEP)/caband_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./caband_gen.det)
+else
+$(PREGEN_DEP)/caband_gen.det: FORCE
+endif
+$(PREGEN_DEP)/caband_gen.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(IF_EXIST) ./tools/gen_ca_band_tbl.pl $(THEN) \
+			((perl ./tools/gen_ca_band_tbl.pl "$(strip $(PROJECT_MAKEFILE))" TARGET $(PROJDIR)  $(strip $(COMPLOGDIR)) $@ > $(strip $(COMPLOGDIR))/gen_ca_band_tbl.log) $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: generate eas_caband_tbl_v2 files Failed. Please check $(strip $(COMPLOGDIR))/gen_ca_band_tbl.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+else
+	@$(IF_EXIST) ./tools/gen_ca_band_tbl.pl $(THEN) \
+			((perl ./tools/gen_ca_band_tbl.pl "$(strip $(PROJECT_MAKEFILE))" MODIS $(MODISPROJDIR)/_BUILD_XGEN  $(strip $(MODISPROJDIR))/_BUILD_LOG $@ > $(strip $(MODISPROJDIR))/_BUILD_LOG/gen_ca_band_tbl.log) $(WITH)  \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: generate eas_caband_tbl_v2 files Failed. Please check $(strip $(MODISPROJDIR))/_BUILD_LOG/gen_ca_band_tbl.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Target: ckmemlayout
+# check scatter file and memory device consistency
+# *************************************************************************
+ckmemlayout: $(PREGEN_DEP)/ckmemlayout.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./ckmemlayout.det)
+else
+$(PREGEN_DEP)/ckmemlayout.det: FORCE
+endif
+$(PREGEN_DEP)/ckmemlayout.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_EXIST) $(FIXPATH)/tools/ckMemLayout.pl $(THEN)\
+		(perl $(FIXPATH)/tools/ckMemLayout.pl 1 TRUE $(SCATTERFILE) $(strip $(TMPDIR))/~lis_temp $(TMPDIR)/~flash_cfg_tmp.c "$(strip $(PROJECT_MAKEFILE))" $(strip $(BUILD_SYSDIR)) $(strip $(INSIDE_MTK)) $(strip $(INFOMAKELOG)) $@ > $(strip $(COMPLOGDIR))/ckmemlayout1.log) $(CMD_END)
+
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+ckmemlayout2: ckMemLayout_target.det
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) -n Done for ckmemlayout2
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: copycmm
+# Generate cmm files for different SUB_BOARD_VER
+# *************************************************************************
+ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+  RUN_CMMGEN_HQ = TRUE
+else
+  RUN_CMMGEN_HQ = FALSE
+endif
+
+copycmm: $(POSTGEN_DEP)/copycmm.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(POSTGEN_DEP)/./copycmm.det)
+else
+$(POSTGEN_DEP)/copycmm.det: FORCE
+endif
+$(POSTGEN_DEP)/copycmm.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/cmm $(THEN) ($(MKDIR) $(strip $(PROJDIR))/cmm) $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(POSTGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(POSTGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+#delete files
+	@($(LIST_DIR) -n -b "./tools/DebuggingSuite/Scripts/*.*" > $(strip $(TMPDIR))/debuggin_suite_scripts_list.tmp 2> $(DEV_NUL) $(WITH) \
+	$(IF_ERR_FALSE) $(THEN)\
+	$(IF_EXIST) $(strip $(TMPDIR))/debuggin_suite_scripts_list.tmp $(THEN) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TMPDIR))/debuggin_suite_scripts_list.tmp` $(DO) \
+			($(IF_EXIST) $(strip $(PROJDIR))/cmm/$(PRE_VAR)i $(THEN) $(DEL_FILE) $(strip $(PROJDIR))/cmm/$(PRE_VAR)i $(CMD_END)) \
+		$(DONE))\
+	$(CMD_END)\
+	$(CMD_END))
+
+	@($(LIST_DIR) -n -b "./tools/DebuggingSuite/Scripts/ChipDependent/$(strip $(PLATFORM))/*" > $(strip $(TMPDIR))/debuggin_suite_scripts_chip_list.tmp 2> $(DEV_NUL) $(WITH) \
+	$(IF_ERR_FALSE) $(THEN)\
+	$(IF_EXIST) $(strip $(TMPDIR))/debuggin_suite_scripts_chip_list.tmp $(THEN) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TMPDIR))/debuggin_suite_scripts_chip_list.tmp` $(DO) \
+			($(IF_EXIST) $(strip $(PROJDIR))/cmm/$(PRE_VAR)i $(THEN) $(DEL_DIR) $(strip $(PROJDIR))/cmm/$(PRE_VAR)i $(CMD_END)) \
+		$(DONE))\
+	$(CMD_END)\
+	$(CMD_END))
+
+	@($(LIST_DIR) -n -b "./tools/DebuggingSuite/Scripts/*.*" > $(strip $(TMPDIR))/debuggin_suite_scripts_list.tmp 2> $(DEV_NUL) $(WITH) \
+	$(IF_ERR_FALSE) $(THEN)\
+	$(IF_EXIST) $(strip $(TMPDIR))/debuggin_suite_scripts_list.tmp $(THEN) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TMPDIR))/debuggin_suite_scripts_list.tmp` $(DO) \
+			($(IF_EXIST) $(strip $(PROJDIR))/cmm/$(PRE_VAR)i $(THEN) $(DEL_FILE) $(strip $(PROJDIR))/cmm/$(PRE_VAR)i $(CMD_END)) \
+		$(DONE))\
+	$(CMD_END)\
+	$(CMD_END))
+
+	@($(LIST_DIR) -n -b "./tools/DebuggingSuite/Scripts/ChipDependent/$(strip $(PLATFORM))/*" > $(strip $(TMPDIR))/debuggin_suite_scripts_chip_list.tmp 2> $(DEV_NUL) $(WITH) \
+	$(IF_ERR_FALSE) $(THEN)\
+	$(IF_EXIST) $(strip $(TMPDIR))/debuggin_suite_scripts_chip_list.tmp $(THEN) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TMPDIR))/debuggin_suite_scripts_chip_list.tmp` $(DO) \
+			($(IF_EXIST) $(strip $(PROJDIR))/cmm/$(PRE_VAR)i $(THEN) $(DEL_DIR) $(strip $(PROJDIR))/cmm/$(PRE_VAR)i $(CMD_END)) \
+		$(DONE))\
+	$(CMD_END)\
+	$(CMD_END))
+
+#copy files
+	@$(IF_EXIST) ./tools/DebuggingSuite/Scripts $(THEN) \
+		($(COPY_FILE) ./tools/DebuggingSuite/Scripts/*.* $(strip $(PROJDIR))/cmm/) \
+	$(CMD_END)
+	
+	@$(IF_EXIST) ./tools/DebuggingSuite/Scripts/ChipDependent/$(strip $(PLATFORM)) $(THEN)\
+		($(COPY_DIR) ./tools/DebuggingSuite/Scripts/ChipDependent/$(strip $(PLATFORM))/ $(strip $(PROJDIR))/cmm/) \
+	$(CMD_END)
+
+	@$(IF_EXIST) ./tools/DebuggingSuite/Scripts $(THEN) \
+		($(COPY_FILE) ./tools/DebuggingSuite/Scripts/*.* $(strip $(PROJDIR))/cmm/) \
+	$(CMD_END)
+	
+	@$(IF_EXIST) ./tools/DebuggingSuite/Scripts/ChipDependent/$(strip $(PLATFORM)) $(THEN) \
+		($(COPY_DIR) ./tools/DebuggingSuite/Scripts/ChipDependent/$(strip $(PLATFORM))/ $(strip $(PROJDIR))/cmm/) \
+	$(CMD_END)
+
+	@$(IF_EXIST) ./tools/DebuggingSuite/Scripts/ChipDependent/$(strip $(PLATFORM)) $(THEN) \
+		($(RECURSIVE_DIR) -f "./tools/DebuggingSuite/Scripts/ChipDependent/$(strip $(PLATFORM))" > $(strip $(TMPDIR))/copycmm.det.tmp 2> $(DEV_NUL)) \
+	$(CMD_END)
+	@$(IF_EXIST) ./tools/DebuggingSuite $(THEN) \
+		($(RECURSIVE_DIR) -f "./tools/DebuggingSuite/" >> $(strip $(TMPDIR))/copycmm.det.tmp 2> $(DEV_NUL)) \
+	$(CMD_END)
+
+	@$(IF_EXIST) $(strip $(TMPDIR))/copycmm.det.tmp $(THEN)\
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TMPDIR))/copycmm.det.tmp` $(DO) \
+			($(IF_EXIST) $(PRE_VAR)i $(THEN) $(ECHO) -n $@: $(PRE_VAR)i >> $@ $(CMD_END)) \
+		$(DONE)) \
+	$(CMD_END)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: cmmgen
+# Generate cmm files for different SUB_BOARD_VER
+# *************************************************************************
+cmmgen: $(POSTGEN_DEP)/cmmgen.det
+$(POSTGEN_DEP)/cmmgen.det: $(strip $(TMPDIR))/~customIncDef.tmp copycmm
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(POSTGEN_DEP)/./cmmgen.det)
+else
+$(POSTGEN_DEP)/cmmgen.det: FORCE
+endif
+$(POSTGEN_DEP)/cmmgen.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(POSTGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(POSTGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(IF_NOT_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) \
+		((echo $(strip $(TARGDIR))/$(strip $(BIN_FILE)) does not exist. Please check it.) $(WITH) (exit 2)) \
+	$(CMD_END)
+
+	@$(ECHO) -n Generate cmm files
+		@$(IF_EXIST) ./tools/CMMAutoGen.pl $(THEN) \
+			((perl ./tools/CMMAutoGen.pl 0 $(strip $(PROJDIR))/cmm/$(strip $(TARGNAME))_nocode.cmm ../bin/$(IMG_FILE) "$(strip $(PROJECT_MAKEFILE))" $(strip $(BIN_FILE)) $(strip $(TARGDIR))/$(SYM_FILE) $(L1CORE_SYM_FILE) "$(CC)" "$(VIA)" $(strip $(TMPDIR))/~customIncDef.tmp $(strip $(TMPDIR)) $(strip $(INFOMAKELOG)) $(strip $(TMPDIR))/cp_dsp_info.tmp "$(MD_VER_FOLDER)" $@> $(strip $(COMPLOGDIR))/cmmgen_nocode.log) $(WITH)  \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: generate CMM file Failed. Please check $(strip $(COMPLOGDIR))/cmmgen_nocode.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+    ifeq ($(strip $(RUN_CMMGEN_HQ)),TRUE)
+			@$(IF_EXIST) ./tools/CMMAutoGen.pl  $(THEN) \
+				((perl ./tools/CMMAutoGen.pl 1 $(strip $(PROJDIR))/cmm/$(strip $(TARGNAME))_HQ_Only.cmm ../bin/$(IMG_FILE) "$(strip $(PROJECT_MAKEFILE))" $(strip $(BIN_FILE)) $(strip $(TARGDIR))/$(SYM_FILE) $(L1CORE_SYM_FILE) "$(CC)" "$(VIA)" $(strip $(TMPDIR))/~customIncDef.tmp $(strip $(TMPDIR)) $(strip $(INFOMAKELOG)) $(strip $(TMPDIR))/cp_dsp_info.tmp "$(MD_VER_FOLDER)" $@> $(strip $(COMPLOGDIR))/cmmgen_hqonly.log) $(WITH) \
+				$(IF_ERR_TRUE) $(THEN) (echo Error: generate CMM file Failed. Please check $(strip $(COMPLOGDIR))/cmmgen_hqonly.log $(WITH) exit 1) $(CMD_END)) \
+			$(CMD_END)
+    endif
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: dsp_process
+# *************************************************************************
+dsp_process: cp_dsp_files
+
+# *************************************************************************
+# TARGET: cp_dsp_fils
+# *************************************************************************
+cp_dsp_files: $(POSTGEN_DEP)/cp_dsp_files.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(POSTGEN_DEP)/cp_dsp_files.det)
+else
+$(POSTGEN_DEP)/cp_dsp_files.det: FORCE
+endif
+$(POSTGEN_DEP)/cp_dsp_files.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_NOT_EXIST) $(strip $(POSTGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(POSTGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_postcgen.log
+  endif
+
+	@perl ./tools/cp_dsp_files.pl $(strip $(DSPDIR)) $(strip $(BUILD_DSPDIR)) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) "$(strip $(PROJECT_MAKEFILE))" "$(strip $(DSP_VER))" $(strip $(PARTIAL_SOURCE)) $(strip $(TMPDIR))/cp_dsp_info.tmp > $(strip $(COMPLOGDIR))/cp_dsp_files.log 2>&1 $(WITH) \
+	($(IF_ERR_TRUE) $(THEN) echo Error: ./tools/cp_dsp_files.pl failed. Please check $(strip $(COMPLOGDIR))/cp_dsp_files.log $(WITH) exit 1 $(CMD_END))
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common,internal >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common,internal\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+else
+	@$(GEN_TARGET_FILE) $(strip $(ORIGINAL_PROJECT_NAME)) $(strip $(ORIGINAL_FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(ORIGINAL_PROJECT_NAME)) $(strip $(ORIGINAL_FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: copy_mcddll
+# *************************************************************************
+copy_mcddll: FORCE
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+#		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" > $@
+  endif
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+	@$(IF_EXIST) $(strip $(CUS_MTK_REL))/dhl/database/mcddll.dll $(THEN) ($(COPY_FILE) $(strip $(CUS_MTK_REL))/dhl/database/mcddll.dll $(strip $(MODISBUILD_TST_DB))/mcddll.dll > $(DEV_NUL)) $(CMD_END)
+  endif
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET:  $(strip $(TMPDIR))/~customIncDef.tmp:
+# *************************************************************************
+$(strip $(TMPDIR))/~customIncDef.tmp:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+	@$(STRCMPEX) def def e  $(strip $(TMPDIR))/~customIncDef.tmp $(foreach def,$(COM_DEFS),-D$(def))
+	@$(ECHO) -n -D__NULL_DEF__ >> $(strip $(TMPDIR))/~customIncDef.tmp
+  ifeq ($(strip $(COMPILER)),GCC)
+		@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~customInc.tmp $(foreach inc,$(subst \,/,$(COMMINCDIRS)),-I$(inc))
+  else
+		@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~customInc.tmp $(foreach inc,$(COMMINCDIRS),-I$(inc))
+  endif
+	@$(CAT)  $(strip $(TMPDIR))/~customInc.tmp >>  $(strip $(TMPDIR))/~customIncDef.tmp
+	@$(IF_NOT_EXIST) $(TARGDIR)/module/custom $(THEN) \
+		($(MAKE) -fmake/common/build.mak -r -R PROJECT_NAME=$(strip $(PROJECT_NAME)) PROJECT_MAKEFILE="$(strip $(PROJECT_MAKEFILE))" FLAVOR=$(strip $(FLAVOR)) ALL_MODULELIS=custom.lis genmoduleinfo) \
+	 $(CMD_END)
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/module/custom $(THEN) \
+		(($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN)  `$(CAT) $(strip $(TARGDIR))/module/custom/custom.def` \
+		$(DO) \
+			(echo -D$(PRE_VAR)i >> $(strip $(TMPDIR))/~customIncDef.tmp) $(DONE)) \
+		 $(AND) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TARGDIR))/module/custom/custom.inc` \
+		$(DO) \
+			(echo -I$(PRE_VAR)i >> $(strip $(TMPDIR))/~customIncDef.tmp) $(DONE))) \
+	$(CMD_END)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+# *************************************************************************
+# Library Targets
+# *************************************************************************
+ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+ifneq ($(filter $(MAKECMDGOALS),remake),)
+ifneq ($(strip $(REMAKE_WITH_CGEN)),FALSE)
+libs: cgen
+endif
+endif
+endif
+endif
+
+ifneq ($(strip $(PARALLEL)),TRUE)
+ifneq ($(strip $(UPDATE_DSP)),TRUE)
+libs: cleanlib startbuildlibs $(COMPLIBLIST)
+else
+libs: cleanlib startbuildlibs parallel_lib
+endif
+else
+libs: cleanlib startbuildlibs parallel_lib
+endif
+parallel_lib:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) -n "================== Start Parallel build =================="
+	@$(CHK_TIME)
+	@$(IF_NOT_EXIST) $(strip $(COMPLIBDIR)) $(THEN) ($(MKDIR) $(COMPLIBDIR)) $(CMD_END)
+	@$(IF_EXIST) $(strip $(COMPLOGDIR)/mbis_parallel.log) $(THEN) $(DEL_FILE) $(strip $(COMPLOGDIR)/mbis_parallel.log) $(CMD_END)
+ifeq ($(strip $(call Upper,$(BM_NEW))),TRUE)
+	@-$(MAKE) -f$(strip ${MAKE_COMMON})/parallel.mak -r -R $(strip $(CMD_ARGU)) --no-print-directory PARALLEL_CORE=. COMPLIBLIST="$(COMPLIBLIST)" TMPDIR=$(strip $(TMPDIR)) PROJECT_NAME=$(strip $(PROJECT_NAME)) PROJECT_MAKEFILE="$(strip $(PROJECT_MAKEFILE))" FLAVOR=$(strip $(FLAVOR)) MBIS_EN=$(strip $(MBIS_EN))
+else	
+	@$(MAKE) -f$(strip ${MAKE_COMMON})/parallel.mak -r -R $(strip $(CMD_ARGU)) --no-print-directory PARALLEL_CORE=. COMPLIBLIST="$(COMPLIBLIST)" TMPDIR=$(strip $(TMPDIR)) PROJECT_NAME=$(strip $(PROJECT_NAME)) PROJECT_MAKEFILE="$(strip $(PROJECT_MAKEFILE))" FLAVOR=$(strip $(FLAVOR)) MBIS_EN=$(strip $(MBIS_EN))
+endif
+	@$(ECHO) -n ""
+	@$(ECHO) -n "----------------------------------------------------------------------"
+	@$(ECHO) -n "  module                time(min:sec)   warning found    result"
+	@$(ECHO) -n "----------------------------------------------------------------------"
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(basename $(COMPLIBLIST)) $(DO) \
+        (grep -A2 "Pass O" $(strip $(COMPLOGDIR)/$(PRE_VAR)i.log)) $(WITH) \
+        $(IF_ERR_FALSE) $(THEN) ($(ECHO) -n "") $(CMD_END) \
+        $(DONE)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(basename $(COMPLIBLIST)) $(DO) \
+        (grep -A2 "Fail X" $(strip $(COMPLOGDIR)/$(PRE_VAR)i.log)) $(WITH) \
+        $(IF_ERR_FALSE) $(THEN) ($(ECHO) -n "") $(CMD_END) \
+        $(DONE)
+	@$(IF_EXIST) $(strip $(COMPLOGDIR)/mbis_parallel.log) $(THEN) $(CAT) $(strip $(COMPLOGDIR)/mbis_parallel.log)| sort -k1.4 -k1.3r >> $(MBIS_BUILD_TIME_TMP) $(CMD_END)
+	@$(ECHO) -n "==================  End Parallel build  =================="
+	@$(CHK_TIME)
+	@$(ECHO) -n ""
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+libs:
+	@$(ECHO) -n "All modules built done"
+
+# *************************************************************************
+# TARGET: startbuildlibs
+# *************************************************************************
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  startbuildlibs: gencompbld
+else
+  startbuildlibs:
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) -n Start to build $(COMPLIBLIST)
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@($(LIST_DIR) "$(strip $(PROJDIR))/custom/system_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+	$(IF_ERR_FALSE) $(THEN) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(LIST_DIR) -n -b "$(strip $(PROJDIR))/custom/system_bak/*.*"` $(DO) \
+			$(IF_NOT_EXIST) $(strip $(PROJDIR))/custom/system/$(PRE_VAR)i $(THEN) \
+				(mv $(strip $(PROJDIR))/custom/system_bak/$(PRE_VAR)i $(strip $(PROJDIR))/custom/system/$(PRE_VAR)i) $(AND) \
+				(echo $(strip $(PROJDIR))/custom/system/$(PRE_VAR)i is moved from $(strip $(PROJDIR))/custom/system_bak/$(PRE_VAR)i!) \
+			$(ELSE) \
+				(($(COMPARE) $(strip $(PROJDIR))/custom/system/$(PRE_VAR)i $(strip $(PROJDIR))/custom/system_bak/$(PRE_VAR)i >$(DEV_NUL) 2>&1) $(WITH) \
+					($(IF_ERR_FALSE) $(THEN) \
+						(touch -r $(strip $(PROJDIR))/custom/system_bak/$(PRE_VAR)i $(strip $(PROJDIR))/custom/system/$(PRE_VAR)i >$(DEV_NUL)) $(AND) \
+						(echo $(strip $(PROJDIR))/custom/system/$(PRE_VAR)i timestamp is changed from $(strip $(PROJDIR))/custom/system_bak/$(PRE_VAR)i!) \
+					$(CMD_END))) \
+			$(CMD_END) \
+		$(DONE)) \
+	$(CMD_END))
+endif
+	@$(IF_EXIST) $(strip $(PROJDIR))/custom/modem_bak $(THEN) ($(DEL_DIR) $(strip $(PROJDIR))/custom/modem_bak) $(CMD_END)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: cleanlib
+# *************************************************************************
+cleanlib:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+# can be moved to genlog
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(strip $(IMG_FILE))) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(LIS_FILE)) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(strip $(LIS_FILE))) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(SYM_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(strip $(SYM_FILE))) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(TARGNAME).htm $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(strip $(TARGNAME)).htm) $(CMD_END)
+
+	@$(ECHO) -n "Clean $(COMPLIBLIST) under $(strip $(COMPLIBDIR))"
+	@$(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(GET_FNAME) $(COMPLIBLIST)` $(DO) \
+		($(IF_EXIST) $(strip $(COMPLIBDIR))/lib$(PRE_VAR)i".a" $(THEN) \
+			$(IF_NOT_EXIST) $(strip $(OBJSDIR))/$(PRE_VAR)i $(THEN) $(MKDIR) $(strip $(OBJSDIR))/$(PRE_VAR)i $(CMD_END) \
+		$(CMD_END))\
+	$(DONE)
+
+ifneq ($(strip $(UPDATE_DSP)),TRUE)
+ifneq ($(SMART_CHECK),TRUE)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(COMPLIBLIST) $(DO) \
+		($(IF_EXIST) $(strip $(COMPLIBDIR))/lib$(PRE_VAR)i $(THEN) ($(DEL_FILE) $(strip $(COMPLIBDIR))/lib$(PRE_VAR)i) $(CMD_END)) \
+	$(DONE)
+endif
+endif
+
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: %.a
+# *************************************************************************
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+%.a: FORCE
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$(@F),L," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF) "$(strip $(MBIS_EN_OBJ_LOG))" $(EQU) "TRUE" $(THEN) \
+		($(IF_NOT_EXIST) $(TARGDIR)/log/mbis/$* $(THEN) \
+			($(MKDIR) $(TARGDIR)/log/mbis/$*) \
+		$(CMD_END) $(AND) \
+		($(LIST_DIR) "$(TARGDIR)/log/mbis/$*/*.mbis" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) \
+			($(DEL_FILE) $(TARGDIR)/log/mbis/$*/*.mbis)\
+		$(CMD_END)))\
+	 $(CMD_END)
+
+	@$(IF_NOT_EXIST) $(strip $(COMPLIBDIR)) $(THEN) \
+		($(MKDIR) $(COMPLIBDIR)) \
+	$(CMD_END)
+
+	@perl ./tools/time.pl
+	@$(ECHO) -n Building $*
+	@$(ECHO) -n "                    LOG: $(strip $(COMPLOGDIR))/$*.log"
+
+ifneq ($(strip $(SMART_CHECK)),TRUE)
+	@$(IF_NOT_EXIST) $(strip $(OBJSDIR))/$* $(THEN) \
+		($(MKDIR) $(strip $(OBJSDIR))/$*) \
+	$(CMD_END)
+	@$(IF) "$(ACTION)" $(EQU) "new" $(THEN) \
+		$(IF_EXIST) $(strip $(RULESDIR))/$*.dep $(THEN) \
+			$(DEL_FILE) $(strip $(RULESDIR))/$*.dep \
+		$(CMD_END) \
+	$(CMD_END)
+	@$(IF) "$(ACTION)" $(EQU) "bm_new" $(THEN) \
+		$(IF_EXIST) $(strip $(RULESDIR))/$*.dep $(THEN) \
+			$(DEL_FILE) $(strip $(RULESDIR))/$*.dep \
+		$(CMD_END)\
+	$(CMD_END)
+	@$(IF_NOT) "$(ACTION)" $(EQU) "remake" $(THEN) \
+		$(IF_NOT_EXIST) $(strip $(RULESDIR))/$* $(THEN) \
+			$(MKDIR) $(strip $(RULESDIR))/$* \
+		$(CMD_END)\
+	$(CMD_END)
+	@$(IF) "$(ACTION)" $(EQU) "new" $(THEN) \
+		($(LIST_DIR) "$(strip $(RULESDIR))/$*/*.det" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(RULESDIR))/$*/*.det $(CMD_END)) \
+	$(CMD_END)
+	@$(IF) "$(ACTION)" $(EQU) "bm_new" $(THEN) \
+		($(LIST_DIR) "$(strip $(RULESDIR))/$*/*.det" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(RULESDIR))/$*/*.det $(CMD_END)) \
+	$(CMD_END)
+
+	@$(LIST_DIR) "*.via" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN)  $(DEL_FILE) *.via $(CMD_END)
+	@$(LIST_DIR) "*.d" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) *.d $(CMD_END)
+endif
+
+	@$(ECHO) "$* START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(MAKE) -fmake/common/comp.mak -k -r -R SMART_CHECK=$(strip $(SMART_CHECK)) TMPDIR=$(strip $(TMPDIR)) $(strip $(CMD_ARGU)) --no-print-directory COMPONENT=$* setup_env > $(strip $(COMPLOGDIR))/$*_setEnv.log 2>&1
+
+  ifeq ($(strip $(call Upper,$(BM_NEW))),TRUE)
+		@$(IF_NOT_EXIST) $(strip $(COMPLOGDIR))/$* $(THEN) $(MKDIR) $(strip $(COMPLOGDIR))/$* $(CMD_END)
+
+		@($(MAKE) -fmake/common/comp.mak -k -r -R TMPDIR=$(strip $(TMPDIR)) $(strip $(CMD_ARGU)) COMPONENT=$* update_lib > $(strip $(COMPLOGDIR))/$*.log 2>&1) $(WITH) \
+		($(IF_ERR_TRUE) $(THEN)\
+			(perl ./tools/get_log.pl $(strip $(COMPLOGDIR))/$*.log $(strip $(COMPLOGDIR))/$* $(HTOGETHER) $(strip $(HEADER_TEMP))) $(AND) \
+			($(DEL_DIR) $(strip $(COMPLOGDIR))/$*) $(AND) \
+			($(IF_EXIST) $(MODIS_RULESDIR) $(THEN) perl ./tools/pack_dep_gcc.pl $(MODIS_RULESDIR)/$*.dep $(MODIS_RULESDIR) $(HTOGETHER) $(strip $(HEADER_TEMP)) $(CMD_END)) $(AND) \
+			(exit 1) \
+		$(ELSE) \
+			(perl ./tools/get_log.pl $(strip $(COMPLOGDIR))/$*.log $(strip $(COMPLOGDIR))/$* $(HTOGETHER) $(strip $(HEADER_TEMP))) $(AND) \
+			($(DEL_DIR) $(strip $(COMPLOGDIR))/$*) \
+		$(CMD_END))
+  else
+		@$(IF_NOT_EXIST) $(strip $(COMPLOGDIR))/$* $(THEN) \
+			$(MKDIR) $(strip $(COMPLOGDIR))/$* \
+		$(CMD_END)
+
+		@($(MAKE) -fmake/common/comp.mak -r -R SMART_CHECK=$(strip $(SMART_CHECK)) TMPDIR=$(strip $(TMPDIR)) $(strip $(CMD_ARGU)) COMPONENT=$* update_lib > $(strip $(COMPLOGDIR))/$*.log 2>&1) $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			(perl ./tools/get_log.pl $(strip $(COMPLOGDIR))/$*.log $(strip $(COMPLOGDIR))/$* $(HTOGETHER) $(strip $(HEADER_TEMP))) $(AND) \
+			($(DEL_DIR) $(strip $(COMPLOGDIR))/$*) $(AND) \
+			($(IF_EXIST) $(MODIS_RULESDIR) $(THEN) perl ./tools/pack_dep_gcc.pl $(MODIS_RULESDIR)/$*.dep $(MODIS_RULESDIR)/$* $(HTOGETHER) $(strip $(HEADER_TEMP)) $(CMD_END)) $(AND) \
+			($(IF_EXIST) $(strip $(COMPLIBDIR))/lib$*.a $(THEN) $(DEL_FILE) $(strip $(COMPLIBDIR))/lib$*.a $(CMD_END)) $(AND) \
+			(exit 1) \
+		$(ELSE) \
+			(perl ./tools/get_log.pl $(strip $(COMPLOGDIR))/$*.log $(strip $(COMPLOGDIR))/$* $(HTOGETHER) $(strip $(HEADER_TEMP))) $(AND) \
+			($(DEL_DIR) $(strip $(COMPLOGDIR))/$*) \
+		$(CMD_END))
+  endif
+
+	@perl ./tools/chk_lib_err_warn.pl $(strip $(COMPLOGDIR))/$*.log
+	@$(ECHO) "$* END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+# mbis time probe
+	@$(IF) "$(strip $(MBIS_EN_OBJ_LOG))" $(EQU) "TRUE" $(THEN) \
+		($(LIST_DIR) "$(TARGDIR)/log/mbis/$*/*.mbis" 1>$(DEV_NUL) 2>&1 || exit 0 $(AND) (perl ./tools/mbis.pl -o $(TARGDIR)/log/mbis/$*)) \
+	$(CMD_END)
+	@$(LIST_DIR) "$(TARGDIR)/log/mbis/$*/*.mbis" 1>$(DEV_NUL) 2>&1 || exit 0 $(AND) (($(DEL_FILE) $(TARGDIR)/log/mbis/$*/*.mbis) $(AND) ($(DEL_DIR) $(TARGDIR)/log/mbis/$*))
+   ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$(@F),L," >> $(MBIS_BUILD_TIME_TMP)
+   endif
+endif #ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+
+# *************************************************************************
+# Scan Target For Scanning Header Dependencies
+# *************************************************************************
+ifeq ($(strip $(CHECK_SCAN)),TRUE)
+scan: $(COMP_DEP_LIST)
+else
+scan: cleandep $(COMP_DEP_LIST)
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) -n Scanning Header Dependencies finished.
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+cleandep:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(COMPSCANLIST) $(DO) \
+		(echo clean $(PRE_VAR)i.dep) $(WITH) \
+		($(IF_EXIST) $(strip $(RULESDIR))/$(PRE_VAR)i.dep $(THEN) $(DEL_FILE) $(strip $(RULESDIR))/$(PRE_VAR)i.dep $(CMD_END)) \
+	$(DONE)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+%.dep: gencompbld
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) -n scan $* dependency ...
+	@$(IF_NOT_EXIST) $(strip $(RULESDIR))/$@ $(THEN)\
+		($(MAKE) -fmake/common/comp.mak -k -r -R --no-print-directory TMPDIR=$(strip $(TMPDIR)) $(strip $(CMD_ARGU)) COMPONENT=$* setup_env > $(strip $(COMPLOGDIR))/$*_setEnv.log 2>&1) $(AND) \
+		($(MAKE) -fmake/common/comp.mak -k -r -R --no-print-directory TMPDIR=$(strip $(TMPDIR)) $(strip $(CMD_ARGU)) COMPONENT=$* update_dep > $(strip $(COMPLOGDIR))/$*_dep.log 2>&1) $(AND) \
+		($(IF_EXIST) $(strip $(COMPLOGDIR))/$* $(THEN) ($(DEL_DIR) $(strip $(COMPLOGDIR))/$*)$(CMD_END)) $(AND) \
+		($(LIST_DIR) "$(strip $(COMPLOGDIR))/$*_dep.log" > $(DEV_NUL) 2>&1 $(WITH) \
+			$(IF_ERR_FALSE) $(THEN) ($(DEL_FILE) $(strip $(COMPLOGDIR))/$*_dep.log) $(CMD_END)) \
+	$(CMD_END)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: cleanall
+# Standard "cleanall" Target
+# *************************************************************************
+cleanall:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(BUILDDIR) $(THEN) $(MKDIR) $(BUILDDIR) $(CMD_END)
+	@$(IF_NOT_EXIST) $(TARGDIR) $(THEN) $(MKDIR) $(TARGDIR) $(CMD_END)
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+# -----------------------------
+# Check build root, target, and project directories
+#
+# build ->
+#  +-$(PROJECT_NAME)
+#     +-$(FLAVOR)
+#        +-dep    - Dependency directory
+#        +-ojb    - Object directory
+#        +-log    - log directory
+#        +-lib    - libraries directory
+# -----------------------------
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n "Cleaning directories under $(strip $(PROJDIR)) ..."
+
+	-@$(IF_NOT_EXIST) $(TARGDIR) $(THEN) ($(MKDIR) $(TARGDIR)) \
+	$(ELSE) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(NEWTARGNAME).bin $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(NEWTARGNAME).bin) $(CMD_END)) $(AND) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(IMG_FILE)) $(CMD_END)) $(AND) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(strip $(LIS_FILE)) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(strip $(LIS_FILE))) $(CMD_END)) $(AND) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(SYM_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(SYM_FILE)) $(CMD_END)) $(AND) \
+		($(LIST_DIR) "$(strip $(TARGDIR))/*.log" > $(DEV_NUL) 2>&1 $(WITH) \
+			$(IF_ERR_FALSE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/*.log) $(CMD_END))\
+	$(CMD_END)
+
+else
+  ifeq ($(strip $(PROJDIR)),$(strip $(BUILDDIR))/$(strip $(PROJECT_NAME))/$(strip $(FLAVOR)))
+ # MoDIS is not separated from Target
+	@$(IF_EXIST) $(MODISPROJDIR)/_BUILD_XGEN $(THEN) $(DEL_DIR) $(MODISPROJDIR)/_BUILD_XGEN $(CMD_END)
+  endif
+endif #ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+
+	@$(IF_NOT_EXIST) $(COMPLOGDIR) $(THEN)($(MKDIR) $(COMPLOGDIR)) $(CMD_END)
+
+ifneq ($(strip $(AUTO_CHECK_DEPEND)),TRUE)
+# -----------------------------
+# Remove TST database files
+# -----------------------------
+	@$(IF_EXIST) $(CODE_GEN_LST) $(THEN)\
+		($(COPY_FILE) $(CODE_GEN_LST) $(strip $(TMPDIR))/~codegenlis.tmp > $(DEV_NUL)) $(AND) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(CODE_GEN_LST)` $(DO) \
+			($(IF_EXIST) $(PRE_VAR)i $(THEN) ($(DEL_FILE) $(PRE_VAR)i) $(CMD_END)) \
+		 $(DONE)) $(AND) \
+		($(IF_EXIST) $(CODE_GEN_LST) $(THEN) ($(DEL_FILE) $(CODE_GEN_LST)) $(CMD_END)) \
+	 $(CMD_END)
+
+	@$(IF_NOT_EXIST) $(PROJDIR) $(THEN) ($(MKDIR) $(PROJDIR)) $(CMD_END)
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+# -----------------------------
+# Check component directories
+# -----------------------------
+#
+ifneq ($(strip $(SMART_CHECK)),TRUE)
+	@$(ECHO) -n "Cleaning dep files under $(RULESDIR)"
+	@$(IF_EXIST) $(strip $(RULESDIR)) $(THEN) ($(DEL_DIR) $(strip $(RULESDIR))) $(CMD_END)
+	@$(IF_NOT_EXIST) $(RULESDIR) $(THEN) ($(MKDIR) $(RULESDIR)) $(CMD_END)
+	@$(ECHO) -n "Cleaning obj files under $(OBJSDIR)"
+	@$(IF_EXIST) $(strip $(OBJSDIR)) $(THEN) ($(DEL_DIR) $(strip $(OBJSDIR))) $(CMD_END)
+	@$(IF_NOT_EXIST) $(OBJSDIR) $(THEN) ($(MKDIR) $(OBJSDIR)) $(CMD_END)
+	@$(ECHO) -n "Cleaning lib files under $(COMPLIBDIR)"
+	@$(IF_EXIST) $(strip $(COMPLIBDIR)) $(THEN) ($(DEL_DIR) $(strip $(COMPLIBDIR))) $(CMD_END)
+	@$(IF_NOT_EXIST) $(COMPLIBDIR) $(THEN) ($(MKDIR) $(COMPLIBDIR)) $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(COMPLIBDIR)) $(THEN) \
+		($(MKDIR) $(COMPLIBDIR)) \
+	$(ELSE) \
+		($(ECHO) -n Cleaning lib files under $(COMPLIBDIR)) $(AND) \
+		($(LIST_DIR) "$(strip $(COMPLIBDIR))/*.a" > $(DEV_NUL) 2>&1 $(WITH) \
+			($(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(COMPLIBDIR))/*.a $(CMD_END))) \
+	$(CMD_END)
+endif
+
+ifneq ($(strip $(SMART_CHECK)),TRUE)
+	@$(IF_EXIST) $(strip $(PROJDIR))/nvram_auto_gen $(THEN) ($(DEL_DIR) $(strip $(PROJDIR))/nvram_auto_gen) $(CMD_END)
+endif
+endif #ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+endif
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME)  >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: cleanbin
+# Standard "cleanbin" Target
+# *************************************************************************
+cleanbin:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) ($(DEL_DIR) $(strip $(TARGDIR))/$(strip $(BIN_FILE))) $(CMD_END)
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(CHECKBINFILE))* $(THEN) ($(DEL_DIR) $(strip $(TARGDIR))/$(strip $(CHECKBINFILE))*) $(CMD_END)
+endif
+else
+	@$(IF_EXIST) $(MODISPROJDIR)/MoDIS/$(MODIS_MODE)/MoDIS.exe $(THEN) $(DEL_FILE) $(MODISPROJDIR)/MoDIS/$(MODIS_MODE)/MoDIS.exe $(CMD_END)
+	@$(IF_EXIST) $(MODISPROJDIR)/MoDIS/$(MODIS_MODE)/MoDIS.exe $(THEN) exit 2 $(CMD_END)
+endif
+
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME)>>$(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: genlog
+# Standard "genlog" Target
+# *************************************************************************
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(filter $(MAKECMDGOALS),new),)
+    genlog: gen_infolog drv_feature_check
+  endif
+  genlog: gen_infolog_modis gen_infomakelog
+else
+  genlog: gen_infolog gen_infomakelog drv_feature_check
+endif
+
+genlog:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+ifneq ($(PCIBT_ACTION_LIST),)
+	@$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) "make/common/rule_def/commincdirs_def.mak" $(INFOMAKELOG) $(PCIBT_ACTION_LIST) 2> $(strip $(TARGDIR))/GlobalIncCheck.log $(WITH) $(IF_ERR_TRUE) $(THEN) ($(CAT) $(strip $(TARGDIR))/GlobalIncCheck.log $(WITH) exit 1) $(CMD_END)
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Standard "cleanmod" Target
+# *************************************************************************
+cleanmod:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+# -----------------------------
+# Check build root, target, and project directories
+#
+# build ->
+#  +-$(PROJECT_NAME)
+#     +-$(FLAVOR)
+#        +-dep    - Dependency directory
+#        +-ojb    - Object directory
+#        +-log    - log directory
+#        +-lib    - libraries directory
+# -----------------------------
+	@$(ECHO) -n Cleaning directories under $(strip $(PROJDIR)) ...
+	@$(IF_NOT_EXIST) $(BUILDDIR) $(THEN) \
+		($(MKDIR) $(BUILDDIR)) $(CMD_END)
+
+	@$(IF_NOT_EXIST) $(TARGDIR) $(THEN) \
+		($(MKDIR) $(TARGDIR)) \
+	$(ELSE) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(NEWTARGNAME).bin/NUL $(THEN) ($(DEL_DIR) $(strip $(TARGDIR))/$(NEWTARGNAME).bin) $(CMD_END)) $(WITH) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(NEWTARGNAME).bin $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(NEWTARGNAME).bin) $(CMD_END)) $(WITH) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(IMG_FILE)) $(CMD_END)) $(WITH) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(strip $(LIS_FILE)) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(strip $(LIS_FILE))) $(CMD_END)) $(WITH) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(SYM_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(SYM_FILE)) $(CMD_END)) $(WITH) \
+		($(IF_EXIST) $(strip $(TARGDIR))/$(TARGNAME).htm $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(TARGNAME).htm) $(CMD_END)) $(WITH) \
+		($(LIST_DIR) "$(strip $(TARGDIR))/*.log" 1>$(DEV_NUL) 2>&1 $(WITH) \
+			$(IF_ERR_FALSE) $(THEN) \
+				($(DEL_FILE) $(strip $(TARGDIR))/*.log) \
+			$(CMD_END)) \
+	$(CMD_END)
+
+	@$(IF_NOT_EXIST) $(COMPLOGDIR) $(THEN) \
+		($(MKDIR) $(COMPLOGDIR)) \
+	$(ELSE) \
+		($(FOR) $(DECLARE_VAR)i $(IN) $(CLEAN_MODS) $(DO) \
+			($(IF_EXIST) $(strip $(COMPLOGDIR))/$(PRE_VAR)i.log $(THEN) ($(DEL_FILE) $(strip $(COMPLOGDIR))/$(PRE_VAR)i.log) $(CMD_END)) \
+			$(DONE)) \
+	$(CMD_END)
+
+	@$(IF_NOT_EXIST) $(PROJDIR) $(THEN) ($(MKDIR) $(PROJDIR)) $(CMD_END)
+	@$(IF_NOT_EXIST) $(OBJSDIR) $(THEN) ($(MKDIR) $(OBJSDIR)) $(CMD_END)
+
+# -----------------------------
+# Check component directories
+# -----------------------------
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(CLEAN_MODS) $(DO) \
+		($(IF_NOT_EXIST) $(strip $(OBJSDIR))/$(PRE_VAR)i $(THEN) ($(MKDIR) $(strip $(OBJSDIR))/$(PRE_VAR)i) \
+		$(ELSE) \
+			(echo Cleaning object files under $(PRE_VAR)i) $(WITH) \
+			($(LIST_DIR) "$(OBJSDIR)/$(PRE_VAR)i/*.*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+					$(IF_ERR_FALSE) $(THEN) \
+					($(DEL_FILE) $(OBJSDIR)/$(PRE_VAR)i/*.*) \
+			$(CMD_END)) \
+		$(CMD_END)) \
+	$(DONE)
+
+	@$(IF_NOT_EXIST) $(COMPLIBDIR) $(THEN) \
+		($(MKDIR) $(COMPLIBDIR)) \
+	$(ELSE) \
+		(echo Cleaning library files $(CLEAN_MODS) under $(COMPLIBDIR)) $(WITH) \
+		($(FOR) $(DECLARE_VAR)i $(IN) $(CLEAN_MODS) $(DO) \
+			($(IF_EXIST) $(strip $(COMPLIBDIR))/lib$(PRE_VAR)i.a $(THEN) ($(DEL_FILE) $(strip $(COMPLIBDIR))/lib$(PRE_VAR)i.a) $(CMD_END))\
+		$(DONE)) \
+	$(CMD_END)
+
+ifeq ($(NEED_CLEAN_CGENLST),TRUE)
+	echo Cleaning code gen files
+	@$(IF_EXIST) $(CODE_GEN_LST) $(THEN) \
+		($(FOR) $(DECLARE_VAR)i $(IN) $(CODE_GEN_LST) $(DO) \
+			($(IF_EXIST) $(PRE_VAR)i $(THEN) ($(DEL_FILE) $(PRE_VAR)i) $(CMD_END)) \
+		$(DONE)) \
+	$(CMD_END)
+
+	@$(IF_EXIST) $(CODE_GEN_LST) $(THEN) \
+		(($(COPY_FILE) $(CODE_GEN_LST) $(strip $(TMPDIR))/~codegenlis.tmp >$(DEV_NUL)) $(AND) \
+		($(DEL_FILE) $(CODE_GEN_LST)) \
+	$(CMD_END)
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: gen_infolog
+# dump the compile option & include path to $(INFOLOG)
+# *************************************************************************
+gen_infolog: $(PREGEN_DEP)/gen_infolog.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./gen_infolog.det)
+else
+$(PREGEN_DEP)/gen_infolog.det: FORCE
+endif
+$(PREGEN_DEP)/gen_infolog.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN) \
+		($(ECHO) "$@ START TIME=" >>$(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME)>>$(strip $(TARGDIR))/build.log) \
+	$(CMD_END)
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(COMPLOGDIR) $(THEN) ($(MKDIR) $(COMPLOGDIR)) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TMPDIR))/~def.tmp $(THEN) $(DEL_FILE) $(strip $(TMPDIR))/~def.tmp $(CMD_END)
+	@$(IF_EXIST) $(strip $(TMPDIR))/~inc.tmp $(THEN) $(DEL_FILE) $(strip $(TMPDIR))/~inc.tmp $(CMD_END)
+
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~def.tmp $(foreach def,$(sort $(COM_DEFS_TARGET)),$(def))
+	@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~inc.tmp $(foreach inc,$(COMMINCDIRS_TARGET),$(inc))
+	@perl ./tools/lnitem.pl $(strip $(TMPDIR))/~def.tmp
+	@perl ./tools/lnitem.pl $(strip $(TMPDIR))/~inc.tmp
+
+	@($(ECHO) -n "[ COMMON OPTION ]" > $(INFOLOG)) $(AND) \
+		($(CAT) $(strip $(TMPDIR))/~def.tmp >> $(INFOLOG))
+	@($(ECHO) -n "[ COMMON INCLUDE PATH ]" >> $(INFOLOG)) $(AND) \
+		($(CAT) $(strip $(TMPDIR))/~inc.tmp >> $(INFOLOG))
+
+	@$(ECHO) -n "$@: $(NEED_CHECK_DEPEND_LIST)" > $(PREGEN_DEP)/gen_infolog.det
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) -n Generating infolog is done.
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN) \
+		($(ECHO) "$@ END TIME=" >>$(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME)>>$(strip $(TARGDIR))/build.log) \
+	$(CMD_END)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: gen_infomakelog
+# dump details compile info, release info to $(INFOMAKELOG) for debugging or tracking
+# *************************************************************************
+gen_infomakelog: $(PREGEN_DEP)/gen_infomakelog.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./gen_infomakelog.det)
+else
+$(PREGEN_DEP)/gen_infomakelog.det: FORCE
+endif
+$(PREGEN_DEP)/gen_infomakelog.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+	
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(STRCMPEX) def def e $(INFOMAKELOG) COM_DEFS = $(call sort, $(foreach def,$(COM_DEFS),$(def)))
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~remove.tmp COMMINCDIRS = $(foreach inc,$(COMMINCDIRS),$(inc))
+	@perl ./tools/echoLongString5.pl $(INFOMAKELOG) XGEN_INC_DIR_ORI $(strip $(XGEN_INC_DIR_ORI))
+	@$(CAT) $(strip $(TMPDIR))/~remove.tmp >> $(INFOMAKELOG)
+	@perl ./tools/echoLongString.pl $(INFOMAKELOG) COMP_TRACE_DEFS_MODEM $(COMP_TRACE_DEFS_MODEM)
+	@perl ./tools/echoLongString.pl $(INFOMAKELOG) COMP_TRACE_DEFS $(COMP_TRACE_DEFS_MODEM)
+	@$(ECHO) -n COMPLIST = $(call sort, $(foreach def,$(COMPLIST),$(def))) >> $(INFOMAKELOG)
+	@$(ECHO) -n FOURG_COMP = $(call sort, $(foreach def,$(FOURG_COMP),$(def))) >> $(INFOMAKELOG)
+	@$(ECHO) -n FIVEG_COMP = $(call sort, $(foreach def,$(FIVEG_COMP),$(def))) >> $(INFOMAKELOG)
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@perl ./tools/echoLongString.pl $(INFOMAKELOG) COMPOBJS $(COMPOBJS)
+	@perl ./tools/echoLongString.pl $(INFOMAKELOG) CUS_REL_OBJ_LIST $(CUS_REL_OBJ_LIST)
+	@perl ./tools/echoLongString.pl $(INFOMAKELOG) CUS_REL_BASE_COMP $(CUS_REL_BASE_COMP)
+endif
+	@$(ECHO) -n CUS_REL_SRC_COMP = $(call sort, $(foreach def,$(CUS_REL_SRC_COMP),$(def))) >> $(INFOMAKELOG)
+	@$(ECHO) -n CUS_REL_MTK_COMP = $(call sort, $(foreach def,$(CUS_REL_MTK_COMP),$(def))) >> $(INFOMAKELOG)
+ifeq ($(MPD_SOURCE_FULL_BUILD), TRUE)
+	@$(ECHO) -n CUS_REL_SRC_COMP_SW = $(call sort, $(foreach def,$(CUS_REL_SRC_COMP_SW),$(def))) >> $(INFOMAKELOG)
+	@$(ECHO) -n CUS_REL_MTK_COMP_SW = $(call sort, $(foreach def,$(CUS_REL_MTK_COMP_SW),$(def))) >> $(INFOMAKELOG)
+	@$(ECHO) -n CUS_REL_SRC_COMP_CUST = $(call sort, $(foreach def,$(CUS_REL_SRC_COMP_CUST),$(def))) >> $(INFOMAKELOG)
+	@$(ECHO) -n CUS_REL_MTK_COMP_CUST = $(call sort, $(foreach def,$(CUS_REL_MTK_COMP_CUST),$(def))) >> $(INFOMAKELOG)
+endif
+
+ # NON_REL_XXX_LIST will be used in copy_cr in moly_release.mak
+	@$(ECHO) -n NON_REL_DIRS_LIST = $(call sort, $(foreach def,$(NON_REL_DIRS_LIST),$(def))) >> $(INFOMAKELOG)
+	@$(ECHO) -n NON_REL_FILES_LIST = $(call sort, $(foreach def,$(NON_REL_FILES_LIST),$(def))) >> $(INFOMAKELOG)
+	@$(ECHO) -n TST_DB = $(strip $(BUILD_TST_DB)) >> $(INFOMAKELOG)
+	@$(ECHO) -n LEVEL = $(strip $(LEVEL)) >> $(INFOMAKELOG)
+	@$(ECHO) -n CUSTOM_RELEASE = $(strip $(CUSTOM_RELEASE)) >> $(INFOMAKELOG)
+	@$(ECHO) -n VERNO = $(strip $(VERNO)) >> $(INFOMAKELOG)
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n CUSTOM_DEBUG_MODULES = $(strip $(CUSTOM_DEBUG_MODULES))>> $(INFOMAKELOG)
+	@$(ECHO) -n CUSTOM_NON_DEBUG_MODULES = $(strip $(CUSTOM_NON_DEBUG_MODULES))>> $(INFOMAKELOG)
+else
+	@$(ECHO) -n MODIS_EN_LIBS = $(strip $(MODIS_EN_LIBS)) >> $(INFOMAKELOG)
+	@$(ECHO) -n MODIS_DIS_LIBS = $(strip $(MODIS_DIS_LIBS)) >> $(INFOMAKELOG)
+	@$(ECHO) -n MODIS_MTK_LIBS = $(strip $(MODIS_MTK_LIBS)) >> $(INFOMAKELOG)
+	@$(ECHO) -n MODIS_EN_OBJS = $(strip $(MODIS_EN_OBJS)) >> $(INFOMAKELOG)
+	@$(ECHO) -n CUS_MODIS_LIB = $(strip $(CUS_MODIS_LIB)) >> $(INFOMAKELOG)
+	@$(ECHO) -n MODIS_MODE = $(strip $(MODIS_MODE)) >> $(INFOMAKELOG)
+	@$(ECHO) -n MODIS_MODE_DEFAULT = $(strip $(MODIS_MODE_DEFAULT)) >> $(INFOMAKELOG)
+	@$(ECHO) -n MODIS_INCREDIBUILD = $(strip $(MODIS_INCREDIBUILD)) >> $(INFOMAKELOG)
+	@$(ECHO) -n MODIS_UESIM = $(strip $(MODIS_UESIM)) >> $(INFOMAKELOG)
+	@$(ECHO) -n MODISDIR = $(MODISDIR) >>$(INFOMAKELOG)
+	@$(ECHO) -n MODISPROJDIR = $(MODISPROJDIR) >>$(INFOMAKELOG)
+	@$(ECHO) -n LLVM_ON_WINDOWS = $(LLVM_ON_WINDOWS) >>$(INFOMAKELOG)
+  ifeq ($(strip $(MODIS_COMPILER)),MINGW)
+	@$(ECHO) -n CFLAGS_MODIS = $(CFLAGS_MODIS) >>$(INFOMAKELOG)
+	@$(ECHO) -n LNKOPT_MODIS_START = $(LNKOPT_MODIS_START) >>$(INFOMAKELOG)
+	@$(ECHO) -n LNKOPT_MODIS_END = $(LNKOPT_MODIS_END) >>$(INFOMAKELOG)
+  endif
+endif
+	@$(ECHO) -n CUSTOM_SYSTEM_FOLDER = $(call CUSTOM_FLD_MAPPING,custom\system) >> $(INFOMAKELOG)
+	@$(ECHO) -n LOG2SD_CATCHER_FILTERS_FILE_LIST = $(LOG2SD_CATCHER_FILTERS_FILE_LIST) >> $(INFOMAKELOG)
+	@$(ECHO) -n CODEGEN_PREPROCESS_MODEM = $(CODEGEN_PREPROCESS_MODEM) >> $(INFOMAKELOG)
+	@$(ECHO) -n CODEGEN_DEPENDENCY_MODEM_SEC = $(CODEGEN_DEPENDENCY_MODEM_SEC) >> $(INFOMAKELOG)
+	@$(ECHO) -n CODEGEN_DEPENDENCY_MODEM = $(CODEGEN_DEPENDENCY_MODEM) >> $(INFOMAKELOG)
+	@$(ECHO) -n ALL_MODULELIS = $(ALL_MODULELIS) >> $(INFOMAKELOG)
+	@$(ECHO) -n ALL_MODULES_IN_PROJ = $(ALL_COMPLIST) >> $(INFOMAKELOG)	
+
+ifdef TK_MD_CUS
+	@$(ECHO) -n TK_MD_CUS = $(TK_MD_CUS) >> $(INFOMAKELOG)
+endif
+
+	@$(ECHO) -n "$@: $(NEED_CHECK_DEPEND_LIST)" > $(PREGEN_DEP)/gen_infomakelog.det
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) -n Generating infomakelog is done.
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN) \
+		($(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME) >> $(strip $(TARGDIR))/build.log) \
+	$(CMD_END)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: end
+# *************************************************************************
+end:
+# -----------------------------
+# Clean temporary files in make directory
+# -----------------------------
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE))/ROM $(THEN) \
+		($(LIST_DIR) "$(strip $(TARGDIR))/$(strip $(BIN_FILE))/*.cfg" > $(DEV_NUL) 2>&1 $(WITH) \
+		 $(IF_ERR_FALSE) $(THEN) \
+		 $(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE))/$(SCATTERFILE_FLASHTOOL_NAME) $(THEN) \
+			($(DEL_FILE) $(strip $(TARGDIR))/$(strip $(BIN_FILE))/$(SCATTERFILE_FLASHTOOL_NAME)*) \
+		$(CMD_END) \
+		$(CMD_END)) \
+	$(ELSE) \
+		($(LIST_DIR) "$(strip $(TARGDIR))/*.cfg" > $(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) \
+		$(IF_EXIST) $(strip $(TARGDIR))/$(SCATTERFILE_FLASHTOOL_NAME) $(THEN) \
+			($(DEL_FILE) $(strip $(TARGDIR))/$(SCATTERFILE_FLASHTOOL_NAME)*) \
+		$(CMD_END) \
+		$(CMD_END)) \
+	$(CMD_END)
+
+ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+	@$(ECHO) -n check system drive ....
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/ckSysDrv.log $(THEN) \
+		(perl ./tools/chk_sysdrv_log.pl $(strip $(COMPLOGDIR))/ckSysDrv.log $(strip $(TARGDIR))/$(strip $(BIN_FILE))) $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: cksysdrv has errors. Delete the binary file. $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+endif
+
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+	@$(ECHO) -n Check if any error happened during the build process .....
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) \
+		perl ./tools/parse_comp_err.pl $(strip $(PROJDIR)) $(MODIS_CONFIG) $(strip $(TMPDIR)) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TMPDIR))/comp_err.txt $(THEN) \
+		$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) \
+			(echo Some error happened during the build process. Delete the binary file.) $(WITH) \
+			($(DEL_DIR) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(WITH) exit 1) $(CMD_END) \
+		$(CMD_END)
+endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+ifeq ($(NO_DSP),FALSE)
+ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN)\
+		$(strip .)/tools/md_all_in_one/img_list.sh "$(strip $(PROJECT_NAME))($(strip $(FLAVOR)))" \
+	$(CMD_END)
+endif
+endif
+endif
+# -----------------------------
+# remove dep and via folders under build folder
+# -----------------------------
+	@$(IF_EXIST) $(strip $(HEADER_TEMP)) $(THEN) ($(DEL_DIR) $(strip $(HEADER_TEMP))) $(CMD_END)
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(IF_EXIST) $(FIXPATH)/nul $(THEN) $(DEL_FILE) $(FIXPATH)/nul $(CMD_END)
+	@$(IF_EXIST) $(FIXPATH)/NUL $(THEN) $(DEL_FILE) $(FIXPATH)/NUL $(CMD_END)
+endif
+
+  ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+    ifdef CCACHE_DIR
+			@$(ECHO) -n "2nd ccache status" >> $(strip $(COMPLOGDIR))/ccache.log
+			@$(CCACHE) -s >> $(strip $(COMPLOGDIR))/ccache.log
+    endif
+  endif
+
+	@$(ECHO) -n Done.
+	@$(CHK_TIME)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: ckmake
+# *************************************************************************
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+ifdef CCACHE_DIR
+ifdef CCACHE_SIZE
+ckmake: ccache
+endif
+endif
+endif
+ckmake:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN) \
+		($(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME) >> $(strip $(TARGDIR))/build.log) \
+	$(CMD_END)
+
+	@perl ./tools/chk_verno.pl $(VERNO)
+	@$(IF_NOT_EXIST) $(strip $(COMPLOGDIR)) $(THEN) \
+		($(MKDIR) $(strip $(COMPLOGDIR))) \
+	 $(CMD_END)
+	@perl ./tools/chk_feature_option.pl "$(strip $(PROJECT_MAKEFILE))" $(strip $(COMPLOGDIR))  > $(strip $(COMPLOGDIR))/chk_feature_option.log
+
+ifeq ($(strip $(CHECK_FO_LICENSE)),TRUE)
+	@perl /mtkeda/wcpsm/mp_script/md_lic_feature_control/tool/chk_lic_for_feature_option.pl "$(strip $(PROJECT_MAKEFILE))" "$(strip $(LICENSE_INFO))" "$(strip $(CUST_LIC))" "$(strip $(COMPLOGDIR))"  > $(strip $(COMPLOGDIR))/chk_lic_for_feature_option.log
+endif
+
+ifeq ($(strip $(OS_VERSION)),MSWin32)
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+	@perl ./tools/chk_env.pl make "$(strip $(PROJECT_MAKEFILE))" -customer $(strip $(COMPLOGDIR))
+else
+	perl ./tools/chk_env.pl make "$(strip $(PROJECT_MAKEFILE))" -internal $(strip $(COMPLOGDIR))
+endif
+else
+  ifeq ($(strip $(call Upper,$(OS_VERSION))),LINUX)
+    ifeq ($(strip $(CHK_ENV_FLAG)),TRUE)
+	@perl ./tools/chk_env_linux.pl -chkenv "$(strip $(CC))" $(strip $(COMPILER_VER)) $(strip $(COMPILER_ISA)) $(WITH) \
+	($(IF_ERR_TRUE) $(THEN) (echo Error: current Build Env. is not recommendation. $(WITH) exit 1) $(CMD_END))
+    else
+	@perl ./tools/chk_env_linux.pl -no_chkenv "$(strip $(CC))" $(strip $(COMPILER_VER)) $(strip $(COMPILER_ISA)) $(WITH) \
+	($(IF_ERR_TRUE) $(THEN) (echo Error: current Build Env. is not recommendation. $(WITH) exit 1) $(CMD_END))
+    endif
+  endif
+endif
+
+	@$(ECHO) -n makefile check is done
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN) \
+		($(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log $(AND) \
+		$(CHK_TIME) >> $(strip $(TARGDIR))/build.log) \
+	$(CMD_END)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: backup
+# *************************************************************************
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+backup : getoptions
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) $(strip $(PROJDIR))/md_rename $(THEN) ($(DEL_DIR) $(strip $(PROJDIR))/md_rename)$(CMD_END)
+	@$(IF_EXIST) $(strip $(TARGDIR))/dummy_$(SYM_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/dummy_$(SYM_FILE)) $(CMD_END)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+else
+backup:
+endif
+
+# *************************************************************************
+# TARGET: getoptions
+# *************************************************************************
+getoptions:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T,"             >> $(MBIS_BUILD_TIME_TMP)
+	@$(ECHO) -n "CFLAGS,$(CFLAGS)"         >> $(MBIS_BUILD_INFO_LOG)  $(AND) \
+	 $(ECHO) -n "CPLUSFLAGS,$(CPLUSFLAGS)" >> $(MBIS_BUILD_INFO_LOG)  $(AND) \
+	 $(ECHO) -n "LIBOPT,$(LIBOPT)"         >> $(MBIS_BUILD_INFO_LOG)  $(AND) \
+	 $(ECHO) -n "LNKOPT,$(LNKOPT)"         >> $(MBIS_BUILD_INFO_LOG)
+endif
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~mbis_def.tmp $(foreach def,$(COM_DEFS),$(def))
+
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) "COM_DEFS," >>$(MBIS_BUILD_INFO_LOG) $(AND)\
+	$(CAT) $(strip $(TMPDIR))/~mbis_def.tmp >> $(MBIS_BUILD_INFO_LOG)
+endif
+	@$(IF_EXIST) $(strip $(TMPDIR))/~mbis_def.tmp $(THEN) $(DEL_FILE) $(strip $(TMPDIR))/~mbis_def.tmp $(CMD_END)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: gencompbld
+# Write required script variables to config file
+# *************************************************************************
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+gencompbld: gen_gfh_cfg
+endif
+gencompbld: gencategorymapping
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# mbis time probe for enable mbis time probe in comp.mak
+	@$(ECHO) -n "MBIS_EN_OBJ_LOG 	= $(strip $(MBIS_EN_OBJ_LOG))" >  $(strip $(TMPDIR))/~compbld.tmp
+
+# Write the variable info to ~compbld.tmp for comp.mak
+	@$(ECHO) -n "ASM = $(strip $(ASM))"                           >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "LIB = $(strip $(LIB))"                           >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CC = $(strip $(CC))"                             >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CC32 = $(strip $(CC32))"                         >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CPPC = $(strip $(CPPC))"                         >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CPPC32 = $(strip $(CPPC32))"                     >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CFLAGS = $(strip $(CFLAGS))"                     >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CPLUSFLAGS = $(strip $(CPLUSFLAGS))"             >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "VIA = $(VIA)"                                    >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CUS_MTK_LIB = $(strip $(CUS_MTK_LIB))"           >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "NEED_BUILD_BOOTLOADER = $(strip $(NEED_BUILD_BOOTLOADER))" >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "COM_DEFS_FOR_$(strip $(PLATFORM)) = $(strip $(COM_DEFS_FOR_$(strip $(PLATFORM))))">> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "SV5_PLATFORM = $(strip $(SV5_PLATFORM))"         >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "COMPLIST = $(strip $(COMPLIST))"                 >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CUS_REL_MTK_COMP = $(strip $(CUS_REL_MTK_COMP))" >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CHK_LTE_COMP = $(strip $(CHK_LTE_COMP))"         >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "DWARF_FLAGS = $(strip $(DWARF_FLAGS))"           >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "DSP_ASE_MODULES = $(strip $(DSP_ASE_MODULES))"   >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "MD_VER_FOLDER = $(strip $(MD_VER_FOLDER))"       >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "LTE_SRC_PATH = $(strip $(LTE_SRC_PATH))"         >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "FIVEG_COMP = $(strip $(FIVEG_COMP))"             >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "FOURG_COMP = $(strip $(FOURG_COMP))"             >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "NO_DEP = $(strip $(NO_DEP))"                     >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "DETERMINISTIC = $(strip $(DETERMINISTIC))"       >> $(strip $(TMPDIR))/~compbld.tmp
+
+# According to the custom_MemoryDevice.h, write the variable info to ~compbld.tmp for comp.mak
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n AFLAGS = $(strip $(AFLAGS)) >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n EXTRA_AFLAGS = $(strip $(EXTRA_AFLAGS)) >> $(strip $(TMPDIR))/~compbld.tmp
+
+	@$(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) "-cut=2" $(strip $(BUILD_SYSDIR))/custom_MemoryDevice.h` $(DO) \
+		($(IF) "$(PRE_VAR)i" $(EQU) "NOR_LPSDRAM_MCP" $(THEN) \
+			(echo AFLAGS	= $(strip $(AFLAGS)) $(call ADEFTrans,_NOR_LPSDRAM_MCP_, TRUE) >> $(strip $(TMPDIR))/~compbld.tmp) \
+		$(CMD_END)) $(AND) \
+		($(IF) "$(PRE_VAR)i" $(EQU) "LPSDRAM" $(THEN) \
+			(echo AFLAGS	= $(strip $(AFLAGS)) $(call ADEFTrans,_LPSDRAM_, TRUE) >> $(strip $(TMPDIR))/~compbld.tmp) \
+		$(CMD_END)) $(AND) \
+		($(IF) "$(PRE_VAR)i" $(EQU) "NOR_RAM_MCP" $(THEN) \
+			(echo AFLAGS	= $(strip $(AFLAGS)) $(call ADEFTrans,_NOR_RAM_MCP_, TRUE) >> $(strip $(TMPDIR))/~compbld.tmp) \
+		$(CMD_END)) \
+	$(DONE)
+endif
+
+	@$(STRCMPEX) abc abc e $(strip $(TMPDIR))/~compbld_2.tmp  INCDIRS  = $(strip $(COMMINCDIRS))
+	@$(CAT) $(strip $(TMPDIR))/~compbld_2.tmp >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(IF_EXIST) $(strip $(TMPDIR))/~compbld_2.tmp $(THEN) ($(DEL_FILE) $(strip $(TMPDIR))/~compbld_2.tmp) $(CMD_END)
+	@$(STRCMPEX) abc abc e $(strip $(TMPDIR))/~compbld_2.tmp  DEFINES  = $(strip $(COM_DEFS))
+	@$(CAT) $(strip $(TMPDIR))/~compbld_2.tmp >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(IF_EXIST) $(strip $(TMPDIR))/~compbld_2.tmp $(THEN) ($(DEL_FILE) $(strip $(TMPDIR))/~compbld_2.tmp) $(CMD_END)
+	@$(ECHO) -n "PROJECT_NAME  = $(strip $(PROJECT_NAME))"            >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "PROJECT_MAKEFILE = $(strip $(PROJECT_MAKEFILE))"     >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "ARM9_PLATFORM  = $(strip $(ARM9_PLATFORM))"          >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "ARM11_PLATFORM = $(strip $(ARM11_PLATFORM))"         >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CR4_PLATFORM   = $(strip $(CR4_PLATFORM))"           >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(IF_NOT) $(P_VAR)0$(COMPILER) == $(P_VAR)0 $(THEN) \
+		$(ECHO) -n "COMPILER = $(COMPILER)" >> $(strip $(TMPDIR))/~compbld.tmp $(CMD_END)
+	@$(IF_NOT) $(P_VAR)0$(HEADER_TEMP) == $(P_VAR)0 $(THEN) \
+		$(ECHO) -n "HEADER_TEMP = $(strip $(HEADER_TEMP))" >> $(strip $(TMPDIR))/~compbld.tmp $(CMD_END)
+	@$(ECHO) -n "AUTO_MERGE_PTH = $(AUTO_MERGE_PTH)"     >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "ACTION = $(strip $(ACTION))"            >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CUSTOM_DEBUG_MODULES = $(strip $(CUSTOM_DEBUG_MODULES))" >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "CUSTOM_NON_DEBUG_MODULES = $(strip $(CUSTOM_NON_DEBUG_MODULES))" >> $(strip $(TMPDIR))/~compbld.tmp
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n "MODIS_CONFIG = $(MODIS_CONFIG)" >> $(strip $(TMPDIR))/~compbld.tmp
+	@$(ECHO) -n "MODIS_MODE = $(MODIS_MODE)"     >> $(strip $(TMPDIR))/~compbld.tmp
+endif
+
+ifdef NO_PCIBT
+  ifeq ($(strip $(NO_PCIBT)),TRUE)
+		@$(ECHO) -n "NO_PCIBT = TRUE" >> $(strip $(TMPDIR))/~compbld.tmp
+  endif
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: gen_gfh_cfg
+# *************************************************************************
+gen_gfh_cfg: $(PREGEN_DEP)/gen_gfh_cfg.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./gen_gfh_cfg.det)
+else
+$(PREGEN_DEP)/gen_gfh_cfg.det: FORCE
+endif
+$(PREGEN_DEP)/gen_gfh_cfg.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+#		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(IF_EXIST) $(strip $(TMPDIR))/~gfh_cfg.tmp $(THEN) ($(DEL_FILE) $(strip $(TMPDIR))/~gfh_cfg.tmp) $(CMD_END)
+	@$(ECHO) -n PROJECT_NAME = $(strip $(PROJECT_NAME)) > $(strip $(TMPDIR))/~gfh_cfg.tmp
+	@$(ECHO) -n PLATFORM_ID = $(strip $(BIN_FILE))     >> $(strip $(TMPDIR))/~gfh_cfg.tmp
+	@$(ECHO) -n PROJECT_ID = $(strip $(VERNO))         >> $(strip $(TMPDIR))/~gfh_cfg.tmp
+
+#	@$(ECHO) -n $@: $(strip $(VERNOFILE))          >> $@
+#	@$(ECHO) -n $@: "$(strip $(PROJECT_MAKEFILE))" >> $@
+
+#	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *****************************************************************************************************
+# TARGET: gen_concatenate_proj
+# concatenate the project makefiles and the result is placed on build/$project/$flavorn/bin
+# Notice: the PROJECT_MAKEFILE should be the original project makefile in make folder. ext: make/XXX.mak
+# *****************************************************************************************************
+CONCATENATE_PROJ_MAK := $(strip $(TARGDIR))/~$(subst ~,,$(notdir $(strip $(PROJECT_MAKEFILE))))
+ORIGINAL_PROJ_MAK    := make/projects/$(subst ~,,$(notdir $(strip $(PROJECT_MAKEFILE))))
+
+gen_concatenate_proj:  $(strip $(CONCATENATE_PROJ_MAK))
+
+# *****************************************************************************************************
+# TARGET: $(CONCATENATE_PROJ_MAK)
+# concatenate the project makefiles and the result is placed on build/$project/$flavorn/bin
+# Notice: the PROJECT_MAKEFILE should be the original project makefile in make folder. ext: make/XXX.mak
+# *****************************************************************************************************
+$(CONCATENATE_PROJ_MAK): $(strip $(ORIGINAL_PROJ_MAK)) tools/cat_proj_mak.pl
+ifdef MODEM_SPEC
+  ifneq ($(strip $(MODEM_SPEC)),NONE)
+$(CONCATENATE_PROJ_MAK): make/common/modem_spec/$(strip $(MODEM_SPEC)).mak
+  endif
+endif
+
+ifdef VARIATION_PROJ
+  ifneq ($(strip $(VARIATION_PROJ)),)
+$(CONCATENATE_PROJ_MAK): $(strip ${MAKE_COMMON})/variation/$(strip $(VARIATION_PROJ)).mak mtk_tools/cat_vari_mak.pl
+  endif
+endif
+
+ifdef TK_MD_CUS
+  ifneq ($(strip $(TK_MD_CUS)),NONE)
+$(CONCATENATE_PROJ_MAK): make/projects/tk_md_cus/$(strip $(TK_MD_CUS)).mak tools/cat_tkmd_mak.pl
+  endif
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(strip $(TARGDIR)) $(THEN) ($(MKDIR) $(strip $(TARGDIR))) $(CMD_END)
+	@perl tools/cat_proj_mak.pl "$(strip $(ORIGINAL_PROJ_MAK))" "$(strip $(CONCATENATE_PROJ_MAK))" $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			($(DEL_FILE) "$(strip $(CONCATENATE_PROJ_MAK))" $(AND) \
+			echo "Error: concatenate project makefiles failed." $(WITH) exit 1) \
+		$(CMD_END))
+
+ifdef VARIATION_PROJ
+ifneq ($(strip $(VARIATION_PROJ)),)
+		@perl mtk_tools/cat_vari_mak.pl "$(strip ${MAKE_COMMON})/variation/$(strip $(VARIATION_PROJ)).mak" "$(strip $(CONCATENATE_PROJ_MAK))" $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			($(DEL_FILE) "$(strip $(CONCATENATE_PROJ_MAK))" $(AND) \
+			echo "Error: concatenate variation makefiles failed." $(WITH) exit 1) \
+		$(CMD_END))
+endif
+endif
+
+ifdef TK_MD_CUS
+ifneq ($(strip $(TK_MD_CUS)),NONE)
+		@perl tools/cat_tkmd_mak.pl "make/projects/tk_md_cus/$(strip $(TK_MD_CUS)).mak" "$(strip $(CONCATENATE_PROJ_MAK))" $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			($(DEL_FILE) "$(strip $(CONCATENATE_PROJ_MAK))" $(AND) \
+			echo "Error: concatenate variation makefiles failed." $(WITH) exit 1) \
+		$(CMD_END))
+endif
+endif
+
+	@$(IF_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(DEL_DIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $(strip $(POSTGEN_DEP)) $(THEN) ($(DEL_DIR) $(strip $(POSTGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $(strip $(MODIS_RULESDIR)/codegen_dep) $(THEN) ($(DEL_DIR) $(strip $(MODIS_RULESDIR)/codegen_dep)) $(CMD_END)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+###############################
+# Begin of MoDIS only actions #
+###############################
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+include make/common/modisbuild.mak
+endif #ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+#############################
+# End of MoDIS only actions #
+#############################
+
+# FORCE is a phony target, any target depending on it will run forcely
+FORCE:
+
diff --git a/mcu/make/common/build_warning_def.mak b/mcu/make/common/build_warning_def.mak
new file mode 100644
index 0000000..e5285fc
--- /dev/null
+++ b/mcu/make/common/build_warning_def.mak
@@ -0,0 +1,47 @@
+ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)

+    WARNING_AS_ERROR := TRUE

+else

+    WARNING_AS_ERROR := FALSE

+endif

+

+ifeq ($(strip $(LTO_BUILD)),TRUE)

+    WARNING_AS_ERROR = FALSE

+endif

+

+ifeq ($(strip $(WARNING_AS_ERROR)),TRUE)

+    BUILD_WARNING_CFLAGS    +=    -Werror=array-bounds

+    BUILD_WARNING_CFLAGS    +=    -Werror=enum-compare

+    BUILD_WARNING_CFLAGS    +=    -Werror=implicit-function-declaration

+    BUILD_WARNING_CFLAGS    +=    -Werror=implicit-int

+    BUILD_WARNING_CFLAGS    +=    -Werror=int-to-pointer-cast

+    BUILD_WARNING_CFLAGS    +=    -Werror=maybe-uninitialized

+    BUILD_WARNING_CFLAGS    +=    -Werror=overflow

+    BUILD_WARNING_CFLAGS    +=    -Werror=pointer-sign

+    BUILD_WARNING_CFLAGS    +=    -Werror=pointer-to-int-cast

+    BUILD_WARNING_CFLAGS    +=    -Werror=return-type

+    BUILD_WARNING_CFLAGS    +=    -Werror=sequence-point

+    BUILD_WARNING_CFLAGS    +=    -Werror=sizeof-pointer-memaccess

+    BUILD_WARNING_CFLAGS    +=    -Werror=switch

+    BUILD_WARNING_CFLAGS    +=    -Werror=uninitialized

+    BUILD_WARNING_CFLAGS    +=    -Werror=unknown-pragmas

+else ifeq ($(strip $(LTO_BUILD)),TRUE)

+    BUILD_WARNING_CFLAGS    +=    -Warray-bounds

+    BUILD_WARNING_CFLAGS    +=    -Wenum-compare

+    BUILD_WARNING_CFLAGS    +=    -Wimplicit-function-declaration

+    BUILD_WARNING_CFLAGS    +=    -Wimplicit-int

+    BUILD_WARNING_CFLAGS    +=    -Wint-to-pointer-cast

+    BUILD_WARNING_CFLAGS    +=    -Wmaybe-uninitialized

+    BUILD_WARNING_CFLAGS    +=    -Woverflow

+    BUILD_WARNING_CFLAGS    +=    -Wpointer-sign

+    BUILD_WARNING_CFLAGS    +=    -Wpointer-to-int-cast

+    BUILD_WARNING_CFLAGS    +=    -Wreturn-type

+    BUILD_WARNING_CFLAGS    +=    -Wsequence-point

+    BUILD_WARNING_CFLAGS    +=    -Wsizeof-pointer-memaccess

+    BUILD_WARNING_CFLAGS    +=    -Wswitch

+    BUILD_WARNING_CFLAGS    +=    -Wuninitialized

+    BUILD_WARNING_CFLAGS    +=    -Wunknown-pragmas

+endif

+

+#hard code to filter out $project($flavor)

+CLOSE_WARNING_AS_ERROR_PROJECT := 

+CLOSE_WARNING_AS_ERROR_PROJECT += MT3967_SP_LWCTG_GCCV6

diff --git a/mcu/make/common/buildconfig.mak b/mcu/make/common/buildconfig.mak
new file mode 100644
index 0000000..4ea5a14
--- /dev/null
+++ b/mcu/make/common/buildconfig.mak
@@ -0,0 +1,337 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+SHELL:=/bin/bash
+# *************************************************************************
+# Build path, directories
+# *************************************************************************
+ifndef MODIS_CONFIG
+  MODIS_CONFIG := FALSE
+endif
+
+FIXPATH           := .
+BUILDDIR          := $(strip $(FIXPATH))/build
+RELDIR            := $(strip $(FIXPATH))/mtk_rel
+UNIVERSAL_COMMON  := ../common
+MAKE_COMMON       := make/common
+CCACHE            := ./mtk_tools/ccache/3.7.5/linux/ccache
+
+PROJDIR           := $(strip $(BUILDDIR))/$(strip $(PROJECT_NAME))/$(strip $(FLAVOR))
+CUS_MTK_REL       := $(strip $(RELDIR))/$(strip $(ORIGINAL_PROJECT_NAME))/$(strip $(ORIGINAL_FLAVOR))/TARGET
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(call uc,$(UE_SIMULATOR))),TRUE)
+    MODIS_UESIM   := UESim
+    CUS_MTK_REL   := $(strip $(RELDIR))/$(strip $(ORIGINAL_PROJECT_NAME))/$(strip $(ORIGINAL_FLAVOR))/UESIM
+  else
+    MODIS_UESIM   := MoDIS
+    CUS_MTK_REL   := $(strip $(RELDIR))/$(strip $(ORIGINAL_PROJECT_NAME))/$(strip $(ORIGINAL_FLAVOR))/MODIS
+  endif
+  TARGET_MODIS_UESIM := $(MODIS_UESIM)
+else
+  TARGET_MODIS_UESIM := target
+endif
+DSP_MTK_REL       := $(strip $(RELDIR))/$(strip $(ORIGINAL_PROJECT_NAME))/$(strip $(ORIGINAL_FLAVOR))
+PROJ_INTERNAL_DIR := $(subst build/,build_internal/,$(PROJDIR))
+
+include $(strip $(PROJDIR))/Custom.bld
+
+TARGDIR           := $(strip $(PROJDIR))/bin
+TMPDIR            := $(strip $(PROJDIR))/tmp
+CUSTPACKDIR       := $(strip $(PROJDIR))/custpack
+BUILD_RELDIR      := $(strip $(PROJDIR))/rel
+
+OBJSDIR           := $(strip $(TARGDIR))/obj
+RULESDIR          := $(strip $(TARGDIR))/dep
+COMPLIBDIR        := $(strip $(TARGDIR))/lib
+COMPLOGDIR        := $(strip $(TARGDIR))/log
+MODULEINFODIR     := $(strip $(TARGDIR))/module
+
+GEN_MCDDIR        := $(strip $(PROJDIR))/modem/mcd
+GEN_SCSIDIR       := $(strip $(PROJDIR))/modem/scsi
+GEN_L4DIR         := $(strip $(BUILD_RELDIR))/L4
+GEN_MMIDIR        := $(strip $(BUILD_RELDIR))/BASIC
+
+CUS_MTK_LIB       := $(strip $(CUS_MTK_REL))/lib
+REL_L4DIR         := $(strip $(CUS_MTK_REL))/L4
+REL_MMIDIR        := $(strip $(CUS_MTK_REL))/BASIC
+REL_MCDDIR        := $(strip $(CUS_MTK_REL))/modem/mcd
+REL_SCSIDIR       := $(strip $(CUS_MTK_REL))/modem/scsi
+
+BUILD_L4DIR       := $(strip $(GEN_L4DIR))
+
+PRE_CODEGEN_DIR   := $(strip $(TMPDIR))/pre_codegen
+
+ALL_MOD_DIR     := $(strip $(TARGDIR))
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+  ALL_MOD_DIR     := $(strip $(CUS_MTK_REL))/BASIC
+  BUILD_L4DIR     := $(strip $(REL_L4DIR))
+endif
+
+GEN_ASDIR    :=  $(strip $(PROJDIR))
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+  GEN_ASDIR    :=  $(strip $(CUS_MTK_REL))
+endif
+
+GEN_SSDIR   := $(strip $(PROJDIR))/rel/L4/csm/ss
+REL_SSDIR   := $(strip $(CUS_MTK_REL))/L4/csm/ss
+BUILD_SSDIR := $(strip $(GEN_SSDIR))
+
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+BUILD_SSDIR := $(strip $(REL_SSDIR))
+endif
+
+TARGNAME              := $(strip $(PROJECT_NAME))_$(strip $(SUB_BOARD_VER))_$(strip $(PLATFORM))_$(strip $(CHIP_VER))
+
+TSTDIR                := service/dhl
+TSTDIR_SEC            := protocol/lte_sec/dhl
+LOGGING_DATABASE      := interface/service/logging_database
+BUILD_TSTDIR          := $(strip $(PROJDIR))/dhl
+BUILD_TSTDIR_SEC      := $(strip $(PROJDIR))/dhl/lte_sec
+BUILD_TSTDIR_4G       := $(strip $(PROJDIR))/dhl/4g
+
+TST_DB                := $(strip $(TSTDIR))/database
+TST_DB_SEC            := $(strip $(TSTDIR_SEC))/database
+CODE_GEN_LOG          := $(strip $(COMPLOGDIR))/codegen.log
+BUILD_TST_DB          := $(BUILD_TSTDIR)/database
+BUILD_TST_DB_SEC      := $(BUILD_TSTDIR_SEC)/database
+BUILD_TST_DB_4G       := $(BUILD_TSTDIR_4G)/database
+
+MDDBINFOCUSTOMPREFIX  := MDDB_$(strip $(PLATFORM))_$(strip $(CHIP_VER))
+MODIS_TST_DB          := $(strip $(TST_DB))
+MODIS_TST_DB_SEC      := $(strip $(TST_DB_SEC))
+MODISBUILD_TST_DB     := $(strip $(BUILD_TST_DB))
+MODISBUILD_TST_DB_SEC := $(strip $(BUILD_TST_DB_SEC))
+MODISBUILD_TST_DB_4G  := $(strip $(BUILD_TST_DB_4G))
+
+CUSTOMIZATION         := $(LOGGING_DATABASE)/XDD/Customization
+DBFINI_DIR            := $(LOGGING_DATABASE)/XDD/DSP
+ICDINI_DIR            := $(LOGGING_DATABASE)/XDD/ICD
+DBF_INPUT_PATH        := $(strip $(MODISBUILD_TST_DB))/dbf
+
+MODIS_RULESDIR        := $(strip $(RULESDIR))
+ADT_RULESDIR          := $(strip $(PROJ_INTERNAL_DIR))/l1ADT
+CGEN_L1_OUTDIR        := $(strip $(PROJ_INTERNAL_DIR))/l1trace
+CODEGEN_DEP           := $(MODIS_RULESDIR)/codegen_dep
+PREGEN_DEP            := $(MODIS_RULESDIR)/pregen_dep
+POSTGEN_DEP           := $(MODIS_RULESDIR)/postgen_dep
+DBG_INFO_VERNO        := $(call uc,$(subst .,_,$(VERNO)))
+
+ifeq ($(strip $(COMPILER)),GCC)
+  CGEN_DEF_FILE = Tgt_Cnf_GCC
+else
+  CGEN_DEF_FILE = Tgt_Cnf
+endif
+
+BUILD_SYSDIR           := $(strip $(PROJDIR))/custom/system
+BUILD_CODEGENDIR       := $(strip $(PROJDIR))/custom/driver/drv_gen
+
+NOT_REMOVAL_DIR_FILE   := $(strip $(MAKE_COMMON))/NotRemovalCodeDir.def
+
+#  Settings for emigen
+FLASH_OPTIONS_HDR      := custom/driver/common/flash_opt.h
+CUSTOM_FLASH_C         := custom/driver/common/custom_flash.c
+CUSTOM_EMI_H           := $(strip $(BUILD_SYSDIR))/custom_EMI.h
+CUSTOM_EMI_RELEASE_H   := $(strip $(BUILD_SYSDIR))/custom_EMI_release.h
+CUSTOM_EMI_C           := $(strip $(BUILD_SYSDIR))/custom_EMI.c
+CUSTOM_FLASH_NORFDM5_C := $(strip $(BUILD_SYSDIR))/custom_flash_norfdm5.c
+MEMORY_DEVICE_HDR      := $(strip $(BUILD_SYSDIR))/custom_MemoryDevice.h
+
+EMI_GENERATOR := ./tools/emigenMD.pl
+FLASHFILE     := $(strip $(TMPDIR))/~flash_cfg_tmp.c
+
+# Setting for MK IMAGE
+MCU_DRDI_MK_IMAGE_CFG  := ./tools/MKImage/img_hdr_md1drdi.cfg
+MCU_MK_IMAGE_CFG       := ./tools/MKImage/img_hdr_md1rom.cfg
+MCU_MK_IMAGE_TOOL      := ./tools/MKImage/mkimage
+
+EAS_FOLDER      := protocol/eas
+NRAS_FOLDER     := protocol/nras
+UAS_FDD_FOLDER  := protocol/3g/urr/urr_fdd
+UAS_TDD_FOLDER  := protocol/3g/urr/urr_tdd
+LAS_FOLDER      := protocol/2g/las
+GAS_FDD_FOLDER  := protocol/2g/gas
+GAS_TDD_FOLDER  := protocol/2g/gas_tdd
+FLC_FOLDER      := protocol/l2_utility/flc2_v2
+PPP_FOLDER      := middleware/ppp_v2
+SCSI_FOLDER     := protocol/as_utility/scsi
+SLEEPDRV_FOLDER := driver/sleep_drv
+DVFSDRV_FOLDER  := driver/dvfs_drv
+
+ifeq ($(strip $(call uc,$(UE_SIMULATOR))),TRUE)
+ifeq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+EL1_FOLDER := protocol/lte_sec/smt/u4gHlAdaptor/el1b
+else
+EL1_FOLDER := l1/el1/el1c
+endif
+else
+EL1_FOLDER := l1/el1/el1c
+endif
+
+# Do not support new mmi feature file architecture
+PURE_VERNO          := $(subst .,_, $(call uc,$(VERNO)))
+
+MDDBMETA            := MDDB.META_$(strip $(PLATFORM))_$(strip $(CHIP_VER))_$(strip $(PURE_VERNO)).EDB
+MDDBMETA_V12        := Internal_meta_db_v12_for_Debug.EDB
+MDDBMETADATABASEXML := MDDB.META.ODB_$(strip $(PLATFORM))_$(strip $(CHIP_VER))_$(strip $(PURE_VERNO)).XML
+MDDBINFOCUSTOMSRCP  := MDDB_InfoCustomAppSrcP_$(strip $(PLATFORM))_$(strip $(CHIP_VER))_$(strip $(PURE_VERNO)).EDB
+NEWTARGNAME         := $(strip $(PROJECT_NAME))_MDBIN_$(strip $(SUB_BOARD_VER))_$(strip $(PLATFORM))_$(strip $(CHIP_VER)).$(strip $(PURE_VERNO))
+CHECKBINFILE        := $(strip $(PROJECT_NAME))_MDBIN_$(strip $(SUB_BOARD_VER))_$(strip $(PLATFORM))_$(strip $(CHIP_VER))
+
+VERNODIR            := $(strip $(PROJDIR))/verno
+LOG                 := $(strip $(TARGDIR))/link.log
+COMPLOGDIR          := $(strip $(TARGDIR))/log
+INFOLOG             := $(strip $(COMPLOGDIR))/info.log
+INFOMAKELOG         := $(strip $(COMPLOGDIR))/infomake.log
+MCDDLL_INFOLOG      := $(strip $(COMPLOGDIR))/mcddll_info.log
+MCDDLL_UPDATE_LOG   := $(strip $(COMPLOGDIR))/mcddll_update.log
+LTE_SRC_FDR         := lte_src
+
+ifneq ($(wildcard $(LTE_SRC_FDR)),)
+LTE_SRC_PATH := $(strip $(LTE_SRC_FDR))
+else
+LTE_SRC_PATH := .
+endif
+
+ifeq ($(strip $(DEMO_PROJECT)),TRUE)
+VERNOFILE    := $(strip $(MAKE_COMMON))/Verno.bld
+else
+VERNOFILE    := 
+endif
+
+SLIM_BRANCH  := $(call uc,$(strip $(BRANCH)))
+BRANCH       += $(call uc,$(strip $(PROJECT_NAME)))
+# *************************************************************************
+# Set defaul value to eliminate "option not define" warning
+# *************************************************************************
+BM_NEW = FALSE
+
+INSIDE_MTK = 0
+ifeq ($(strip $(call uc,$(MTK_INTERNAL))),TRUE)
+  INSIDE_MTK = 1
+endif
+
+DEFAULT_CUSTOMER = MTK MTK_RF PLUTO
+ifneq ($(filter $(call uc,$(strip $(PROJECT_NAME))),$(strip $(DEFAULT_CUSTOMER))),)
+  SCATTERNAME = scat$(strip $(PLATFORM)).txt
+else
+  SCATTERNAME = scat$(strip $(PROJECT_NAME)).txt
+endif
+
+SCATTERFILE       := $(subst scat,lds,$(strip $(BUILD_SYSDIR))/$(strip $(SCATTERNAME)))
+SCATTERFILE_PATH  := $(subst scat,lds,$(strip $(FIXPATH))/custom/system/Specific_LDS)
+COPRO_SCATTERFILE := $(subst scat,lds,$(strip $(COPRO_SYSDIR))/$(strip $(SCATTERNAME)))
+BL_SCATTERFILE    := $(subst scat,lds,$(strip $(BUILD_SYSDIR))/scatBL_$(strip $(PLATFORM)).txt)
+
+SCATTERFILE_FLASHTOOL := $(subst .txt,_flashtool.txt,$(strip $(SCATTERFILE)))
+SCATTERFILE_FLASHTOOL_NAME := $(filter %.txt,$(subst /, ,$(SCATTERFILE_FLASHTOOL)))
+
+# *************************************************************************
+#  Implicit Rules and Compiler Options
+# *************************************************************************
+BIN_FILE       = $(strip $(NEWTARGNAME)).bin
+IMG_FILE       = $(strip $(TARGNAME)).elf
+GDB_TMP_FILE   = $(strip $(TARGNAME)).elf.gdb-index
+GDB_FILE       = $(strip $(TARGNAME)).elf.gdb-index.elf
+SYM_FILE       = $(strip $(TARGNAME)).sym
+MAP_FILE       = $(strip $(TARGNAME)).map
+ifeq ($(strip $(COMPILER)),GCC)
+LIS_FILE       = $(strip $(TARGNAME)).map
+else
+LIS_FILE       = $(strip $(TARGNAME)).lis
+endif
+DRDI_BIN_FILE := DRDI.bin
+
+# *************************************************************************
+# Settings for DSP
+# *************************************************************************
+DSPDIR          := $(strip $(RELDIR))/$(strip $(ORIGINAL_PROJECT_NAME))/$(strip $(ORIGINAL_FLAVOR))/dsp_rel
+BUILD_DSPDIR    := $(strip $(TARGDIR))/dsp
+ifeq ($(strip $(RELEASE_PACKAGE)),REL_INTERNAL)
+DSP_DEFAULT_DBF := DSP_Default.dbf
+else
+DSP_DEFAULT_DBF := DSP_Default_external.dbf
+endif
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+DSP_DBF         := $(DSPDIR)/$(strip $(DSP_PROJECT))/$(strip $(DSP_FLAVOR))/final_bin/xml/$(strip $(DSP_DEFAULT_DBF))
+else
+DSP_DBF         := $(strip $(MODISBUILD_TST_DB))/dbf/$(strip $(DSP_DEFAULT_DBF))
+endif
+DSP_INFO_FILE   := label.ini
+DSP_VER         := $(strip $(PLATFORM))_$(subst .,_,$(call uc,$(strip $(VERNO))))
+BUILD_DSPDIR    := $(strip $(TARGDIR))/dsp
+DSP_REL_DIR     := dsp_rel
+
+DSP_FINAL_BIN_NAME := $(strip $(DSP_PROJECT))_$(strip $(DSP_FLAVOR))_DSP_FINAL_BIN.zip
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+DBF_INPUT_PATH  := $(DSPDIR)/$(strip $(DSP_PROJECT))/$(strip $(DSP_FLAVOR))/final_bin/xml
+endif
+
+# *************************************************************************
+# Settings for Guardian
+# *************************************************************************
+ifndef PARTIAL_SOURCE 
+PARTIAL_SOURCE := FALSE
+endif
+
+# *************************************************************************
+# File setting for linux/win
+# *************************************************************************
+ifeq ($(strip $(OS_VERSION)),MSWin32)
+  CGEN         := $(strip $(FIXPATH))\tools\CGenTool\Cgen.exe
+  POSTGEN      := $(strip $(FIXPATH))\tools\PostGen\PostGen.exe
+  DB_CONVERTER := $(strip $(FIXPATH))\tools\PostGen\Converter\DBv12_Converter.exe
+  DRV_GEN      := $(FIXPATH)\custom\driver\drv\Drv_Tool\DrvGen.exe
+  MBL_COMPOSER := .\tools\MBL_Composer.exe
+  DBG_INFOGEN  := .\tools\DbgInfoGen.exe
+  UPDATE_IMG   := .\tools\update_img.exe
+  HEADER_TEMP  :=  $(subst /,\,$(strip $(PROJDIR)))\header_temp
+  HTOGETHER    := .\tools\hTogether\htogether_list.bat
+  MinGWDir     := .\mtk_tools\MinGW\win
+else
+  CGEN := $(strip $(FIXPATH))/tools/CGenTool/Cgen
+  POSTGEN      := $(strip $(FIXPATH))/tools/PostGen/PostGen
+  DB_CONVERTER := $(strip $(FIXPATH))/tools/PostGen/Converter/DBv12_Converter
+  DRV_GEN      := $(FIXPATH)/custom/driver/drv/Drv_Tool/DrvGen
+  MBL_COMPOSER := ./tools/MBL_Composer
+  DBG_INFOGEN  := ./tools/DbgInfo/DbgInfoGen
+  UPDATE_IMG   := ./tools/update_img
+  HEADER_TEMP  := $(strip $(PROJDIR))/header_temp
+  HTOGETHER    := ./tools/hTogether/htogether_list.sh
+  MinGWDir     := /mtkoss/mingw/6.2.1
+endif
+
+# *************************************************************************
+# MD_OFFLOAD_COPRO settings
+# *************************************************************************
+L1CORE_SCATTERFILE  := $(strip $(L1CORE_SYSDIR))/lds$(strip $(PROJECT_NAME))_$(strip $(FLAVOR)).txt
+L1CORE_MAP_FILE     := $(strip $(L1CORE_TARGDIR))/$(strip $(L1CORE_TARGNAME_L)).map
+L1CORE_SYM_FILE     := $(strip $(L1CORE_TARGDIR))/$(strip $(L1CORE_TARGNAME_L)).sym
diff --git a/mcu/make/common/cmd_cfg.mak b/mcu/make/common/cmd_cfg.mak
new file mode 100644
index 0000000..e617ee6
--- /dev/null
+++ b/mcu/make/common/cmd_cfg.mak
@@ -0,0 +1,114 @@
+#########################
+## . variable part ##
+##########################
+# script, tools, commands
+
+CAT           = perl ./tools/init/cat.pl
+CHK_OS        = perl ./tools/init/chkOS.pl
+CH_MOD        = perl ./tools/init/chmod.pl
+COPY_FILE     = perl ./tools/init/copy_files.pl -f
+COPY_DIR      = perl ./tools/init/copy_files.pl -r
+COMPARE       = perl ./tools/init/compare.pl
+DEL_FILE      = perl ./tools/init/remove.pl -f
+DEL_DIR       = perl ./tools/init/rmdir.pl -f
+ECHO          = perl ./tools/init/echo.pl
+GET_FNAME     = perl ./tools/init/get_filename.pl
+LIST_DIR      = perl ./tools/init/dir.pl
+MKDIR         = perl ./tools/init/mkdir.pl
+MOVE          = perl ./tools/init/move.pl -f
+RECURSIVE_DIR = perl ./tools/init/recursive_dir.pl
+
+GEN_TARGET_FILE = python ./tools/genTargetFile/genTargetFile.py True
+
+
+CHK_TIME = perl ./tools/time.pl -n
+CHDIR         = cd
+
+# others
+AND           = &&
+
+
+OS_VERSION = $(shell perl ./tools/init/chkOS.pl)
+#####################
+## windows section ##
+#####################
+ifeq ($(strip $(OS_VERSION)),MSWin32)
+# script, tools, commands
+LINKER        = "./mtk_tools/guardian/Linker.exe"
+SENDER        = "./mtk_tools/guardian/Sender.exe"
+STRCMPEX = .\tools\init\strcmpex_window.exe
+MAKE          = "./tools/make.exe"
+GREP_V        = find /V
+
+# if-else command
+IF            = if
+IF_EXIST      = if exist
+IF_NOT        = if not
+IF_NOT_EXIST  = if not exist
+IF_ERR_TRUE   = if ERRORLEVEL 1 
+IF_ERR_FALSE  = if not errorlevel 1
+THEN          = 
+ELSE          = else
+CMD_END       =
+
+# for loop command
+FOR           = for
+F_OPT         = /F usebackq
+IN            = in (
+DO            = ) do 
+DONE          =
+
+# condition
+EQU           = EQU
+NEQ           = NEQ
+
+# others
+DEV_NUL       = NUL
+DECLARE_VAR   = %%
+PRE_VAR       = %%
+P_VAR         = %
+WITH          = &
+
+else
+###################
+## Linux section ##
+###################
+# script, tools
+LINKER = ./mtk_tools/guardian/Linker
+SENDER = ./mtk_tools/guardian/Sender
+STRCMPEX = ./tools/init/strcmpex_linux.exe
+MAKE          = make
+GREP_V        = grep -v
+
+# if-else command
+IF            = if [ 
+IF_EXIST      = if [ -e
+IF_NOT        = if [ ! 
+IF_NOT_EXIST  = if [ ! -e
+IF_ERR_TRUE   = if [ $$? != 0
+IF_ERR_FALSE  = if [ $$? == 0
+THEN          =  ]; then 
+ELSE          = ;else
+CMD_END       =  ;fi
+
+
+# for loop command
+FOR           = for
+F_OPT         =
+IN            = in
+DO            = ;do 
+DONE          = ;done
+
+# condition
+EQU           = =
+NEQ           = !=
+
+# others
+DEV_NUL       = /dev/null
+DECLARE_VAR   =
+PRE_VAR       = $$
+P_VAR         = $
+WITH          = ;
+
+endif # OS_VERSION end
+
diff --git a/mcu/make/common/codegen.mak b/mcu/make/common/codegen.mak
new file mode 100644
index 0000000..f28c297
--- /dev/null
+++ b/mcu/make/common/codegen.mak
@@ -0,0 +1,3980 @@
+# ---------------------------------------------------------------
+# Variable declaration for asngen/asnregen/mcddll_update/umts_gen
+# ---------------------------------------------------------------
+RUN_ASNGEN           := FALSE
+RUN_ASNGEN_L4        := FALSE
+RUN_ASNREGEN         := FALSE
+RUN_MCDDLL_UPDATE    := FALSE
+RUN_LTE_MCDDLL       := FALSE
+RUN_MCDDLL_UPDATE_L4 := FALSE
+RUN_UMTS_GEN         := FALSE
+RUN_EAS_GEN          := FALSE
+RUN_NRAS_GEN         := FALSE
+
+ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+  ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+    RUN_MCDDLL_UPDATE := TRUE
+    RUN_LTE_MCDDLL := TRUE
+    RUN_ASNGEN := TRUE
+    RUN_ASNGEN_L4 := TRUE
+    RUN_ASNREGEN := TRUE
+    ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+      RUN_UMTS_GEN := TRUE
+    endif
+    ifeq ($(strip $(EUTRAN_MODE_SUPPORT)),EUTRAN_MODE)
+      RUN_UMTS_GEN := TRUE
+      RUN_EAS_GEN  := TRUE
+    endif
+    ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+      RUN_NRAS_GEN := TRUE
+    endif
+  endif
+else
+  ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    RUN_EAS_GEN  := TRUE
+    ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+      RUN_NRAS_GEN := TRUE
+    endif
+  endif
+endif
+
+# --------------------------------------
+# Variable declaration for genmoduleinfo
+# --------------------------------------
+COM_DEF_PATH := $(ALL_MODULEDEF)
+
+# -----------------------------
+# Variable declaration for cgen
+# -----------------------------
+CGEN_CFG_MODEM     := $(strip $(MODISBUILD_TST_DB))/cgenModem.cfg
+CGEN_CFG_MODEM_SEC := $(strip $(MODISBUILD_TST_DB_SEC))/cgenModem_sec.cfg
+CGEN_CFG_MODEM_4G  := $(strip $(MODISBUILD_TST_DB_4G))/cgenModem_4g.cfg
+POSTGEN_CFG_MODEM  := $(strip $(MODISBUILD_TST_DB))/postgenModem.cfg
+CODE_GEN_LST       := $(strip $(MODISBUILD_TST_DB))/codegen.lis
+CGEN_ENC_ENABLE    := FALSE
+
+# ------------------------------------------------------
+# Variable declaration for MCDDLL 
+# filter-out unnecessary C2K XGEN_INC_DIR and COM_DEFS
+# ------------------------------------------------------
+Filter_Out = $(foreach input,$(2),$(if $(findstring $(1),$(input)),,$(input)))
+
+#ex: GenCusUtmd = CuStOm_StArT_EL1D $(EL1D_UTMD_FILES) CuStOm_EnD_EL1D
+GenCusUtmd = CuStOm_StArT_$(strip $(1)) $($(strip $(1))_UTMD_FILES) CuStOm_EnD_$(strip $(1))
+#[LTE cgen need to check]
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+  ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      UTMD_FILES    := $(COMMON_UTMD_FILES) $(L1_UTMD_FILES)
+    else
+      ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+        UTMD_FILES  := $(COMMON_UTMD_FILES) $(L1_UTMD_FILES)
+      else
+        UTMD_FILES  := $(COMMON_UTMD_FILES)
+      endif
+    endif
+    UTMD_FILES_SEC := $(L1_UTMD_FILES_LTE_SEC)
+    UTMD_FILES_4G  := $(L1_UTMD_FILES_4G)
+  else
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+        UTMD_FILES += $(foreach NEED_TMD_MODULE, $(filter $(CUS_REL_SRC_COMP),$(COMPLIST)), \
+      $(if $($(call Upper,$(strip $(NEED_TMD_MODULE)))_UTMD_FILES),$(call GenCusUtmd, $(call Upper,$(strip $(NEED_TMD_MODULE))))))
+    else
+      ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+          UTMD_FILES += $(foreach NEED_TMD_MODULE, $(filter $(CUS_REL_SRC_COMP),$(COMPLIST)), \
+      $(if $($(call Upper,$(strip $(NEED_TMD_MODULE)))_UTMD_FILES),$(call GenCusUtmd, $(call Upper,$(strip $(NEED_TMD_MODULE))))))
+      else
+          UTMD_FILES += $(foreach NEED_TMD_MODULE, $(filter $(filter-out $(call Lower, $(MODIS_NO_NEED_MODULE)),$(CUS_REL_SRC_COMP)),$(COMPLIST)), \
+      $(if $($(call Upper,$(strip $(NEED_TMD_MODULE)))_UTMD_FILES),$(call GenCusUtmd, $(call Upper,$(strip $(NEED_TMD_MODULE))))))
+      endif
+    endif
+  endif
+else
+  UTMD_FILES  :=
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      UTMD_FILES += $(foreach NEED_TMD_MODULE, $(filter $(CUS_REL_SRC_COMP),$(COMPLIST)), \
+    $(if $($(call Upper,$(strip $(NEED_TMD_MODULE)))_UTMD_FILES),$(call GenCusUtmd, $(call Upper,$(strip $(NEED_TMD_MODULE))))))
+  endif
+    COMP_TRACE_DEFS_MODEM += $(NEW_CUS_REL_TRACE_DEFS_MODEM)
+endif
+
+#[LTE cgen need to check]
+COMP_TRACE_DEFS_MODEM_TARGET := $(COMP_TRACE_DEFS_MODEM)
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(strip $(call Upper,$(UE_SIMULATOR))),TRUE)
+    COMP_TRACE_DEFS_MODEM := $(foreach trc,$(COMP_TRACE_DEFS_MODEM_TARGET),$(if $(filter L1%,$(call Upper,$(notdir $(trc)))),,$(trc)))
+  endif
+endif
+
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+  ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+    MDDBINFOCUSTOM = $(notdir $(wildcard $(CUS_MTK_REL)/dhl/database/$(strip $(MDDBINFOCUSTOMPREFIX))*))
+  else
+    MDDBINFOCUSTOM = $(notdir $(wildcard $(CUS_MTK_REL)/tst/database/$(strip $(MDDBINFOCUSTOMPREFIX))*))
+  endif
+else
+  ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE)
+    MDDBINFOCUSTOM = $(MDDBINFOCUSTOMPREFIX)_$(strip $(PURE_VERNO)).EDB
+  else
+    ifeq ($(strip $(NO_LTECGEN)),TRUE)
+      MDDBINFOCUSTOM = $(MDDBINFOCUSTOMPREFIX)_$(strip $(PURE_VERNO)).EDB
+    else
+      MDDBINFOCUSTOM = $(patsubst %_sec.EDB,%,$(notdir $(wildcard $(CUS_MTK_REL)/dhl/lte_sec/database/$(strip $(MDDBINFOCUSTOMPREFIX))*))).EDB
+    endif
+  endif
+endif
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  MDDBINFOCUSTOM = MDDB_pc.EDB
+endif
+
+ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+    CODEGEN_RESULT = $(strip $(MODISBUILD_TST_DB))/MDDB.EDB
+  endif
+else
+  ifeq ($(strip $(SPLIT_SYSTEM)),TRUE)
+    CODEGEN_RESULT = $(strip $(MODISBUILD_TST_DB))/BPLGUSplitInfo
+  else
+    ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+      CODEGEN_RESULT = $(strip $(MODISBUILD_TST_DB))/$(strip $(MDDBINFOCUSTOMSRCP))
+    else
+      CODEGEN_RESULT = $(strip $(MODISBUILD_TST_DB))/$(strip $(MDDBINFOCUSTOM))
+    endif
+  endif
+endif
+
+GV_FILES     := $(wildcard $(strip $(TST_DB))/gv/*.gv)
+GV_FILES_C2K := $(wildcard $(strip $(TST_DB))/gv/ext/*.gv)
+GV_FILES_SEC := $(wildcard $(strip $(TST_DB_SEC))/gv/*.gv)
+GV_FILES_4G  := $(wildcard $(strip $(TST_DB))/gv/4g/*.gv)
+
+ifndef RUN_CGEN_L1
+  RUN_CGEN_L1 := FALSE
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    RUN_CGEN_L1 := TRUE
+  else ifeq ($(strip $(call Upper,$(UE_SIMULATOR))),TRUE)
+    ifneq ($(filter $(MAKECMDGOALS),new),)
+      RUN_CGEN_L1 := TRUE
+    endif
+  else ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+    RUN_CGEN_L1 := TRUE
+  endif
+endif
+
+CODEGEN_DEPENDENCY_MODEM :=
+CODEGEN_PREPROCESS_MODEM :=
+# CODEGEN_DATABASE_OUT is the output file name of cgen database
+# TODO: CODEGEN_RESULT <=> CODEGEN_DATABASE_OUT
+CODEGEN_DATABASE_MDDB_OUT = $(strip $(MODISBUILD_TST_DB))/MDDB*
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+  ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    CODEGEN_DATABASE_OUT     = $(strip $(MODISBUILD_TST_DB))/$(strip $(MDDBINFOCUSTOM))
+    ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+      CODEGEN_DATABASE_OUT_SEC = $(subst .EDB,_sec.EDB,$(strip $(MODISBUILD_TST_DB_SEC))/$(strip $(MDDBINFOCUSTOM)))
+    endif
+  else
+    CODEGEN_DATABASE_OUT     = $(strip $(MODISBUILD_TST_DB))/MDDB.EDB
+    ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+      CODEGEN_DATABASE_OUT_SEC = $(strip $(MODISBUILD_TST_DB_SEC))/MDDB_sec.EDB
+    endif
+  endif
+else
+  ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    CODEGEN_DATABASE_OUT     = $(strip $(MODISBUILD_TST_DB))/$(strip $(MDDBINFOCUSTOMSRCP))
+    ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+      CODEGEN_DATABASE_OUT_SEC = $(subst .EDB,_sec.EDB,$(strip $(MODISBUILD_TST_DB_SEC))/$(strip $(MDDBINFOCUSTOMSRCP)))
+    endif
+  else
+    CODEGEN_DATABASE_OUT     = $(strip $(MODISBUILD_TST_DB))/MDDB.EDB
+    ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+      CODEGEN_DATABASE_OUT_SEC = $(strip $(MODISBUILD_TST_DB_SEC))/MDDB_sec.EDB
+    endif
+  endif
+endif
+
+ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+  ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE)
+    CODEGEN_DATABASE_IN_SEC = $(CODEGEN_DATABASE_OUT_SEC)
+  else
+    ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+      ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+        ifeq ($(strip $(call Upper,$(UE_SIMULATOR))),TRUE)
+          ifeq ($(strip $(OS_VERSION)),MSWin32)
+            CODEGEN_DATABASE_IN_SEC = $(wildcard $(CUS_MTK_REL)/dhl/lte_sec/database_uesim/$(subst .EDB,_sec.EDB,$(strip $(MDDBINFOCUSTOM))))
+          else
+            CODEGEN_DATABASE_IN_SEC = $(wildcard $(CUS_MTK_REL)/dhl/lte_sec/database_modis/$(subst .EDB,_sec.EDB,$(strip $(MDDBINFOCUSTOM))))
+          endif
+        else
+          CODEGEN_DATABASE_IN_SEC = $(wildcard $(CUS_MTK_REL)/dhl/lte_sec/database_modis/$(subst .EDB,_sec.EDB,$(strip $(MDDBINFOCUSTOM))))
+        endif
+      else
+        CODEGEN_DATABASE_IN_SEC = $(wildcard $(CUS_MTK_REL)/dhl/lte_sec/database/$(strip $(MDDBINFOCUSTOMPREFIX))*)
+      endif # MODIS_CONFIG
+    else
+      ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+        CODEGEN_DATABASE_IN_SEC = $(wildcard $(CUS_MTK_REL)/dhl/lte_sec/database_modis/MDDB*)
+      else
+        CODEGEN_DATABASE_IN_SEC = $(wildcard $(CUS_MTK_REL)/dhl/lte_sec/database/MDDB*)
+      endif
+    endif # TEST_LOAD_TYPE
+  endif # MPD_SOURCE_FULL_BUILD
+endif # DHL_SUPPORT
+
+ifeq ($(MPD_SOURCE_4G_BUILD),TRUE)
+  ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+    CODEGEN_DATABASE_OUT_4G = $(subst .EDB,_4G.EDB,$(strip $(MODISBUILD_TST_DB_4G))/$(strip $(MDDBINFOCUSTOM)))
+    CODEGEN_DATABASE_IN_4G  = $(CODEGEN_DATABASE_OUT_4G)
+  else
+    ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+      CODEGEN_DATABASE_OUT_4G = $(subst .EDB,_4G.EDB,$(strip $(MODISBUILD_TST_DB_4G))/$(strip $(MDDBINFOCUSTOM)))
+      CODEGEN_DATABASE_IN_4G  = $(CODEGEN_DATABASE_OUT_4G)
+    else
+      CODEGEN_DATABASE_OUT_4G = $(strip $(MODISBUILD_TST_DB_4G))/MDDB_4G.EDB
+      CODEGEN_DATABASE_IN_4G  = $(CODEGEN_DATABASE_OUT_4G)
+    endif
+  endif
+  INPUT_4G_DB = $(CODEGEN_DATABASE_IN_4G)
+else
+  ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+    INPUT_4G_DB = $(wildcard $(CUS_MTK_REL)/dhl/4g/database_modis/MDDB*)
+  else
+    INPUT_4G_DB = $(wildcard $(CUS_MTK_REL)/dhl/4g/database/MDDB*)
+  endif
+endif
+
+# CODEGEN_DATABASE_IN is the input file name of cgen database
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+        CODEGEN_DATABASE_IN = $(CUS_MTK_REL)/dhl/database/$(strip $(MDDBINFOCUSTOM))
+      else
+        CODEGEN_DATABASE_IN = $(CUS_MTK_REL)/tst/database/$(strip $(MDDBINFOCUSTOM))
+      endif
+    else
+      ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+        CODEGEN_DATABASE_IN = $(CUS_MTK_REL)/dhl/database_modis/$(strip $(MDDBINFOCUSTOM))
+      else
+        CODEGEN_DATABASE_IN = $(CUS_MTK_REL)/tst/database_modis/$(strip $(MDDBINFOCUSTOM))
+      endif
+    endif
+  else ifeq ($(wildcard $(CODEGEN_DATABASE_OUT)),)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+        CODEGEN_DATABASE_IN = $(CUS_MTK_REL)/dhl/database/$(strip $(MDDBINFOCUSTOM))
+      else
+        CODEGEN_DATABASE_IN = $(CUS_MTK_REL)/tst/database/$(strip $(MDDBINFOCUSTOM))
+      endif
+    else
+      ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+        CODEGEN_DATABASE_IN = $(CUS_MTK_REL)/dhl/database_modis/$(strip $(MDDBINFOCUSTOM))
+      else
+        CODEGEN_DATABASE_IN = $(CUS_MTK_REL)/tst/database_modis/$(strip $(MDDBINFOCUSTOM))
+      endif
+    endif
+  else
+    # remake with cgen should use generated database first after custom release, so as not to restore unchanged data to the default in full database
+    CODEGEN_DATABASE_IN = $(CODEGEN_DATABASE_OUT)    
+  endif
+else
+  ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      CODEGEN_DATABASE_IN = $(wildcard $(CUS_MTK_REL)/dhl/database/MDDB*)
+    else
+      CODEGEN_DATABASE_IN = $(wildcard $(CUS_MTK_REL)/dhl/database_modis/MDDB*)
+    endif
+  else ifeq ($(wildcard $(CODEGEN_DATABASE_OUT)),)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      CODEGEN_DATABASE_IN = $(wildcard $(CUS_MTK_REL)/dhl/database/MDDB*)
+    else
+      CODEGEN_DATABASE_IN = $(wildcard $(CUS_MTK_REL)/dhl/database_modis/MDDB*)
+    endif
+  else
+    CODEGEN_DATABASE_IN = $(CODEGEN_DATABASE_OUT)
+  endif
+endif
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+  CODEGEN_DATABASE_IN = $(CODEGEN_DATABASE_OUT)
+endif
+
+ifeq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+    CODEGEN_DATABASE_IN  = $(wildcard $(CUS_MTK_REL)/dhl/database_modis/MDDB_pc.EDB)
+    CODEGEN_DATABASE_OUT = $(strip $(MODISBUILD_TST_DB))/MDDB_pc.EDB
+else #linux
+  ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    CODEGEN_DATABASE_IN  = $(wildcard $(CUS_MTK_REL)/dhl/database/MDDB_*)
+    CODEGEN_DATABASE_OUT = $(strip $(MODISBUILD_TST_DB))/$(notdir $(wildcard $(CODEGEN_DATABASE_IN)))
+  else
+    CODEGEN_DATABASE_IN  = $(wildcard $(CUS_MTK_REL)/dhl/database/MDDB.EDB)
+    CODEGEN_DATABASE_OUT = $(strip $(MODISBUILD_TST_DB))/MDDB.EDB
+  endif
+endif
+endif
+
+CODEGEN_MDKEY = $(strip $(MODISBUILD_TST_DB))/$(strip $(patsubst %.EDB,%.KEY,$(patsubst MDDB_%,MDKEY_%,$(notdir $(CODEGEN_DATABASE_OUT)))))
+
+ifneq ($(strip $(TEST_LOAD_TYPE)),BASIC)
+  ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE) #MPD 5G cgen flow config
+      CODEGEN_PREPROCESS_MODEM     += $(MODIS_RULESDIR)/codegen_dep/libParseDbModem_sec.det
+      CODEGEN_PREPROCESS_MODEM     += $(MODIS_RULESDIR)/codegen_dep/gv_db_sec.det
+      CODEGEN_DEPENDENCY_MODEM_SEC += $(MODIS_RULESDIR)/codegen_dep/cgen_c_sec.det
+      CODEGEN_DEPENDENCY_MODEM_SEC += $(MODIS_RULESDIR)/codegen_dep/cgen_l1_sec.det
+      CODEGEN_DEPENDENCY_MODEM_SEC += $(MODIS_RULESDIR)/codegen_dep/cgen_gv_sec.det
+    ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+      CODEGEN_PREPROCESS_MODEM     += $(MODIS_RULESDIR)/codegen_dep/l1v_db_sec.det
+      CODEGEN_DEPENDENCY_MODEM_SEC += $(MODIS_RULESDIR)/codegen_dep/cgen_l1v_sec.det
+    endif
+      CODEGEN_PREPROCESS_MODEM     += $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_sec.det
+      CODEGEN_DEPENDENCY_MODEM_SEC += $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem_sec.det
+    ifeq ($(RUN_UMTS_GEN),TRUE)
+      CODEGEN_PREPROCESS_MODEM     += $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_sec.det
+      CODEGEN_DEPENDENCY_MODEM_SEC += $(MODIS_RULESDIR)/codegen_dep/cgen_un_sec.det
+    endif
+  endif
+
+  ifeq ($(MPD_SOURCE_4G_BUILD),TRUE) #MPD 4G cgen flow config
+      CODEGEN_PREPROCESS_MODEM    += $(MODIS_RULESDIR)/codegen_dep/libParseDbModem_4g.det
+      #CODEGEN_PREPROCESS_MODEM    += $(MODIS_RULESDIR)/codegen_dep/gv_db_4g.det
+      CODEGEN_DEPENDENCY_MODEM_4G += $(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem_4g.det
+      CODEGEN_DEPENDENCY_MODEM_4G += $(MODIS_RULESDIR)/codegen_dep/cgen_l1_4g.det
+      #CODEGEN_DEPENDENCY_MODEM_4G += $(MODIS_RULESDIR)/codegen_dep/cgen_gv_4g.det
+    ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+      CODEGEN_PREPROCESS_MODEM    += $(MODIS_RULESDIR)/codegen_dep/l1v_db_4g.det
+      CODEGEN_DEPENDENCY_MODEM_4G += $(MODIS_RULESDIR)/codegen_dep/cgen_l1v_4g.det
+    endif
+      CODEGEN_PREPROCESS_MODEM    += $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_4g.det
+      CODEGEN_DEPENDENCY_MODEM_4G += $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem_4g.det
+    ifeq ($(RUN_UMTS_GEN),TRUE)
+      CODEGEN_PREPROCESS_MODEM    += $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_4g.det
+      CODEGEN_DEPENDENCY_MODEM_4G += $(MODIS_RULESDIR)/codegen_dep/cgen_un_4g.det
+    endif
+  endif
+
+  ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+    ifeq ($(strip $(CUSTOM_RELEASE)),FALSE) #mpd cgen flow config
+      CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/libParseDbModem.det $(MODIS_RULESDIR)/codegen_dep/libParseDbModem_tdd_fdd.det
+      CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/gv_db.det 
+      CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/swParseDbModem.det
+      CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/custom_parse_db.det $(MODIS_RULESDIR)/codegen_dep/custom_parse_db_tdd_fdd.det
+      CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/srcParseDbModem.det $(MODIS_RULESDIR)/codegen_dep/srcParseDbModem_tdd_fdd.det
+
+      CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem.det
+      CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_gv.det
+      ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+        CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/l1v_db.det
+        CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_l1v.det
+      endif
+      CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_ap_swParseDbModem.det
+      CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_cm.det
+      CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_ap_srcParseDbModem.det
+      ifeq ($(RUN_UMTS_GEN),TRUE)
+        CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/unionTag_parse.det $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_tdd_fdd.det
+        CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_ext.det $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_tdd_fdd_ext.det
+        CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_un.det
+      endif
+      CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_l1.det
+      CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem.det
+      CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det
+        ifeq ($(strip $(C2K_RELEASE)),TRUE)
+          CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/gv_db_ext.det
+          CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_gv.det
+          ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+            CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_ext.det $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_tdd_fdd_ext.det
+            CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_un.det
+          endif
+        endif
+    else
+        #cus cgen flow config
+        CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/custom_parse_db.det $(MODIS_RULESDIR)/codegen_dep/custom_parse_db_tdd_fdd.det
+        CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem.det
+        CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_cm.det
+        CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem.det
+        CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det
+    endif
+  else #swrd cgen flow config
+    CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/swParseDbModem.det
+    CODEGEN_PREPROCESS_MODEM += $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem.det
+    CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_ap_swParseDbModem.det
+    CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_l1.det
+    CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem.det
+    CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det
+  endif
+
+   #for all domains
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det
+  else
+    ifeq ($(wildcard $(BUILD_TSTDIR)/src/tst_file_default_Catcher_filter.c),)
+      CODEGEN_DEPENDENCY_MODEM += $(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det
+    endif
+  endif
+
+endif
+
+
+CLEAN_CODEGEN_DEPENDENCY = $(filter-out $(MODIS_RULESDIR)/codegen_dep/nvram_% $(MODIS_RULESDIR)/codegen_dep/codegen.det,$(wildcard $(MODIS_RULESDIR)/codegen_dep/*.det))
+# mcf_gen depends on cgen database
+CLEAN_CODEGEN_DEPENDENCY += $(POSTGEN_DEP)/mcf_gen.det
+
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+  AUTO_CHECK_CGEN = TRUE
+endif
+
+ifeq ($(strip $(FPGA_L1_ROUTER_SUPPORT)),TRUE)
+  ifneq ($(call Upper,$(strip $(FIVEG_MODE_SUPPORT))),NONE)
+    EXTRA_COM_DEFS += -DL1_SIM
+  endif
+endif
+
+# CgenPreprocess
+# function: generate the makfile command for cgen preprocess
+# arguement 1: input source file to be preprocessed
+# arguement 2: output preprocessed result
+# arguement 3: output dependency file name, file path for cgen should be always r/codegen_dep
+define CgenPreprocess
+ifneq ($$(strip $$(AUTO_CHECK_CGEN)),TRUE)
+  $$(strip $$(MODIS_RULESDIR))/codegen_dep/$(3): FORCE
+else
+  -include $$(strip $$(MODIS_RULESDIR))/codegen_dep/./$(3)
+endif
+$$(strip $$(MODIS_RULESDIR))/codegen_dep/$(3): $(1) $$(NEED_CHECK_DEPEND_LIST)
+ifeq ($$(filter $$(MAKECMDGOALS),cgen_preprocess),)
+  # mbis time probe
+  ifeq ($$(strip $$(MBIS_EN)),TRUE)
+		@$$(ECHO) -n -t "T_S,$$@,T," >> $$(MBIS_BUILD_TIME_TMP)
+  endif
+endif
+	@$(ECHO) -n Preprocessing $(1) ...
+	@$$(IF_NOT_EXIST) $$(patsubst %/,%,$$(dir $(2))) $$(THEN) $$(MKDIR) $$(patsubst %/,%,$$(dir $(2))) $$(CMD_END)
+	@$$(IF_NOT_EXIST) $$(strip $$(TMPDIR))/~inc_def.tmp $$(THEN) $$(MAKE) -fmake/common/build.mak -r -R --no-print-directory $$(strip $$(TMPDIR))/~inc_def.tmp $$(CMD_END)
+ifneq ($$(strip $$(MODIS_CONFIG)),TRUE)
+  ifeq ($$(strip $$(COMPILER)),GCC)
+    ifeq ($$(strip $(4)),TRUE)
+	@(($$(CC) -E -W -DGEN_FOR_CPARSER -DGEN_FOR_PC $$(strip $$(EXTRA_COM_DEFS)) $$(VIA)$$(strip $$(TMPDIR))/~inc_fdd_def.tmp -USTDC_HEADERS -o $$(patsubst %.txt,%_fdd.txt,$$(patsubst %.db,%_fdd.db,$(2))) $(1) $$(DEPEND) $$(basename $$@).fdd.d 2>$$(basename $$@).log) $$(WITH) \
+		($$(IF_ERR_TRUE) $$(THEN) (($$(CAT) $$(basename $$@).log >>$$(CODE_GEN_LOG)) $$(WITH) (exit 1)) $$(CMD_END)))
+      ifeq ($$(strip $$(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@(($$(CC) -E -W -DGEN_FOR_CPARSER -DGEN_FOR_PC $$(strip $$(EXTRA_COM_DEFS)) $$(VIA)$$(strip $$(TMPDIR))/~inc_tdd_def.tmp -USTDC_HEADERS -o $$(patsubst %.txt,%_tdd.txt,$$(patsubst %.db,%_tdd.db,$(2))) $(1) $$(DEPEND) $$(basename $$@).tdd.d 2>$$(basename $$@).log) $$(WITH) \
+		($$(IF_ERR_TRUE) $$(THEN) (($$(CAT) $$(basename $$@).log >>$$(CODE_GEN_LOG)) $$(WITH) (exit 1)) $$(CMD_END)))
+      endif
+    else
+	@(($$(CC) -E -W -DGEN_FOR_CPARSER -DGEN_FOR_PC $$(strip $$(EXTRA_COM_DEFS)) $$(VIA)$$(strip $$(TMPDIR))/~inc_def.tmp -USTDC_HEADERS -o $(2) $(1) $$(DEPEND) $$(basename $$@).d 2>$$(basename $$@).log) $$(WITH) \
+		($$(IF_ERR_TRUE) $$(THEN) (($$(CAT) $$(basename $$@).log >>$$(CODE_GEN_LOG)) $$(WITH) (exit 1)) $$(CMD_END)))
+    endif
+  endif
+else
+  ifeq ($$(strip $$(MODIS_COMPILER)),VC2017) # vc2017
+    ifeq ($$(strip $(4)),TRUE) #tdd/fdd
+	@(($$(strip $$(WinLLVMDir))\clang-cl.exe /X /E /w /DGEN_FOR_CPARSER /DGEN_FOR_PC /USTDC_HEADERS /nologo @$$(strip $$(TMPDIR))/~inc_fdd_def.tmp $(1) >$$(patsubst %.txt,%_fdd.txt,$$(patsubst %.db,%_fdd.db,$(2))) 2>$$(basename $$@).log) $$(WITH) \
+		($$(IF_ERR_TRUE) $$(THEN) ($$(CAT) $$(basename $$@).log >>$$(CODE_GEN_LOG)) $$(WITH) (exit 1) $$(CMD_END)))
+	@$$(strip $$(WinLLVMDir))\clang.exe -MM -w -DGEN_FOR_CPARSER -DGEN_FOR_PC -USTDC_HEADERS @$$(strip $$(TMPDIR))/~inc_fdd_def.tmp $(1) -MT $$@ -MF $$(basename $$@).fdd.d
+      ifeq ($$(strip $$(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@(($$(strip $$(WinLLVMDir))\clang-cl.exe /X /E /w /DGEN_FOR_CPARSER /DGEN_FOR_PC /USTDC_HEADERS /nologo @$$(strip $$(TMPDIR))/~inc_tdd_def.tmp $(1) >$$(patsubst %.txt,%_tdd.txt,$$(patsubst %.db,%_tdd.db,$(2))) 2>$$(basename $$@).log) $$(WITH) \
+		($$(IF_ERR_TRUE) $$(THEN) ($$(CAT) $$(basename $$@).log >>$$(CODE_GEN_LOG)) $$(WITH) (exit 1) $$(CMD_END)))
+	@$$(strip $$(WinLLVMDir))\clang.exe -MM -w -DGEN_FOR_CPARSER -DGEN_FOR_PC -USTDC_HEADERS @$$(strip $$(TMPDIR))/~inc_tdd_def.tmp $(1) -MT $$@ -MF $$(basename $$@).tdd.d
+      endif
+    else #not tdd/fdd
+	@(($$(strip $$(WinLLVMDir))\clang-cl.exe /X /E /w /DGEN_FOR_CPARSER /DGEN_FOR_PC /USTDC_HEADERS /nologo @$$(strip $$(TMPDIR))/~inc_def.tmp $(1) >$(2) 2>$$(basename $$@).log) $$(WITH) \
+		($$(IF_ERR_TRUE) $$(THEN) ($$(CAT) $$(basename $$@).log >>$$(CODE_GEN_LOG)) $$(WITH) (exit 1) $$(CMD_END)))
+	@$$(strip $$(WinLLVMDir))\clang.exe -MM -w -DGEN_FOR_CPARSER -DGEN_FOR_PC -USTDC_HEADERS @$$(strip $$(TMPDIR))/~inc_def.tmp $(1) -MT $$@ -MF $$(basename $$@).d
+    endif
+  else ifeq ($$(strip $$(MODIS_COMPILER)),CLANG) # clang
+    ifeq ($$(strip $(4)),TRUE)
+	@$$(strip $$(ClangDir))/bin/clang -MM -w -DGEN_FOR_CPARSER -DGEN_FOR_PC -USTDC_HEADERS @$$(strip $$(TMPDIR))/~inc_fdd_def.tmp $(1) -MT $$@ -MF $$(basename $$@).fdd.d
+	@(($$(CC_MODIS) /E /w /DGEN_FOR_CPARSER /DGEN_FOR_PC /USTDC_HEADERS /nologo @$$(strip $$(TMPDIR))/~inc_fdd_def.tmp $(1) >$$(patsubst %.txt,%_fdd.txt,$$(patsubst %.db,%_fdd.db,$(2)))) $$(WITH) \
+		($$(IF_ERR_TRUE) $$(THEN) ($$(CAT) $$(basename $$@).log >>$$(CODE_GEN_LOG)) $$(WITH) (exit 1) $$(CMD_END)))
+      ifeq ($$(strip $$(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$$(strip $$(ClangDir))/bin/clang -MM -w -DGEN_FOR_CPARSER -DGEN_FOR_PC -USTDC_HEADERS @$$(strip $$(TMPDIR))/~inc_tdd_def.tmp $(1) -MT $$@ -MF $$(basename $$@).tdd.d
+	@(($$(CC_MODIS) /E /w /DGEN_FOR_CPARSER /DGEN_FOR_PC /USTDC_HEADERS /nologo @$$(strip $$(TMPDIR))/~inc_tdd_def.tmp $(1) >$$(patsubst %.txt,%_tdd.txt,$$(patsubst %.db,%_tdd.db,$(2)))) $$(WITH) \
+		($$(IF_ERR_TRUE) $$(THEN) ($$(CAT) $$(basename $$@).log >>$$(CODE_GEN_LOG)) $$(WITH) (exit 1) $$(CMD_END)))
+      endif
+    else
+	@$$(strip $$(ClangDir))/bin/clang -MM -w -DGEN_FOR_CPARSER -DGEN_FOR_PC -USTDC_HEADERS @$$(strip $$(TMPDIR))/~inc_def.tmp $(1) -MT $$@ -MF $$(basename $$@).d
+	@(($$(CC_MODIS) /E /w /DGEN_FOR_CPARSER /DGEN_FOR_PC /USTDC_HEADERS /nologo @$$(strip $$(TMPDIR))/~inc_def.tmp $(1) >$(2)) $$(WITH) \
+		($$(IF_ERR_TRUE) $$(THEN) ($$(CAT) $$(basename $$@).log >>$$(CODE_GEN_LOG)) $$(WITH) (exit 1) $$(CMD_END)))
+    endif
+  endif
+endif
+
+  ifeq ($$(strip $(4)),TRUE)
+	@perl ./tools/pack_dep_gen.pl $$@ $$@ $$(patsubst %/,%,$$(dir $$@)) "\b$$(basename $$(notdir $$@)).*\.d"
+  else
+	@perl ./tools/pack_dep_gen.pl $$@ $$@ $$(patsubst %/,%,$$(dir $$@)) "\b$$(basename $$(notdir $$@))\.d"
+  endif
+	@$$(IF_EXIST) $$(basename $$@).fdd.d $$(THEN) $$(DEL_FILE) $$(basename $$@).fdd.d $$(CMD_END)
+	@$$(IF_EXIST) $$(basename $$@).tdd.d $$(THEN) $$(DEL_FILE) $$(basename $$@).tdd.d $$(CMD_END)
+	@$$(IF_EXIST) $$(basename $$@).d     $$(THEN) $$(DEL_FILE) $$(basename $$@).d $$(CMD_END)
+
+	@$$(IF_EXIST) $$(basename $$@).log $$(THEN) $$(DEL_FILE) $$(basename $$@).log $$(CMD_END)
+ifeq ($$(filter $$(MAKECMDGOALS),cgen_preprocess),)
+	@$(ECHO) -n $$@  >>$$(CODE_GEN_LST)
+	@$(ECHO) -n $(2) >>$$(CODE_GEN_LST)
+  # mbis time probe
+  ifeq ($$(strip $$(MBIS_EN)),TRUE)
+		@$$(ECHO) -n -t "T_E,$$@,T," >> $$(MBIS_BUILD_TIME_TMP)
+  endif
+endif
+endef
+
+# *************************************************************************
+#  Tools code preprocess and generation
+# *************************************************************************
+ifeq ($(strip $(ACTION)),slim_codegen)
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+slim_codegen: cleanbin cleancodegen asngen umts_gen codegen asnregen
+  else
+slim_codegen: cleanbin cleancodegen asngen codegen asnregen
+  endif
+	@$(ECHO) -n Done.
+else
+  ## codegen
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  # [TATAKA Migrate] multi-mode
+code_generate: sysgen cleanbin cleancodegen mspm_gen mipc_gen icd_ac_gen eas_gen nras_gen rcdb_gen asngen umts_gen codegen asnregen mcddll_update
+  else
+  # [TATAKA Migrate] single-mode
+code_generate: sysgen cleanbin cleancodegen mspm_gen mipc_gen icd_ac_gen eas_gen nras_gen rcdb_gen asngen codegen
+  endif
+	@$(ECHO) -n Done.
+endif
+
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+ # [TATAKA Migrate] multi-mode
+ ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+codegen: ss_lcs_gen
+ endif
+codegen: gencustominfo nvram_edit_h_gen nvram_auto_gen genmoduleinfo cgen
+else
+# [TATAKA Migrate] single-mode
+codegen: nvram_edit_h_gen nvram_auto_gen genmoduleinfo cgen
+endif
+
+#update dsp cgen flow
+update_cgen_dsp: $(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det $(MODIS_RULESDIR)/codegen_dep/cgen_cfg_Modem.det
+
+# *************************************************************************
+# Target: rcdb_gen
+# request by CS2/Kuo-Wei
+# *************************************************************************
+rcdb_gen: $(PREGEN_DEP)/rcdb_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./rcdb_gen.det)
+else
+$(PREGEN_DEP)/rcdb_gen.det: FORCE
+endif
+$(PREGEN_DEP)/rcdb_gen.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(IF_NOT_EXIST)  $(strip $(PROJ_INTERNAL_DIR))  $(THEN) ($(MKDIR) $(strip $(PROJ_INTERNAL_DIR))) $(CMD_END)
+	@$(IF_EXIST) ${UNIVERSAL_COMMON}/tools/rcdb_gen/nr_fwk_rcdb_code_gen.pl $(THEN) \
+			((perl ${UNIVERSAL_COMMON}/tools/rcdb_gen/nr_fwk_rcdb_code_gen.pl $(strip $(PROJ_INTERNAL_DIR)) $@ > $(strip $(COMPLOGDIR))/rcdb_gen.log 2>&1) $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: rcdb_gen failed. Please check $(strip $(COMPLOGDIR))/rcdb_gen.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+  #delete target file for cleaning legacy code
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: umts_gen
+# 3G Codegen Gen Files: ASN and DBME
+# *************************************************************************
+umts_gen: $(PREGEN_DEP)/umts_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./umts_gen.det)
+else
+$(PREGEN_DEP)/umts_gen.det: FORCE
+endif
+$(PREGEN_DEP)/umts_gen.det:
+ifeq ($(RUN_UMTS_GEN),TRUE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    # FDD umts_gen
+	@$(CHDIR) protocol/3g/urr/urr_fdd $(AND) \
+	(perl urr_generate.pl --CC="$(strip $(CC))" --COMPILER=$(COMPILER) --feature=" $(UMTS_RELEASE_SUPPORT) UMTS_FDD_MODE_SUPPORT ULCS_ASN_SUPPORT_R99 $(REMOVE_DEBUG_INFO) " --deffile="../../../../$(INFOLOG)" --tst_src_path="$(MODIS_TST_DB)" --tst_dst_path="$(MODISBUILD_TST_DB)" --targetdir="$(PROJDIR)" --log_dir="$(strip $(COMPLOGDIR))" $@)
+	@$(CHDIR) protocol/3g/urr/urr_fdd $(AND) \
+	(perl lurr_generate.pl --CC="$(strip $(CC))" --COMPILER=$(COMPILER) --feature=" $(UMTS_RELEASE_SUPPORT) UMTS_FDD_MODE_SUPPORT ULCS_ASN_SUPPORT_R99 $(REMOVE_DEBUG_INFO) " --deffile="../../../../$(INFOLOG)" --tst_src_path="$(MODIS_TST_DB)" --tst_dst_path="$(MODISBUILD_TST_DB)" --targetdir="$(PROJDIR)" --log_dir="$(strip $(COMPLOGDIR))" $@)
+
+    # TDD umts_gen
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(CHDIR) protocol/3g/urr/urr_tdd $(AND) \
+	(perl urr_generate.pl --CC="$(strip $(CC))" --COMPILER=$(COMPILER) --feature=" $(UMTS_RELEASE_SUPPORT) UMTS_TDD128_MODE_SUPPORT ULCS_ASN_SUPPORT_R99 $(REMOVE_DEBUG_INFO) " --deffile="../../../../$(INFOLOG)"  --tst_src_path="$(MODIS_TST_DB)" --tst_dst_path="$(MODISBUILD_TST_DB)" --targetdir="$(PROJDIR)" --log_dir="$(strip $(COMPLOGDIR))" $@)
+	@$(CHDIR) protocol/3g/urr/urr_tdd $(AND) \
+	(perl lurr_generate.pl --CC="$(strip $(CC))" --COMPILER=$(COMPILER) --feature=" $(UMTS_RELEASE_SUPPORT) UMTS_TDD128_MODE_SUPPORT ULCS_ASN_SUPPORT_R99 $(REMOVE_DEBUG_INFO) " --deffile="../../../../$(INFOLOG)"  --tst_src_path="$(MODIS_TST_DB)" --tst_dst_path="$(MODISBUILD_TST_DB)" --targetdir="$(PROJDIR)" --log_dir="$(strip $(COMPLOGDIR))" $@)
+  endif
+else
+    # FDD umts_gen
+	@$(CHDIR) protocol/3g/urr/urr_fdd $(AND) \
+	(perl urr_generate.pl --CC="$(CC_MODIS)" --COMPILER=$(MODIS_COMPILER) --feature=" $(UMTS_RELEASE_SUPPORT) UMTS_FDD_MODE_SUPPORT ULCS_ASN_SUPPORT_R99 MoDIS " --deffile="../../../../$(INFOLOG_MODIS)" --tst_src_path="$(MODIS_TST_DB)" --tst_dst_path="$(MODISBUILD_TST_DB)" --targetdir="$(PROJDIR)" --log_dir="$(strip $(MODISLOGDIR))" $@)
+    # TDD umts_gen
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(CHDIR) protocol/3g/urr/urr_tdd $(AND) \
+	(perl urr_generate.pl --CC="$(CC_MODIS)" --COMPILER=$(MODIS_COMPILER) --feature=" $(UMTS_RELEASE_SUPPORT) UMTS_TDD128_MODE_SUPPORT ULCS_ASN_SUPPORT_R99 MoDIS " --deffile="../../../../$(INFOLOG_MODIS)"  --tst_src_path="$(MODIS_TST_DB)" --tst_dst_path="$(MODISBUILD_TST_DB)" --targetdir="$(PROJDIR)" --log_dir="$(strip $(MODISLOGDIR))" $@)
+  endif
+endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# Target: mspm_gen
+# gen mspm common header/source by csv table setting
+# *************************************************************************
+mspm_gen: $(PREGEN_DEP)/mspm_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./mspm_gen.det)
+else
+$(PREGEN_DEP)/mspm_gen.det: FORCE
+endif
+$(PREGEN_DEP)/mspm_gen.det:
+ifneq ($(wildcard protocol/as_multimode/asinterfaces/mspm_proc_gen_tbl/mspm_procedure_table.csv),)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(IF_EXIST) tools/mspm_gen_proc_tbl.pl $(THEN) \
+			((perl tools/mspm_gen_proc_tbl.pl "$(strip $(PROJECT_MAKEFILE))" TARGET $(PROJDIR) $(strip $(COMPLOGDIR)) $@> $(strip $(COMPLOGDIR))/mspm_gen_tbl.log) $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: generate mspm files Failed. Please check $(strip $(COMPLOGDIR))/mspm_gen_tbl.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+else
+	@$(IF_EXIST) tools/mspm_gen_proc_tbl.pl $(THEN) \
+			((perl tools/mspm_gen_proc_tbl.pl "$(strip $(PROJECT_MAKEFILE))" MODIS $(MODISPROJDIR)/_BUILD_XGEN $(strip $(MODISPROJDIR))/_BUILD_LOG $@ > $(strip $(MODISPROJDIR))/_BUILD_LOG/mspm_gen_tbl.log) $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: generate mspm files Failed. Please check $(strip $(MODISPROJDIR))/_BUILD_LOG/mspm_gen_tbl.log $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif# wildcard csv file
+
+# *************************************************************************
+# Target: mipc_gen
+# 
+# *************************************************************************
+mipc_gen: $(PREGEN_DEP)/mipc_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./mipc_gen.det)
+else
+$(PREGEN_DEP)/mipc_gen.det: FORCE
+endif
+$(PREGEN_DEP)/mipc_gen.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+  ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(IF_EXIST) mtk_tools/MIPC/host_release.pl $(THEN) \
+		((perl mtk_tools/MIPC/host_release.pl $(PROJDIR) $(strip $(INFOMAKELOG)) $@> $(strip $(COMPLOGDIR))/mipc_gen.log) $(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: generate mipc files Failed. Please check $(strip $(COMPLOGDIR))/mipc_gen.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+  else #Windows
+	@$(IF_EXIST) mtk_tools/MIPC/host_release_modis.pl $(THEN) \
+		((perl mtk_tools/MIPC/host_release_modis.pl $(PROJDIR) $(strip $(INFOMAKELOG)) $@> $(strip $(COMPLOGDIR))/mipc_gen.log) $(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: generate mipc files Failed. Please check $(strip $(COMPLOGDIR))/mipc_gen.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+  endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+else #CUSTOM_RELEASE is TRUE
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/modem/mipc $(THEN) ($(MKDIR) $(strip $(PROJDIR))/modem/mipc) $(CMD_END)
+	$(COPY_FILE) $(strip $(CUS_MTK_REL))/modem/mipc/mipc.release.tar.gz $(strip $(PROJDIR))/modem/mipc
+endif 
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+
+# *************************************************************************
+# Target: icd_ac_gen
+# *************************************************************************
+icd_ac_gen: $(PREGEN_DEP)/icd_ac_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./icd_ac_gen.det)
+else
+$(PREGEN_DEP)/icd_ac_gen.det: FORCE
+endif
+$(PREGEN_DEP)/icd_ac_gen.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/modem/icd_ac_gen $(THEN) ($(MKDIR) $(strip $(PROJDIR))/modem/icd_ac_gen) $(CMD_END)
+	@python ./tools/icd_ac_gen/icd_ac_gen.py -i interface/service/icd -o $(strip $(PROJDIR))/modem/icd_ac_gen > $(strip $(COMPLOGDIR))/icd_ac_gen.log 2>&1 $(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: mspm_gen icd_ac_gen failed. Please check $(strip $(COMPLOGDIR))/icd_ac_gen.log $(WITH) exit 1) $(CMD_END)
+
+  ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+  endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: eas_gen
+# To generate LTE asn.1 codec library by LTE asn.1 compiler
+# *************************************************************************
+eas_gen: $(PREGEN_DEP)/eas_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./eas_gen.det)
+else
+$(PREGEN_DEP)/eas_gen.det: FORCE
+endif
+$(PREGEN_DEP)/eas_gen.det:
+ifneq ($(wildcard protocol/eas/eas_generate.pl),)
+ifeq ($(RUN_EAS_GEN),TRUE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(CHDIR) $(strip $(EAS_FOLDER)) $(AND) \
+	((perl eas_generate.pl --feature="$(strip $(LTE_RELEASE_SUPPORT))" --targetdir="$(PROJDIR)" --log_dir="$(strip $(COMPLOGDIR))" --depTarget="$@") $(WITH) \
+	$(IF_ERR_TRUE) $(THEN) (echo Error: eas_gen Failed. Please check $(strip $(COMPLOGDIR))/eas_gen.log $(WITH) exit 1) $(CMD_END))
+  else
+	@$(CHDIR) $(strip $(EAS_FOLDER)) $(AND) \
+	((perl eas_generate.pl --feature="$(strip $(LTE_RELEASE_SUPPORT))" --targetdir="$(PROJDIR)" --log_dir="$(strip $(MODISLOGDIR))" --depTarget="$@") $(WITH)\
+	$(IF_ERR_TRUE) $(THEN) (echo Error: eas_gen Failed. Please check $(strip $(MODISLOGDIR))/eas_gen.log $(WITH) exit 1) $(CMD_END))
+  endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+  #delete target file for cleaning legacy code
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif # ENDIF RUS_EAS_GEN
+endif
+
+# *************************************************************************
+# TARGET: nras_gen
+# To generate NR ASN.1 codec library by NR ASN.1 compiler
+# *************************************************************************
+nras_gen: $(PREGEN_DEP)/nras_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./nras_gen.det)
+else
+$(PREGEN_DEP)/nras_gen.det: FORCE
+endif
+$(PREGEN_DEP)/nras_gen.det:
+ifneq ($(wildcard protocol/nras/nrrc_asn1_generate.pl),)
+ifeq ($(RUN_NRAS_GEN),TRUE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(CHDIR) $(strip $(NRAS_FOLDER)) $(AND) \
+	((perl nrrc_asn1_generate.pl --feature="$(strip $(NR_RELEASE_SUPPORT))" --targetdir="$(PROJDIR)" --log_dir="$(strip $(COMPLOGDIR))" --depTarget="$@" --spec_ver="$(strip $(MTK_3GPP_SPEC_VER))") $(WITH) \
+	$(IF_ERR_TRUE) $(THEN) (echo Error: nras_gen Failed. Please check $(strip $(COMPLOGDIR))/nras_gen.log $(WITH) exit 1) $(CMD_END))
+  else
+	@$(CHDIR) $(strip $(NRAS_FOLDER)) $(AND) \
+	((perl nrrc_asn1_generate.pl --feature="$(strip $(NR_RELEASE_SUPPORT))" --targetdir="$(PROJDIR)" --log_dir="$(strip $(MODISLOGDIR))" --depTarget="$@" --spec_ver="$(strip $(MTK_3GPP_SPEC_VER))") $(WITH)\
+	$(IF_ERR_TRUE) $(THEN) (echo Error: nras_gen Failed. Please check $(strip $(MODISLOGDIR))/nras_gen.log $(WITH) exit 1) $(CMD_END))
+  endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+  #delete target file for cleaning legacy code
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif # ENDIF RUN_NRAS_GEN
+endif
+
+# ---------------------------------------
+# SS LCS Codegen Gen Files: ASN
+# ---------------------------------------
+ss_lcs_gen: $(PREGEN_DEP)/ss_lcs_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./ss_lcs_gen.det)
+else
+$(PREGEN_DEP)/ss_lcs_gen.det: FORCE
+endif
+$(PREGEN_DEP)/ss_lcs_gen.det:
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(strip $(GEN_SSDIR)) $(THEN) ($(MKDIR) $(strip $(GEN_SSDIR))) $(CMD_END)
+	@$(CHDIR) protocol/layer4/l4/csm/ss/tools $(AND) \
+		(perl ss_lcs_generate.pl $(strip $(GEN_SSDIR)) $@ > ../../../../../../$(strip $(COMPLOGDIR))/ss_lcs_generate.log 2>&1) $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: ss_lcs_gen Failed. Please check $(strip $(COMPLOGDIR))/ss_lcs_generate.log $(WITH) exit 1) $(CMD_END))
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+  #delete target file for cleaning legacy code
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: temp add
+# *************************************************************************
+$(strip $(TMPDIR))/~mcddll_inc.tmp $(strip $(TMPDIR))/~lte_mcddll_inc.tmp: $(strip $(MAKE_COMMON))/xgeninc.mak $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(STRCMPEX) inc inc e $@ $(foreach inc,$(XGEN_INC_DIR),$(inc))
+	@perl ./tools/lnitem.pl $@
+	@$(ECHO) -n "$@" >> $(CODE_GEN_LST)
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: mcddll_update
+# *************************************************************************
+mcddll_update: $(POSTGEN_DEP)/mcddll_update.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(POSTGEN_DEP)/./mcddll_update.det)
+else
+$(POSTGEN_DEP)/mcddll_update.det: FORCE
+endif
+$(POSTGEN_DEP)/mcddll_update.det:
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+ifneq ($(filter TRUE,$(RUN_MCDDLL_UPDATE) $(RUN_MCDDLL_UPDATE_L4)),)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(POSTGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(POSTGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_postcgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(COMPLOGDIR) $(THEN) ($(MKDIR) $(COMPLOGDIR)) $(CMD_END)
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~def.tmp $(foreach def,$(sort $(COM_DEFS)),$(def))
+	@perl ./tools/lnitem.pl $(strip $(TMPDIR))/~def.tmp
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory  GAS_FOLDER=protocol/2g/gas UAS_FOLDER=protocol/3g/urr/urr_fdd XGEN_SWITCH_FDD_TDD=FDD $(strip $(TMPDIR))/~mcddll_inc.tmp
+
+	@($(ECHO) -n "[ COMMON OPTION ]" > $(MCDDLL_INFOLOG)) $(AND) \
+		($(CAT) $(strip $(TMPDIR))/~def.tmp >> $(MCDDLL_INFOLOG))
+	@($(ECHO) -n "[ COMMON INCLUDE PATH ]" >> $(MCDDLL_INFOLOG)) $(AND) \
+		($(CAT) $(strip $(TMPDIR))/~mcddll_inc.tmp >> $(MCDDLL_INFOLOG))
+	@$(IF_EXIST) $(MCDDLL_INFOLOG) $(THEN)\
+		($(IF_NOT_EXIST) $(strip $(PROJDIR))/modem/mcddll $(THEN) \
+			($(MKDIR) $(strip $(PROJDIR))/modem/mcddll) $(AND) \
+			($(COPY_FILE) $(MCDDLL_INFOLOG) $(strip $(PROJDIR))/modem/mcddll > $(DEV_NUL)) \
+		$(CMD_END))\
+	$(CMD_END)
+
+ifeq ($(strip $(RUN_MCDDLL_UPDATE)),TRUE)
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@perl protocol/as_utility/mcddll/updatemcddll_mingw.pl --PROJECT="$(strip $(PROJECT_MAKEFILE))" --L4=0 --MODE="TARGET" --VERNO=$(strip $(VERNO)) --HW_VERSION=$(strip $(PLATFORM))_$(strip $(CHIP_VER)) --PROJDIR=$(PROJDIR) --BUILD_L4_DIR=$(BUILD_L4DIR) --MINGW_DIR=$(MinGWDir) --COMPLOGDIR=$(COMPLOGDIR) --SMARTNEW=$@ 2> $(MCDDLL_UPDATE_LOG) \
+	$(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: $@ Failed! Please check $(strip $(MCDDLL_UPDATE_LOG)) $(WITH) exit 1) $(CMD_END)
+  else
+	@perl protocol/as_utility/mcddll/updatemcddll_mingw.pl --PROJECT="$(strip $(PROJECT_MAKEFILE))" --L4=0 --MODE=MoDIS --VERNO=$(strip $(VERNO)) --HW_VERSION=$(MODIS_UESIM) --PROJDIR=$(PROJDIR) --BUILD_L4_DIR=$(BUILD_L4DIR) --MINGW_DIR=$(MinGWDir) --COMPLOGDIR=$(MODISLOGDIR) --SMARTNEW=$@ 2> $(MCDDLL_UPDATE_LOG) \
+	$(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: $@ Failed! Please check $(strip $(MCDDLL_UPDATE_LOG)) $(WITH) exit 1) $(CMD_END)
+  endif
+	@$(COPY_FILE) $(strip $(PROJDIR))/modem/mcddll/mcddll.dll $(strip $(MODISBUILD_TST_DB))/mcddll.dll >$(DEV_NUL)
+else ifeq ($(strip $(RUN_MCDDLL_UPDATE_L4)),TRUE)
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@perl protocol/as_utility/mcddll/updatemcddll_mingw.pl --PROJECT="$(strip $(PROJECT_MAKEFILE))" --L4=1 --MODE="TARGET" --VERNO=$(strip $(VERNO)) --HW_VERSION=$(strip $(PLATFORM))_$(strip $(CHIP_VER)) --PROJDIR=$(PROJDIR) --BUILD_L4_DIR=$(BUILD_L4DIR) --REL_DIR=$(CUS_MTK_REL) --MINGW_DIR=$(MinGWDir) --COMPLOGDIR=$(COMPLOGDIR) --SMARTNEW=$@ 2> $(MCDDLL_UPDATE_LOG) \
+	$(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: $@ Failed! Please check $(strip $(MCDDLL_UPDATE_LOG)) $(WITH) exit 1) $(CMD_END)
+  else
+	@perl protocol/as_utility/mcddll/updatemcddll_mingw.pl --PROJECT="$(strip $(PROJECT_MAKEFILE))" --L4=1 --MODE=MoDIS --VERNO=$(strip $(VERNO)) --HW_VERSION=$(MODIS_UESIM) --PROJDIR=$(PROJDIR) --BUILD_L4_DIR=$(BUILD_L4DIR) --REL_DIR=$(CUS_MTK_REL) --MINGW_DIR=$(MinGWDir) --COMPLOGDIR=$(MODISLOGDIR) --SMARTNEW=/$@ 2> $(MCDDLL_UPDATE_LOG) \
+	$(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: $@ Failed! Please check $(strip $(MCDDLL_UPDATE_LOG)) $(WITH) exit 1) $(CMD_END)
+  endif
+	@$(COPY_FILE) $(strip $(PROJDIR))/modem/mcddll/mcddll.dll $(strip $(MODISBUILD_TST_DB))/mcddll.dll >$(DEV_NUL)
+else
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+		@$(COPY_FILE) $(strip $(CUS_MTK_REL))/tst/database/mcddll.dll $(strip $(MODISBUILD_TST_DB))/mcddll.dll >$(DEV_NUL)
+  else
+		@$(COPY_FILE) $(strip $(CUS_MTK_REL))/tst/database_modis/mcddll.dll $(strip $(MODISBUILD_TST_DB))/mcddll.dll >$(DEV_NUL)
+  endif
+endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+  #delete target file for cleaning legacy code
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common,tdd >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common,tdd\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+else
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+endif # GERAN_MODE_SUPPORT
+
+# *************************************************************************
+# TARGET: asngen_l4
+# Generate the ASN L4 codec template files for project
+# *************************************************************************
+asngen_l4: gen_infolog $(PREGEN_DEP)/asngen_l4.det
+
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./asngen_l4.det)
+else
+$(PREGEN_DEP)/asngen_l4.det: FORCE
+endif
+$(PREGEN_DEP)/asngen_l4.det:
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+  # To generate protocol/interface/asn/l4/gen_mcd_l4_common.asn
+	@perl protocol/tools/pre_mcdparser.pl --CC="$(CC)" --COMPILER=$(COMPILER) $(foreach def, $(MCD_DEFS),--SYMBOL=-D$(def) --PROJDIR="$(PROJDIR)" --DEPTARGET="$@")
+	@$(ECHO) -n "Generate L4 ASN Gen Files 1st Phase ..."
+	@$(CHDIR) protocol/tools $(AND) \
+	(perl ./mcdparser.pl mcd_l4.ini --only="$(strip $(PROJECT_MAKEFILE))" --deffile="../../$(INFOLOG)" --tstpath="$(MODISBUILD_TST_DB)" --PROJDIR="$(PROJDIR)" --DEPTARGET="$@") 
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+  #delete target file for cleaning legacy code
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif #CUSTOM_RELEASE
+endif #not BASIC
+
+# *************************************************************************
+# TARGET: asngen
+# Generate the ASN codec template files for project
+# *************************************************************************
+asngen: gen_infolog asngen_l4 $(PREGEN_DEP)/asngen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./asngen.det)
+else
+$(PREGEN_DEP)/asngen.det: FORCE
+endif
+$(PREGEN_DEP)/asngen.det:
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+		@$(ECHO) -n "Generate ASN Gen Files 1st Phase ..."
+		@$(CHDIR) protocol/tools $(AND) \
+		(perl ./mcdparser.pl mcd.ini --only="$(strip $(PROJECT_MAKEFILE))" --deffile="../../$(INFOLOG)" --tstpath="$(MODISBUILD_TST_DB)" --PROJDIR="$(PROJDIR)" --DEPTARGET="$@") 
+		@($(ECHO) -n "Compiling Csi ASN files...") $(AND) \
+		$(CHDIR) protocol/as_utility/scsi/gen $(AND) \
+		(perl ./scsi_generate.pl --CC=$(CC) --COMPILER=$(COMPILER) --feature=" $(UMTS_RELEASE_SUPPORT) " --PROJDIR=$(PROJDIR) --DEPTARGET="$@") 
+		@$(ECHO) -n "Compilation Csi ASN files done ..."
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+  #delete target file for cleaning legacy code
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif #CUSTOM_RELEASE
+endif #not BASIC
+
+# *************************************************************************
+# TARGET: asnregens
+# *************************************************************************
+asnregen: gen_infolog $(POSTGEN_DEP)/asnregen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(POSTGEN_DEP)/./asnregen.det)
+else
+$(POSTGEN_DEP)/asnregen.det: FORCE
+endif
+$(POSTGEN_DEP)/asnregen.det:
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+ifeq ($(RUN_ASNREGEN),TRUE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+	@$(ECHO) -n "Generate ASN Gen Files 2nd Phase ..."
+
+	@$(IF_NOT_EXIST) $(strip $(POSTGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(POSTGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+#		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" > $@
+  endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/modem/mcd_bak $(THEN) \
+		($(MKDIR) $(strip $(PROJDIR))/modem/mcd_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(strip $(PROJDIR))/modem/mcd_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(PROJDIR))/modem/mcd_bak/*.*  $(CMD_END))\
+	$(CMD_END)
+	@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcd/mcd_table.c $(THEN) \
+		mv $(strip $(PROJDIR))/modem/mcd/mcd_table.c $(strip $(PROJDIR))/modem/mcd_bak/mcd_table.c >$(DEV_NUL) \
+	$(CMD_END)
+	@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcd/mcd_msr.h $(THEN) \
+		mv $(strip $(PROJDIR))/modem/mcd/mcd_msr.h $(strip $(PROJDIR))/modem/mcd_bak/mcd_msr.h >$(DEV_NUL) \
+	$(CMD_END)
+endif
+
+  ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+    ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+	@$(IF_NOT_EXIST) $(BUILD_TST_DB)/enumFile $(THEN) ($(IF_EXIST) $(MODISBUILD_TST_DB)/enumFile $(THEN) ($(COPY_FILE) $(MODISBUILD_TST_DB)/enumFile $(BUILD_TST_DB)/enumFile >$(DEV_NUL)) $(CMD_END)) $(CMD_END)
+    else
+	@$(IF_NOT_EXIST) $(BUILD_TST_DB)/enumFileCustomAppSrc $(THEN) ($(IF_EXIST) $(MODISBUILD_TST_DB)/enumFileCustomAppSrc $(THEN) ($(COPY_FILE) $(MODISBUILD_TST_DB)/enumFileCustomAppSrc $(BUILD_TST_DB)/enumFileCustomAppSrc >$(DEV_NUL)) $(CMD_END)) $(CMD_END)
+    endif
+  endif
+
+  ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+	-@$(CHDIR) protocol/tools $(AND) \
+	(perl mcdparser.pl mcd.ini --only="$(strip $(PROJECT_MAKEFILE))" --only=for_catcher --deffile="../../$(INFOLOG)" --tstpath="$(MODISBUILD_TST_DB)" --PROJDIR="$(PROJDIR)" --DEPTARGET="$@")
+  else
+	-@$(CHDIR) protocol/tools $(AND) \
+	(perl mcdparser.pl mcd.ini --only="$(strip $(PROJECT_MAKEFILE))" --only=for_catcher --deffile="../../$(INFOLOG)" --custom  --tstpath="$(MODISBUILD_TST_DB)" --PROJDIR="$(PROJDIR)" --DEPTARGET="$@")
+  endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcd_bak/mcd_table.c $(THEN) \
+		(($(COMPARE) $(strip $(PROJDIR))/modem/mcd/mcd_table.c $(strip $(PROJDIR))/modem/mcd_bak/mcd_table.c >$(DEV_NUL) 2>&1) $(WITH) \
+			($(IF_ERR_FALSE) $(THEN) \
+				(touch -r $(strip $(PROJDIR))/modem/mcd_bak/mcd_table.c $(strip $(PROJDIR))/modem/mcd/mcd_table.c >$(DEV_NUL)) $(AND) \
+				(echo $(strip $(PROJDIR))/modem/mcd_bak/mcd_table.c timestamp is changed from $(strip $(PROJDIR))/modem/mcd_bak/mcd_table.c!) \
+			$(CMD_END))) \
+	$(CMD_END)
+
+	@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcd_bak/mcd_msr.h $(THEN) \
+		(($(COMPARE) $(strip $(PROJDIR))/modem/mcd/mcd_msr.h $(strip $(PROJDIR))/modem/mcd_bak/mcd_msr.h >$(DEV_NUL) 2>&1) $(WITH) \
+			($(IF_ERR_FALSE) $(THEN) \
+				(touch -r $(strip $(PROJDIR))/modem/mcd_bak/mcd_msr.h $(strip $(PROJDIR))/modem/mcd/mcd_msr.h >$(DEV_NUL)) $(AND) \
+				(echo $(strip $(PROJDIR))/modem/mcd_bak/mcd_msr.h timestamp is changed from $(strip $(PROJDIR))/modem/mcd_bak/mcd_msr.h!) \
+			$(CMD_END))) \
+	$(CMD_END)
+	@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcd_bak $(THEN) ($(DEL_DIR) $(strip $(PROJDIR))/modem/mcd_bak) $(CMD_END)
+endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+endif # GERAN_MODE_SUPPORT
+
+# *************************************************************************
+# TARGET: nvram_edit_h_gen
+# *************************************************************************
+nvram_edit_h_gen: $(strip $(PROJDIR))/nvram_auto_gen/nvram_editor.h
+include $(wildcard $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_editor.det)
+$(strip $(PROJDIR))/nvram_auto_gen/nvram_editor.h:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(strip $(RULESDIR_TARGET))/codegen_dep $(THEN) $(MKDIR) $(strip $(RULESDIR_TARGET))/codegen_dep $(CMD_END)
+	@$(IF_EXIST) $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_editor.det $(THEN) ($(DEL_FILE) $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_editor.det) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/nvram_auto_gen $(THEN) $(MKDIR) $(strip $(PROJDIR))/nvram_auto_gen $(CMD_END)
+	@$(IF_EXIST) ./tools/NVRAMStatistic/nvram_edit_gen.mak $(THEN)\
+		($(MAKE) -f ./tools/NVRAMStatistic/nvram_edit_gen.mak -r -R NVRAM_EDITOR_H_TO_DB NVRAM_AUTO_GEN_PATH=$(strip $(PROJDIR)) > $(strip $(COMPLOGDIR))/nvram_edit_h_gen.log 2>&1) \
+	$(CMD_END)
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_editor.det $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_editor.det common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_editor.det $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_editor.det common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_editor.det. Please check $(strip $(COMPLOGDIR))/genJson.log $(WITH) exit 1)\
+		$(CMD_END))
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: genmoduleinfo
+# Generate module.lis/inc/def in $MODULELIS
+# *************************************************************************
+genmoduleinfo: genlog gencompbld gencategorymapping
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(MODULEINFODIR) $(THEN) ($(MKDIR) $(MODULEINFODIR)) $(CMD_END)
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(IF_NOT_EXIST) $(MODISLOGDIR)/modis_setup $(THEN) $(MKDIR) $(MODISLOGDIR)/modis_setup $(CMD_END)
+	@$(MAKE) -fmake/common/build.mak -r -R $(CMD_ARGU) --no-print-directory AUTO_CHECK_DEPEND=$(AUTO_CHECK_DEPEND) AUTO_CHECK_CGEN=$(AUTO_CHECK_CGEN) MODIS_CONFIG=$(strip $(MODIS_CONFIG)) MODIS_UESIM=$(strip $(MODIS_UESIM)) genmoduleinfo_start
+	@$(ECHO) -n setup $(strip $(MODIS_UESIM)) env is done
+else
+	@$(IF_NOT_EXIST) $(strip $(COMPLOGDIR))/module_info $(THEN) $(MKDIR) $(strip $(COMPLOGDIR))/module_info $(CMD_END)
+	@$(CHK_TIME)
+	@$(MAKE) -fmake/common/build.mak -r -R $(CMD_ARGU) --no-print-directory AUTO_CHECK_DEPEND=$(AUTO_CHECK_DEPEND) AUTO_CHECK_CGEN=$(AUTO_CHECK_CGEN) genmoduleinfo_start
+	@$(ECHO) -n "Generating .lis and .def files are done"
+	@$(CHK_TIME)
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: gencategorymapping
+# *************************************************************************
+gencategorymapping:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@perl ./tools/gencategorymapping.pl $(strip $(TMPDIR))/~categorymapping.mak
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+# *************************************************************************
+# TARGET: genmoduleinfo_start
+# *************************************************************************
+genmoduleinfo_start: $(ALL_MODULELIS)
+	@$(ECHO) -n genmoduleinfo is done.
+
+# *************************************************************************
+# TARGET: %.lis
+# *************************************************************************
+%.lis:
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n setup $(strip $(MODIS_UESIM)) env of $*
+	@($(MAKE) -fmake/common/comp.mak -k -r -R TMPDIR=$(strip $(TMPDIR)) $(strip $(CMD_ARGU)) --no-print-directory COMPONENT=$* GEN_MODULE_INFO=TRUE setup_env >$(MODISLOGDIR)/modis_setup/$*_setEnv.log 2>&1) $(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: $@ Failed! Please check $(MODISLOGDIR)/modis_setup/$*_setEnv.log $(WITH) exit 1) $(CMD_END)
+else
+	@($(MAKE) -fmake/common/comp.mak -k -r -R TMPDIR=$(strip $(TMPDIR)) $(strip $(CMD_ARGU)) --no-print-directory COMPONENT=$* GEN_MODULE_INFO=TRUE setup_env > $(strip $(COMPLOGDIR))/module_info/$*_module_info.log 2>&1) $(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: $@ Failed! Please check $(strip $(COMPLOGDIR))/module_info/$*_module_info.log $(WITH) exit 1) $(CMD_END)
+
+	@$(ECHO) -n Generate $* information
+endif
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+# backup .def for incremental build
+	@$(IF_EXIST) $(strip $(MODULEINFODIR))/$*/$*.def.bak $(THEN) \
+		(($(COMPARE) $(strip $(MODULEINFODIR))/$*/$*.def.bak $(strip $(MODULEINFODIR))/$*/$*.def >$(DEV_NUL) 2>&1) $(WITH) \
+			($(IF_ERR_FALSE) $(THEN) \
+				(touch -r $(strip $(MODULEINFODIR))/$*/$*.def.bak $(strip $(MODULEINFODIR))/$*/$*.def >$(DEV_NUL)) \
+			$(CMD_END))) $(AND) \
+		($(DEL_FILE) $(strip $(MODULEINFODIR))/$*/$*.def.bak) \
+	$(CMD_END)
+endif
+
+# *************************************************************************
+# Target: nvram_auto_gen
+# *************************************************************************
+nvram_auto_gen:
+ifneq ($(filter __MOD_NVRAM__,$(strip $(COM_DEFS))),)
+nvram_auto_gen: $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_auto_gen.det
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+cgen: $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_auto_gen.det
+endif
+
+# *************************************************************************
+# Target: (strip $(RULESDIR_TARGET))/codegen_dep/nvram_auto_gen.det:
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(strip $(RULESDIR_TARGET))/codegen_dep/nvram_auto_gen.det: FORCE
+else
+  -include $(strip $(RULESDIR_TARGET))/codegen_dep/./nvram_auto_gen.det
+endif
+$(strip $(RULESDIR_TARGET))/codegen_dep/nvram_auto_gen.det: $(strip $(PROJDIR))/nvram_auto_gen/nvram_editor.h
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+ifeq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+	-@$(ECHO) -n $@: $?
+endif
+	@$(IF_NOT_EXIST) $(strip $(RULESDIR_TARGET)) $(THEN) \
+		($(MKDIR) $(strip $(RULESDIR_TARGET))) \
+	$(ELSE) \
+		($(IF_EXIST) $(strip $(RULESDIR_TARGET))/nvram_auto_gen.dep $(THEN) \
+			$(DEL_FILE) $(strip $(RULESDIR_TARGET))/nvram_auto_gen.dep \
+		$(CMD_END)) \
+	$(CMD_END)
+
+	@$(IF_NOT_EXIST) $(patsubst %/,%,$(dir $@)) $(THEN) \
+		($(MKDIR) $(patsubst %/,%,$(dir $@))) \
+	$(ELSE) \
+		($(IF_EXIST) $@ $(THEN) $(DEL_FILE) $@ \
+		$(CMD_END)) \
+	$(CMD_END)
+
+ifeq ($(strip $(OS_VERSION)),MSWin32)
+	@$(STRCMPEX) TRUE TRUE e $(strip $(TMPDIR))/~cus_opt.tmp $(foreach def,$(sort $(COM_DEFS_TARGET)),$(def) )
+else
+	@$(STRCMPEX) TRUE TRUE e $(strip $(TMPDIR))/~cus_opt.tmp $(foreach def,$(sort $(COM_DEFS_TARGET)),-D \"$(def)\")
+endif
+
+	@$(STRCMPEX) TRUE TRUE e $(strip $(TMPDIR))/~inc.tmp $(foreach inc,$(XGEN_INC_DIR_TARGET),$(inc))
+ifneq ($(filter __MOD_NVRAM__,$(strip $(COM_DEFS))),)
+	@$(IF_NOT_EXIST) $(strip $(BUILD_TST_DB))/pstrace_db $(THEN) ($(MKDIR) $(strip $(BUILD_TST_DB))/pstrace_db) $(CMD_END)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/pstrace_db     $(THEN) ($(MKDIR) $(MODISBUILD_TST_DB)/pstrace_db) $(CMD_END)
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/CompTrcDefs.lst $(THEN) ($(DEL_FILE) $(MODISBUILD_TST_DB)/CompTrcDefs.lst) $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/nvram_auto_gen         $(THEN) ($(MKDIR) $(strip $(PROJDIR))/nvram_auto_gen)         $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/cksysdrv               $(THEN) ($(MKDIR) $(strip $(PROJDIR))/cksysdrv)               $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/nvram_auto_gen/include $(THEN) ($(MKDIR) $(strip $(PROJDIR))/nvram_auto_gen/include) $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/nvram_auto_gen/debug   $(THEN) ($(MKDIR) $(strip $(PROJDIR))/nvram_auto_gen/debug)   $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/nvram_auto_gen/debug_target   $(THEN) ($(MKDIR) $(strip $(PROJDIR))/nvram_auto_gen/debug_target)   $(CMD_END)
+
+ifeq ($(strip $(OS_VERSION)),MSWin32)
+	@perl ./tools/lnitem.pl $(strip $(TMPDIR))/~cus_opt.tmp
+	@$(IF_EXIST) $(strip $(PROJDIR))/nvram_auto_gen/include/custom_option.txt $(THEN) ($(DEL_FILE) $(strip $(PROJDIR))/nvram_auto_gen/include/custom_option.txt) $(CMD_END)
+	@$(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TMPDIR))/~cus_opt.tmp` \
+	$(DO) \
+			$(ECHO) -n "#define $(PRE_VAR)i" >> $(strip $(PROJDIR))/nvram_auto_gen/include/~custom_option.tmp \
+	$(DONE)
+	@perl ./tools/replace_string.pl $(strip $(PROJDIR))/nvram_auto_gen/include/~custom_option.tmp = " " $(strip $(PROJDIR))/nvram_auto_gen/include/custom_option.txt
+	@$(ECHO) -n OS_VERSION = $(strip $(OS_VERSION)) > $(strip $(PROJDIR))/nvram_auto_gen/include/custom_include.txt
+	@$(ECHO) CUSTOM_INC = >> $(strip $(PROJDIR))/nvram_auto_gen/include/custom_include.txt
+else
+	@$(ECHO) -n OS_VERSION = $(strip $(OS_VERSION)) > $(strip $(PROJDIR))/nvram_auto_gen/include/custom_option.txt
+	@$(ECHO) CUSTOM_OPTION = >> $(strip $(PROJDIR))/nvram_auto_gen/include/custom_option.txt
+	@$(CAT) $(strip $(TMPDIR))/~cus_opt.tmp >> $(strip $(PROJDIR))/nvram_auto_gen/include/custom_option.txt
+	@$(ECHO) CUSTOM_INC = > $(strip $(PROJDIR))/nvram_auto_gen/include/custom_include.txt
+endif
+
+	@$(COPY_FILE) $(strip $(TMPDIR))/~inc.tmp $(strip $(TMPDIR))/~inc.tmp.tmp
+	@perl ./tools/lnitem.pl $(strip $(TMPDIR))/~inc.tmp.tmp 
+	@$(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(TMPDIR))/~inc.tmp.tmp` \
+	$(DO) \
+			$(ECHO) " " -I "$(subst \,/,$(PRE_VAR)i)"  >> $(strip $(PROJDIR))/nvram_auto_gen/include/custom_include.txt \
+	$(DONE)
+
+   #Output NVRAM info
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/nvram_gen.log $(THEN) ($(DEL_FILE) $(strip $(COMPLOGDIR))/nvram_gen.log) $(CMD_END)
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/nvram_gen_full_log.log $(THEN) ($(DEL_FILE) $(strip $(COMPLOGDIR))/nvram_gen_full_log.log) $(CMD_END)
+	@$(LIST_DIR) "$(strip $(PROJDIR))/nvram_auto_gen/debug/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(PROJDIR))/nvram_auto_gen/debug/*.*  $(CMD_END)
+
+   ifeq ($(strip $(OS_VERSION)),MSWin32)
+		@$(IF_EXIST) ./tools/NVRAMStatistic/nvram_auto_gen.mak $(THEN)\
+			("tools\MSYS\bin\make.exe" -e -f ./tools/NVRAMStatistic/nvram_auto_gen.mak -r -R -j 1 nvram_auto_gen_build PROJECT_MAKEFILE="$(strip $(PROJECT_MAKEFILE))" NVRAM_AUTO_GEN_PATH=$(strip $(PROJDIR))/nvram_auto_gen 1> $(strip $(COMPLOGDIR))/nvram_gen_full_log.log 2>$(strip $(COMPLOGDIR))/nvram_gen.log) \
+		$(CMD_END)
+       ifneq ($(strip $(NVRAM_AUTOGEN_V2)), TRUE)	
+			@$(IF_EXIST) $(PROJDIR)/nvram_auto_gen/nvram_auto_gen.exe $(THEN)\
+			("$(strip $(PROJDIR))/nvram_auto_gen/nvram_auto_gen.exe" $(strip $(PROJDIR)) $(strip $(OS_VERSION)) 1 >> $(strip $(COMPLOGDIR))/nvram_gen_full_log.log 2>>$(strip $(COMPLOGDIR))/nvram_gen.log)\
+		$(CMD_END)
+       else
+            # nvram autogen v2
+			@python ./tools/NVRAMStatistic/autogen_v2/run.py -p $(strip $(PROJDIR)) 1 >> $(strip $(COMPLOGDIR))/nvram_gen_full_log.log 2>>$(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) \
+				$(IF_ERR_TRUE) $(THEN) (echo Error: nvram_auto_gen failed. Please check $(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) exit 1) $(CMD_END)
+       endif
+
+   else
+		@$(IF_EXIST) ./tools/NVRAMStatistic/nvram_auto_gen.mak $(THEN)\
+			($(MAKE) -f ./tools/NVRAMStatistic/nvram_auto_gen.mak -r -R -j 1 nvram_auto_gen_build PROJECT_MAKEFILE="$(strip $(PROJECT_MAKEFILE))" NVRAM_AUTO_GEN_PATH=$(strip $(PROJDIR))/nvram_auto_gen > $(strip $(COMPLOGDIR))/nvram_gen_full_log.log 2>$(strip $(COMPLOGDIR))/nvram_gen.log) $(WITH)\
+			$(IF_ERR_TRUE) $(THEN) (echo Error: nvram_auto_gen failed. Please check $(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) exit 1) $(CMD_END) \
+		$(CMD_END)
+
+    ifneq ($(strip $(NVRAM_AUTOGEN_V2)), TRUE)
+		@$(IF_EXIST) $(PROJDIR)/nvram_auto_gen/nvram_auto_gen $(THEN)\
+			("$(strip $(PROJDIR))/nvram_auto_gen/nvram_auto_gen" $(strip $(PROJDIR)) $(strip $(OS_VERSION)) 1 >> $(strip $(COMPLOGDIR))/nvram_gen_full_log.log 2>>$(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: nvram_auto_gen failed. Please check $(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) exit 1) $(CMD_END))\
+		$(CMD_END)
+    else
+        # nvram autogen v2
+		@python ./tools/NVRAMStatistic/autogen_v2/run.py -p $(strip $(PROJDIR)) 1 >> $(strip $(COMPLOGDIR))/nvram_gen_full_log.log 2>>$(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: nvram_auto_gen failed. Please check $(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) exit 1) $(CMD_END)
+    endif
+   endif
+
+	@perl ./tools/NVRAMStatistic/nvram_usage_check.pl $(strip $(COMPLOGDIR))/nvram_usage_check.log $@ >> $(strip $(COMPLOGDIR))/nvram_gen_full_log.log 2>>$(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: nvram_usage_check failed. Please check $(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) exit 1) $(CMD_END)
+
+  ifneq ($(strip $(NVRAM_AUTOGEN_V2)),TRUE)
+		@perl ./tools/pack_dep_gcc.pl $(RULESDIR_TARGET)/nvram_auto_gen.dep $(PROJDIR)/nvram_auto_gen/debug $(HTOGETHER) $(strip $(HEADER_TEMP))
+  else
+		@perl ./tools/pack_dep_gcc.pl $(RULESDIR_TARGET)/nvram_auto_gen.dep $(PROJDIR)/nvram_auto_gen/debug_target $(HTOGETHER) $(strip $(HEADER_TEMP))
+  endif
+
+	@$(IF_EXIST) $(PROJDIR)/nvram_auto_gen/nvram_lid_statistics_bak.h $(THEN) \
+		($(COPY_FILE) $(PROJDIR)/nvram_auto_gen/nvram_lid_statistics_bak.h $(PROJDIR)/nvram_auto_gen/nvram_lid_statistics.h >$(DEV_NUL)) $(CMD_END)
+endif
+
+  ifneq ($(strip $(NVRAM_AUTOGEN_V2)),TRUE)
+		@perl ./tools/pack_dep_gen.pl $@ $@ $(PROJDIR)/nvram_auto_gen/debug "\.d"
+  else
+		@perl ./tools/pack_dep_gen.pl $@ $@ $(PROJDIR)/nvram_auto_gen/debug_target "\.d"
+  endif
+
+	@$(ECHO) -n "$@: $(strip $(PROJDIR))/nvram_auto_gen/nvram_editor.h" >> $@
+	@$(ECHO) -n "$@: tools/NVRAMStatistic/nvram_lid_check.pl"           >> $@
+	@$(ECHO) -n "$@: tools/NVRAMStatistic/nvram_usage_check.pl"         >> $@
+
+ifneq ($(PCIBT_ACTION_LIST),)
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) "tools/NVRAMStatistic/src/nvram_auto_gen.c" $@ $(PCIBT_ACTION_LIST) 2>>$(strip $(COMPLOGDIR))/nvram_gen.log
+endif
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/MDDB_InfoCustomAppSrc.EDB $(THEN) ($(DEL_FILE) $(MODISBUILD_TST_DB)/MDDB_InfoCustomAppSrc.EDB) $(CMD_END)
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: cgen
+# *************************************************************************
+cgen: $(MODIS_RULESDIR)/codegen_dep/cgen_preflow.det
+cgen_preprocess: $(CODEGEN_PREPROCESS_MODEM)
+ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+  ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE)
+cgen_cfg: $(CODEGEN_DEPENDENCY_MODEM_SEC)
+  endif
+  ifeq ($(MPD_SOURCE_4G_BUILD),TRUE)
+cgen_cfg: $(CODEGEN_DEPENDENCY_MODEM_4G)
+  endif
+endif
+cgen_cfg: $(CODEGEN_DEPENDENCY_MODEM) $(MODIS_RULESDIR)/codegen_dep/cgen_cfg_Modem.det
+
+CODEGEN_PREPROCESS_TEST := PARALLEL
+ifneq ($(strip $(CODEGEN_PREPROCESS_TEST)),PARALLEL)
+  ifneq ($(strip $(CODEGEN_DEPENDENCY_MODEM)),)
+cgen: cgen_cfg
+  endif
+else
+cgen: FORCE
+  ifneq ($(strip $(CODEGEN_DEPENDENCY_MODEM)),)
+    # mbis time probe
+    ifeq ($(strip $(MBIS_EN)),TRUE)
+			@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+    endif
+	@$(MAKE) -fmake/common/build.mak -r -R $(CMD_ARGU) --no-print-directory SMART_CHECK=$(SMART_CHECK) AUTO_CHECK_DEPEND=$(AUTO_CHECK_DEPEND) AUTO_CHECK_CGEN=$(AUTO_CHECK_CGEN) MODIS_CONFIG=$(strip $(MODIS_CONFIG)) MODIS_UESIM=$(strip $(MODIS_UESIM)) RUN_CGEN_L1=$(RUN_CGEN_L1) cgen_preprocess
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory SMART_CHECK=$(SMART_CHECK) AUTO_CHECK_DEPEND=$(AUTO_CHECK_DEPEND) AUTO_CHECK_CGEN=TRUE MODIS_CONFIG=$(strip $(MODIS_CONFIG)) MODIS_UESIM=$(strip $(MODIS_UESIM)) RUN_CGEN_L1=$(RUN_CGEN_L1) cgen_cfg
+    # mbis time probe
+    ifeq ($(strip $(MBIS_EN)),TRUE)
+			@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+    endif
+  endif
+endif
+
+# *************************************************************************
+# TARGET: cgen
+# Step 1: Preprocess
+# *************************************************************************
+TRCGEN_LIST = $(strip $(LOGGING_DATABASE))/TrcGen.lst
+
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_preflow.det: FORCE
+else
+  -include $(MODIS_RULESDIR)/codegen_dep/./codegen.det
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_preflow.det: $(strip $(TRCGEN_LIST)) $(NEED_CHECK_DEPEND_LIST) $(VERNOFILE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+ifneq ($(strip $(CLEAN_CODEGEN_DEPENDENCY)),)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(CLEAN_CODEGEN_DEPENDENCY) $(DO) \
+		($(IF_EXIST) $(PRE_VAR)i $(THEN) $(DEL_FILE) $(PRE_VAR)i $(CMD_END)) \
+	$(DONE)
+endif
+
+	@$(IF_EXIST) $(strip $(CGEN_CFG_MODEM)) $(THEN) $(DEL_FILE) $(strip $(CGEN_CFG_MODEM)) $(CMD_END)
+	@$(IF_EXIST) $(strip $(CGEN_CFG_MODEM_SEC)) $(THEN) $(DEL_FILE) $(strip $(CGEN_CFG_MODEM_SEC)) $(CMD_END)
+	@$(IF_EXIST) $(strip $(POSTGEN_CFG_MODEM)) $(THEN) $(DEL_FILE) $(strip $(POSTGEN_CFG_MODEM)) $(CMD_END)
+ifneq ($(wildcard $(MODISBUILD_TST_DB)/*MDDB*),)
+	@$(DEL_FILE) $(strip $(MODISBUILD_TST_DB)/*MDDB*)
+endif
+
+	@$(IF_EXIST) $(strip $(CODE_GEN_LOG)) $(THEN) $(DEL_FILE) $(strip $(CODE_GEN_LOG)) $(CMD_END)
+	@$(ECHO) -n "Check Directories ..."
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB) $(THEN) $(MKDIR) $(MODISBUILD_TST_DB) $(CMD_END)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/msglog_db $(THEN) $(MKDIR) $(MODISBUILD_TST_DB)/msglog_db $(CMD_END)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/pstrace_db $(THEN) $(MKDIR) $(MODISBUILD_TST_DB)/pstrace_db $(CMD_END)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/unionTag $(THEN) $(MKDIR) $(MODISBUILD_TST_DB)/unionTag $(CMD_END)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/unionTag/ext $(THEN) $(MKDIR) $(MODISBUILD_TST_DB)/unionTag/ext $(CMD_END)
+	@$(IF_NOT_EXIST) $(patsubst %/,%,$(dir $@)) $(THEN) $(MKDIR) $(patsubst %/,%,$(dir $@)) $(CMD_END)
+
+ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+  ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB_SEC) $(THEN) $(MKDIR) $(MODISBUILD_TST_DB_SEC) $(CMD_END)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB_SEC)/msglog_db  $(THEN) $(MKDIR) $(MODISBUILD_TST_DB_SEC)/msglog_db $(CMD_END)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB_SEC)/pstrace_db $(THEN) $(MKDIR) $(MODISBUILD_TST_DB_SEC)/pstrace_db $(CMD_END)
+  endif
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory gen_sfini
+else
+	@$(IF_NOT_EXIST) $(MODISLOGDIR) $(THEN) $(MKDIR) $(MODISLOGDIR) $(CMD_END)
+endif
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/CompTrcDefs.lst $(THEN) $(DEL_FILE) $(MODISBUILD_TST_DB)/CompTrcDefs.lst $(CMD_END)
+
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+	@$(IF_NOT_EXIST) $(CODEGEN_DATABASE_OUT) $(THEN) ($(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_c.det $(THEN) ($(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_c.det)$(CMD_END)) $(CMD_END) 
+endif
+
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory GAS_FOLDER=protocol/2g/gas UAS_FOLDER=protocol/3g/urr/urr_fdd XGEN_SWITCH_FDD_TDD=FDD $(strip $(TMPDIR))/~inc_fdd_def.tmp
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory GAS_FOLDER=protocol/2g/gas_tdd UAS_FOLDER=protocol/3g/urr/urr_tdd XGEN_SWITCH_FDD_TDD=TDD $(strip $(TMPDIR))/~inc_tdd_def.tmp
+  endif
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory $(strip $(TMPDIR))/~inc_def.tmp
+	@$(ECHO) -n  "$@: $(NEED_CHECK_DEPEND_LIST)" >>$@
+	@$(ECHO) -n  "$@" >>$(CODE_GEN_LST)
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+	@python ./tools/icd_header_converter.py -p "./interface/service/icd" -proj "$(PROJECT_NAME)" -flavor "$(FLAVOR)"
+  endif
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(strip $(TMPDIR))/~inc_def.tmp
+# *************************************************************************
+$(strip $(TMPDIR))/~inc_def.tmp: FORCE
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~inc_def.tmp $(foreach def,$(COM_DEFS) __NULL_DEF__,-D$(def))
+	@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~inc.tmp $(foreach inc,$(subst \,/,$(XGEN_INC_DIR)),-I$(inc))
+else
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~inc_def.tmp -D__NULL_DEF__
+	@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~inc.tmp $(foreach inc,$(XGEN_INC_DIR),-I$(inc))
+endif
+	@perl ./tools/echoLongString2.pl $(strip $(TMPDIR))/~inc_def.tmp -D $(COM_DEF_PATH)
+	@$(CAT) "$(strip $(TMPDIR))/~inc.tmp" >>$(strip $(TMPDIR))/~inc_def.tmp
+	@$(IF_EXIST) $(strip $(TMPDIR))/~inc.tmp $(THEN) $(DEL_FILE) $(strip $(TMPDIR))/~inc.tmp $(CMD_END)
+	@$(ECHO) -n "$(strip $(TMPDIR))/~inc_def.tmp" >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(strip $(TMPDIR))/~inc_def_no_inc.tmp
+# *************************************************************************
+$(strip $(TMPDIR))/~inc_def_no_inc.tmp: FORCE
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~inc_def_no_inc.tmp -D__NULL_DEF__
+	@perl ./tools/echoLongString2.pl $(strip $(TMPDIR))/~inc_def_no_inc.tmp -D $(COM_DEF_PATH)
+	@$(ECHO) -n "$(strip $(TMPDIR))/~inc_def_no_inc.tmp" >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(strip $(TMPDIR))/~inc_fdd_def.tmp
+# *************************************************************************
+$(strip $(TMPDIR))/~inc_fdd_def.tmp: FORCE
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~inc_fdd_def.tmp $(foreach def,$(filter-out  __CGEN_UMTS_TDD128_MODE__,$(COM_DEFS)) __NULL_DEF__ __CGEN_UMTS_FDD_MODE__,-D$(def))
+	@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~inc_fdd.tmp $(foreach inc,$(XGEN_INC_DIR),-I$(inc))
+	@perl ./tools/echoLongString2.pl $(strip $(TMPDIR))/~inc_fdd_def.tmp -D $(filter-out %uas_tdd128.def %gas_tdd128.def, $(ALL_MODULEDEF))
+	@$(CAT) "$(strip $(TMPDIR))/~inc_fdd.tmp" >>$(strip $(TMPDIR))/~inc_fdd_def.tmp
+	@$(IF_EXIST) $(strip $(TMPDIR))/~inc_fdd.tmp $(THEN) $(DEL_FILE) $(strip $(TMPDIR))/~inc_fdd.tmp $(CMD_END)
+	@$(ECHO) -n "$(strip $(TMPDIR))/~inc_fdd_def.tmp" >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(strip $(TMPDIR))/~inc_tdd_def.tmp
+# *************************************************************************
+$(strip $(TMPDIR))/~inc_tdd_def.tmp: FORCE
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~inc_tdd_def.tmp $(foreach def,$(filter-out __CGEN_UMTS_FDD_MODE__ ,$(COM_DEFS)) __NULL_DEF__ __CGEN_UMTS_TDD128_MODE__,-D$(def))
+	@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~inc_tdd.tmp $(foreach inc,$(XGEN_INC_DIR),-I$(inc))
+	@perl ./tools/echoLongString2.pl $(strip $(TMPDIR))/~inc_tdd_def.tmp -D $(filter-out %uas.def %gas.def, $(ALL_MODULEDEF))
+	@$(CAT) "$(strip $(TMPDIR))/~inc_tdd.tmp" >>$(strip $(TMPDIR))/~inc_tdd_def.tmp
+	@$(IF_EXIST) $(strip $(TMPDIR))/~inc_tdd.tmp $(THEN) $(DEL_FILE) $(strip $(TMPDIR))/~inc_tdd.tmp $(CMD_END)
+	@$(ECHO) -n "$(strip $(TMPDIR))/~inc_tdd_def.tmp" >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+ifeq ($(MPD_SOURCE_4G_BUILD),TRUE)
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/msglog_db/libParseDbModem_4g.c,$(MODISBUILD_TST_DB_4G)/msglog_db/libParseDbModem_4g.db,libParseDbModem_4g.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/gv/4g/gv_db_4g.c,$(MODISBUILD_TST_DB_4G)/gv/gv_db/gv_db_4g.gv,gv_db_4g.det))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/unionTag/4g/unionTag_db_4g.c,$(MODISBUILD_TST_DB_4G)/unionTag/unionTag_parse_4g.txt,unionTag_parse_4g.det))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/l1validation_db/4g/l1v_db_4g.c,$(MODISBUILD_TST_DB_4G)/l1validation_db/l1v_db/l1v_db_4g.l1v,l1v_db_4g.det))
+endif
+
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/msglog_db/libParseDbModem.c,$(MODISBUILD_TST_DB)/msglog_db/libParseDbModem.db,libParseDbModem.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/msglog_db/srcParseDbModem.c,$(MODISBUILD_TST_DB)/msglog_db/srcParseDbModem.db,srcParseDbModem.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/msglog_db/custom_parse_db.c,$(MODISBUILD_TST_DB)/msglog_db/custom_parse_db.db,custom_parse_db.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/msglog_db/libParseDbModem_tdd_fdd.c,$(MODISBUILD_TST_DB)/msglog_db/libParseDbModem.db,libParseDbModem_tdd_fdd.det,TRUE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/msglog_db/srcParseDbModem_tdd_fdd.c,$(MODISBUILD_TST_DB)/msglog_db/srcParseDbModem.db,srcParseDbModem_tdd_fdd.det,TRUE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/msglog_db/custom_parse_db_tdd_fdd.c,$(MODISBUILD_TST_DB)/msglog_db/custom_parse_db.db,custom_parse_db_tdd_fdd.det,TRUE))
+$(eval $(call CgenPreprocess,$(strip $(LOGGING_DATABASE))/msglog_db/swParseDbModem.c,$(MODISBUILD_TST_DB)/msglog_db/swParseDbModem.db,swParseDbModem.det,FALSE))
+ifneq ($(strip $(C2K_RELEASE)),TRUE)
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/gv/gv_db.c,$(MODISBUILD_TST_DB)/gv/gv_db/gv_db.gv,gv_db.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/unionTag/unionTag_db_tdd_fdd.c,$(MODISBUILD_TST_DB)/unionTag/unionTag_parse.txt,unionTag_parse_tdd_fdd.det,TRUE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/unionTag/unionTag_db.c,$(MODISBUILD_TST_DB)/unionTag/unionTag_parse.txt,unionTag_parse.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/unionTag/ext/unionTag_db_tdd_fdd_ext.c,$(MODISBUILD_TST_DB)/unionTag/ext/unionTag_parse.txt,unionTag_parse_tdd_fdd_ext.det,TRUE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/unionTag/ext/unionTag_db_ext.c,$(MODISBUILD_TST_DB)/unionTag/ext/unionTag_parse.txt,unionTag_parse_ext.det,FALSE))
+else
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/gv/gv_db.c,$(MODISBUILD_TST_DB)/gv/gv_db/gv_db.gv,gv_db.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/gv/ext/gv_db_ext.c,$(MODISBUILD_TST_DB)/gv/gv_db_ext/gv_db_ext.gv,gv_db_ext.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/unionTag/unionTag_db_tdd_fdd.c,$(MODISBUILD_TST_DB)/unionTag/unionTag_parse.txt,unionTag_parse_tdd_fdd.det,TRUE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/unionTag/unionTag_db.c,$(MODISBUILD_TST_DB)/unionTag/unionTag_parse.txt,unionTag_parse.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/unionTag/ext/unionTag_db_ext.c,$(MODISBUILD_TST_DB)/unionTag/ext/unionTag_parse.txt,unionTag_parse_ext.det,FALSE))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/unionTag/ext/unionTag_db_tdd_fdd_ext.c,$(MODISBUILD_TST_DB)/unionTag/ext/unionTag_parse.txt,unionTag_parse_tdd_fdd_ext.det,TRUE))
+endif
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR))/database/l1validation_db/l1v_db.c,$(MODISBUILD_TST_DB)/l1validation_db/l1v_db/l1v_db.l1v,l1v_db.det,FALSE))
+# LTE SEC Cgen preprocess
+ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+  ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE)
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR_SEC))/database/msglog_db/libParseDbModem.c,$(MODISBUILD_TST_DB_SEC)/msglog_db/libParseDbModem_sec.db,libParseDbModem_sec.det))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR_SEC))/database/gv/gv_db.c,$(MODISBUILD_TST_DB_SEC)/gv/gv_db/gv_db_sec.gv,gv_db_sec.det))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR_SEC))/database/unionTag/unionTag_db.c,$(MODISBUILD_TST_DB_SEC)/unionTag/unionTag_parse_sec.txt,unionTag_parse_sec.det))
+$(eval $(call CgenPreprocess,$(strip $(TSTDIR_SEC))/database/l1validation_db/l1v_db.c,$(MODISBUILD_TST_DB_SEC)/l1validation_db/l1v_db/l1v_db_sec.l1v,l1v_db_sec.det))
+  endif
+endif
+
+#MPD 4g
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem_4g.det
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem_4g.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem_4g.det: $(MODIS_RULESDIR)/codegen_dep/libParseDbModem_4g.det
+$(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem_4g.det: $(strip $(TSTDIR))/database/$(CGEN_DEF_FILE) $(strip $(TSTDIR))/database/Pc_Cnf $(strip $(VERNOFILE)) $(strip $(PROJECT_MAKEFILE)) $(CGEN) $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(CODEGEN_DEPENDENCY_MODEM_4G) $(CODEGEN_DEPENDENCY_MODEM) $(DO) \
+		($(IF_EXIST) $(PRE_VAR)i $(THEN) $(DEL_FILE) $(PRE_VAR)i $(CMD_END)) \
+	$(DONE)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) $(ECHO) -n "$@" > $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(CMD_END)
+
+	@$(ECHO) -n "Generate 4G Base Information ..."
+	@$(IF_EXIST) $(MODISBUILD_TST_DB_4G)/$(MDDBINFOCUSTOMPREFIX)* $(THEN) $(DEL_FILE) "$(MODISBUILD_TST_DB_4G)/*$(MDDBINFOCUSTOMPREFIX)*" $(CMD_END)
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src $(THEN) $(MKDIR) $(BUILD_TSTDIR)/src $(CMD_END)
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n "$(CGEN) -ap11 $(CODEGEN_DATABASE_OUT_4G) $(CODEGEN_DATABASE_IN_SEC) $(MODISBUILD_TST_DB_4G)/msglog_db/libParseDbModem_4g.db $(MODISBUILD_TST_DB)/enumFile4G" >$(CGEN_CFG_MODEM_4G)
+else
+	@$(ECHO) -n $(CGEN) -ap11 $(CODEGEN_DATABASE_OUT_4G) $(CODEGEN_DATABASE_IN_SEC) $(MODISBUILD_TST_DB_4G)/msglog_db/libParseDbModem_4g.db $(MODISBUILD_TST_DB)/enumFile4G >$(CGEN_CFG_MODEM_4G)
+endif
+	@$(ECHO) -n "$@: $(strip $(TSTDIR))/database/$(CGEN_DEF_FILE) $(strip $(TSTDIR))/database/Pc_Cnf $(strip $(VERNOFILE)) $(strip $(PROJECT_MAKEFILE)) $(strip $(VERNOFILE))" >>$@
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_l1_4g.det
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_l1_4g.det: FORCE
+else
+  -include $(MODIS_RULESDIR)/codegen_dep/./cgen_l1_4g.det
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_l1_4g.det: $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/include $(THEN) $(MKDIR) $(BUILD_TSTDIR)/include $(CMD_END)
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src     $(THEN) $(MKDIR) $(BUILD_TSTDIR)/src $(CMD_END)
+	@$(IF_NOT_EXIST) $(CGEN_L1_OUTDIR)       $(THEN) $(MKDIR) $(CGEN_L1_OUTDIR) $(CMD_END)
+
+#backup dhl/include/*.h
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/include_bak $(THEN) \
+		($(MKDIR) $(BUILD_TSTDIR)/include_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(BUILD_TSTDIR)/include_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(BUILD_TSTDIR)/include_bak/*.* $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(BUILD_TSTDIR)/include/*.h" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(BUILD_TSTDIR)/include/*.h $(BUILD_TSTDIR)/include_bak/ >$(DEV_NUL) $(CMD_END))
+
+#backup dhl/src
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src_bak $(THEN) \
+		($(MKDIR) $(BUILD_TSTDIR)/src_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(BUILD_TSTDIR)/src_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(BUILD_TSTDIR)/src_bak/*.* $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(BUILD_TSTDIR)/src/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(BUILD_TSTDIR)/src/*.* $(BUILD_TSTDIR)/src_bak/ >$(DEV_NUL) $(CMD_END))
+
+#backup l1trace
+	@$(IF_NOT_EXIST) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak $(THEN) \
+		($(MKDIR) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/*.* $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(strip $(PROJ_INTERNAL_DIR))/l1trace/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(strip $(PROJ_INTERNAL_DIR))/l1trace/*.* $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/ >$(DEV_NUL) $(CMD_END))
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+	@$(ECHO) -n "Generate 4G L1 Trace Information ..."
+  ifeq ($(strip $(RUN_CGEN_L1)),TRUE)
+    ifneq ($(strip $(UTMD_FILES_4G)),)
+			@$(IF_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) \
+				($(ECHO) -n "$(CGEN) -uL1 $(CODEGEN_DATABASE_OUT_4G) $(CODEGEN_DATABASE_IN_4G) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(UTMD_FILES_4G) -OutputCPath-$(CGEN_L1_OUTDIR)/" >>$(CGEN_CFG_MODEM_4G)) \
+			$(ELSE) \
+				($(ECHO) -n "$(CGEN) -rL1 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(UTMD_FILES_4G) -OutputCPath-$(CGEN_L1_OUTDIR)/" >>$(CGEN_CFG_MODEM_4G)) \
+			$(CMD_END)
+			@$(STRCMPEX) abc abc e $@ $@: $(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES_4G)))
+			@$(FOR) $(DECLARE_VAR)i $(IN) $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES_4G))), $(CGEN_L1_OUTDIR)/$(notdir $(basename $(utmd_file))).c $(BUILD_TSTDIR)/include/$(notdir $(basename $(utmd_file))).h) $(DO) (echo $(PRE_VAR)i >>$(CODE_GEN_LST)) $(DONE)
+    endif
+  else
+    ifeq ($(strip $(OS_VERSION)),MSWin32)
+			@for %%i in ($(subst /,\,$(BUILD_TSTDIR)/include/TrcMod.h) $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES_4G))),$(subst /,\,$(BUILD_TSTDIR)/include/$(notdir $(basename $(utmd_file)).h)))) do (if not exist %%i copy /y NUL %%i >NUL)
+    else
+			@touch -a $(BUILD_TSTDIR)/include/TrcMod.h $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES_4G))),$(BUILD_TSTDIR)/include/$(notdir $(basename $(utmd_file)).h))
+    endif
+  endif
+endif
+	@$(ECHO) -n "$@:" >> $@
+	@$(ECHO) -n "$@"  >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_gv_4g.det
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_gv_4g.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_gv_4g.det: $(MODIS_RULESDIR)/codegen_dep/cgen_gv_4g.det $(GV_FILES_4G) $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(ECHO) -n "Generate 4G Global variable Information ..."
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n "$(CGEN) -gv $(CODEGEN_DATABASE_OUT_4G) $(CODEGEN_DATABASE_IN_4G) $(MODISBUILD_TST_DB_4G)/gv/gv_db/ $(BUILD_TSTDIR)/src/gvTbl.c" >>$(CGEN_CFG_MODEM_4G)
+	@$(ECHO) -n "$(BUILD_TSTDIR)/src/gvTbl.c" >>$(CODE_GEN_LST)
+else
+	@$(ECHO) -n $(CGEN) -gv $(CODEGEN_DATABASE_OUT_4G) $(CODEGEN_DATABASE_IN_4G) $(MODISBUILD_TST_DB_SEC)/gv/gv_db/ $(BUILD_TSTDIR)/src/gvTbl_modis.c >>$(CGEN_CFG_MODEM_4G)
+	@$(ECHO) -n $(BUILD_TSTDIR)/src/gvTbl_modis.c >>$(CODE_GEN_LST)
+endif
+	@$(STRCMPEX) abc abc e $(basename $@).d $@: $(GV_FILES_4G)
+	@perl ./tools/pack_dep_gen.pl $@ $@ $(patsubst %/,%,$(dir $@)) "$(basename $(notdir $@))\.d"
+	@$(IF_EXIST) $(basename $@).d $(THEN) $(DEL_FILE) $(basename $@).d $(CMD_END)
+	@$(ECHO) -n "$@" >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_l1v_4g.det
+# *************************************************************************
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_l1v_4g.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_l1v_4g.det: $(MODIS_RULESDIR)/codegen_dep/l1v_db_4g.det $(CGEN) $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB_4G)/l1validation_db/l1v_db/4G $(THEN) $(MKDIR) $(MODISBUILD_TST_DB_4G)/l1validation_db/l1v_db/4G $(CMD_END)
+
+	@$(ECHO) -n "Generate 4G L1 Validation Information ..."
+	@$(ECHO) -n "$(CGEN) -L1V $(CODEGEN_DATABASE_OUT_4G) $(CODEGEN_DATABASE_IN_4G) $(MODISBUILD_TST_DB_4G)/l1validation_db/l1v_db/4G" >>$(CGEN_CFG_MODEM_4G)
+# too much *.l1v files, command length will be over 32KB
+	@$(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(RECURSIVE_DIR) $(strip $(TST_DB_SEC))/l1validation_db "\.l1v"` $(DO) (echo $@: $(PRE_VAR)i >> $(basename $@).d) $(DONE)
+	@perl ./tools/pack_dep_gen.pl $@ $@ $(patsubst %/,%,$(dir $@)) "$(basename $(notdir $@))\.d"
+	@$(IF_EXIST) $(basename $@).d $(THEN) $(DEL_FILE) $(basename $@).d $(CMD_END)
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem_4g.det
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem_4g.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem_4g.det: $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_4g.det
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(ECHO) -n "Generate 4G PS Trace Information ..."
+#backup xxx_trc_gen.h
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB_4G)/pstrace_db_bak $(THEN) \
+		($(MKDIR) $(MODISBUILD_TST_DB_4G)/pstrace_db_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(MODISBUILD_TST_DB_4G)/pstrace_db_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(MODISBUILD_TST_DB_4G)/pstrace_db_bak/*.*  $(CMD_END))\
+	$(CMD_END)
+	@($(LIST_DIR) "$(MODISBUILD_TST_DB_4G)/pstrace_db/*.h" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(MODISBUILD_TST_DB_4G)/pstrace_db/*.h $(MODISBUILD_TST_DB_4G)/pstrace_db_bak/ >$(DEV_NUL) $(CMD_END))
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(IF_EXIST) $(MODISBUILD_TST_DB_4G)/pstrace_db/codegen_single_Modem_4g.ini $(THEN) \
+		($(IF_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) \
+			($(ECHO) -n "$(CGEN) -ps $(CODEGEN_DATABASE_OUT_4G) $(CODEGEN_DATABASE_IN_4G) $(MODISBUILD_TST_DB_4G)/pstrace_db/codegen_single_Modem_4g.ini $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h" >>$(CGEN_CFG_MODEM_4G)) \
+		$(ELSE) \
+			($(ECHO) -n "$(CGEN) -rps $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB_4G)/pstrace_db/codegen_single_Modem_4g.ini $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h" >>$(CGEN_CFG_MODEM_4G)) $(AND)\
+			($(ECHO) -n "$(CGEN) -rle $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_2.h $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h" >>$(CGEN_CFG_MODEM_4G)) $(AND)\
+			($(ECHO) -n "$(CGEN) -sps $(MODISBUILD_TST_DB)/pstrace_db/ps_trace.h $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_2.h -posfixName-" >>$(CGEN_CFG_MODEM_4G)) \
+		$(CMD_END)) \
+	$(CMD_END)
+else
+	@$(IF_EXIST) $(MODISBUILD_TST_DB_4G)/pstrace_db/codegen_single_Modem_4g.ini $(THEN) \
+		($(ECHO) -n $(CGEN) -ps $(CODEGEN_DATABASE_OUT_4G) $(CODEGEN_DATABASE_IN_4G) $(MODISBUILD_TST_DB_4G)/pstrace_db/codegen_single_Modem_4g.ini $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h >>$(CGEN_CFG_MODEM_4G)) \
+	$(CMD_END)
+endif
+	@$(ECHO) -n "$@:" >> $@
+	@$(ECHO) -n "$@"  >> $(CODE_GEN_LST)
+	@$(ECHO) -n "$(MODISBUILD_TST_DB)/pstrace_db/ps_trace.h" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_4g.det: FORCE
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_4g.det: FORCE
+else
+  -include $(MODIS_RULESDIR)/codegen_dep/./codegen_single_Modem_4g.det
+endif
+$(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_4g.det: $(NEED_CHECK_DEPEND_LIST) $(COMP_TRACE_DEFS_MODEM_4G)
+ifeq ($(filter $(MAKECMDGOALS),cgen_preprocess),)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB_4G)/pstrace_db $(THEN) $(MKDIR) $(MODISBUILD_TST_DB_4G)/pstrace_db $(CMD_END)
+
+	@$(ECHO) -n "Write ps *.json to $(MODISBUILD_TST_DB_4G)/pstrace_db/codegen_single_Modem_4g.ini"
+	@$(STRCMPEX) def def e $(MODISBUILD_TST_DB_4G)/pstrace_db/codegen_single_Modem_4g.ini $(COMP_TRACE_DEFS_MODEM_4G)
+	@perl ./tools/lnitem.pl $(MODISBUILD_TST_DB_4G)/pstrace_db/codegen_single_Modem_4g.ini
+ifeq ($(filter $(MAKECMDGOALS),cgen_preprocess),)
+	@$(ECHO) "$@: " >> $@
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(filter-out $(NEED_CHECK_DEPEND_LIST) FORCE,$^) $(DO) \
+		($(ECHO) "$(PRE_VAR)i " >> $@) \
+	$(DONE)
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_un_4g.det
+# *************************************************************************
+ifeq ($(RUN_UMTS_GEN),TRUE)
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_un_4g.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_un_4g.det: $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_4g.det $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+
+	@$(ECHO) -n "Generate 4G Union Information ..."
+	@$(ECHO) -n "$(CGEN) -un $(CODEGEN_DATABASE_OUT_4G) $(CODEGEN_DATABASE_IN_4G) $(MODISBUILD_TST_DB_4G)/unionTag/unionTag_parse_4g.txt" >>$(CGEN_CFG_MODEM_4G)
+	@$(ECHO) -n "$@:" >> $@
+	@$(ECHO) -n "$@"  >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem.det: FORCE
+# *************************************************************************
+# MPD domain must able to access all trace files list in COMP_TRACE_DEFS_MODEM
+# HQ SWRD / SUB domain can only access partial trace files list in COMP_TRACE_DEFS_MODEM
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+  ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+    COMP_TRACE_DEFS_MODEM_NEW := $(COMP_TRACE_DEFS_MODEM)
+  else
+    COMP_TRACE_DEFS_MODEM_NEW := $(wildcard $(COMP_TRACE_DEFS_MODEM))
+  endif
+else
+    COMP_TRACE_DEFS_MODEM_NEW := $(wildcard $(COMP_TRACE_DEFS_MODEM))
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem.det: FORCE
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem.det: FORCE
+else
+  -include $(MODIS_RULESDIR)/codegen_dep/./codegen_single_Modem.det
+endif
+$(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem.det: $(NEED_CHECK_DEPEND_LIST) $(COMP_TRACE_DEFS_MODEM_NEW)
+ifeq ($(filter $(MAKECMDGOALS),cgen_preprocess),)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(ECHO) -n "Write ps *.json to $(MODISBUILD_TST_DB)/pstrace_db/codegen_single_Modem.ini"
+	@$(STRCMPEX) def def e $(MODISBUILD_TST_DB)/pstrace_db/codegen_single_Modem.ini $(COMP_TRACE_DEFS_MODEM_NEW)
+	@perl ./tools/lnitem.pl $(MODISBUILD_TST_DB)/pstrace_db/codegen_single_Modem.ini
+ifeq ($(filter $(MAKECMDGOALS),cgen_preprocess),)
+	@$(ECHO) "$@: " >> $@
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(filter-out $(NEED_CHECK_DEPEND_LIST) FORCE,$^) $(DO) \
+		($(ECHO) "$(PRE_VAR)i " >> $@) \
+		$(DONE)
+	@$(ECHO) -n "$@" >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_sec.det: FORCE
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_sec.det: FORCE
+else
+  -include $(MODIS_RULESDIR)/codegen_dep/./codegen_single_Modem_sec.det
+endif
+$(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_sec.det: $(NEED_CHECK_DEPEND_LIST) $(COMP_TRACE_DEFS_MODEM_LTE_SEC) $(COMP_TRACE_DEFS_MODEM_NR_SEC)
+ifeq ($(filter $(MAKECMDGOALS),cgen_preprocess),)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(ECHO) -n "Write ps *.json to $(MODISBUILD_TST_DB_SEC)/pstrace_db/codegen_single_Modem_sec.ini"
+	@$(STRCMPEX) def def e $(MODISBUILD_TST_DB_SEC)/pstrace_db/codegen_single_Modem_sec.ini $(COMP_TRACE_DEFS_MODEM_LTE_SEC) $(COMP_TRACE_DEFS_MODEM_NR_SEC)
+	@perl ./tools/lnitem.pl $(MODISBUILD_TST_DB_SEC)/pstrace_db/codegen_single_Modem_sec.ini
+ifeq ($(filter $(MAKECMDGOALS),cgen_preprocess),)
+	@$(ECHO) "$@: " >>$@
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(filter-out $(NEED_CHECK_DEPEND_LIST) FORCE,$^) $(DO) \
+		($(ECHO) "$(PRE_VAR)i " >> $@) \
+		$(DONE)
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_c_sec.det: FORCE
+# *************************************************************************
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_c_sec.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_c_sec.det: $(MODIS_RULESDIR)/codegen_dep/libParseDbModem_sec.det
+$(MODIS_RULESDIR)/codegen_dep/cgen_c_sec.det: $(strip $(TSTDIR))/database/$(CGEN_DEF_FILE) $(strip $(TSTDIR))/database/Pc_Cnf $(strip $(VERNOFILE)) $(strip $(PROJECT_MAKEFILE)) $(CGEN) $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(CODEGEN_DEPENDENCY_MODEM_SEC) $(CODEGEN_DEPENDENCY_MODEM_4G) $(CODEGEN_DEPENDENCY_MODEM) $(DO) \
+		($(IF_EXIST) $(PRE_VAR)i $(THEN) $(DEL_FILE) $(PRE_VAR)i $(CMD_END)) \
+	$(DONE)
+
+	@$(ECHO) -n "Generate sec Base Information ..."
+	@$(IF_EXIST) $(MODISBUILD_TST_DB_SEC)/$(MDDBINFOCUSTOMPREFIX)* $(THEN) $(DEL_FILE) "$(MODISBUILD_TST_DB_SEC)/*$(MDDBINFOCUSTOMPREFIX)*" $(CMD_END)
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src $(THEN) $(MKDIR) $(BUILD_TSTDIR)/src $(CMD_END)
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n "$(CGEN) -c $(MODISBUILD_TST_DB_SEC)/msglog_db/libParseDbModem_sec.db $(strip $(TSTDIR))/database/$(CGEN_DEF_FILE) $(strip $(TSTDIR))/database/Pc_Cnf $(CODEGEN_DATABASE_OUT_SEC) $(MODISBUILD_TST_DB)/enumFile $(strip $(PLATFORM))_$(strip $(CHIP_VER)) $(strip $(MTK_INTERNAL_VERNO)) -qModSim-$(BUILD_TSTDIR)/src/tst_querysimid.c -sf-$(MODISBUILD_TST_DB)/sf.ini -prjName-$(strip $(FULL_PRJ_NAME)) -VERNO_HAL-$(strip $(VERNO_HAL))" >$(CGEN_CFG_MODEM_SEC)
+	@$(ECHO) -n "$(BUILD_TSTDIR)/src/tst_querysimid.c" >>$(CODE_GEN_LST)
+else
+	@$(ECHO) -n $(CGEN) -c $(MODISBUILD_TST_DB_SEC)/msglog_db/libParseDbModem_sec.db $(strip $(TSTDIR))/database/$(CGEN_DEF_FILE) $(strip $(TSTDIR))/database/Pc_Cnf $(CODEGEN_DATABASE_OUT_SEC) $(MODISBUILD_TST_DB)/enumFile MoDIS $(strip $(VERNO)) -qModSim-$(BUILD_TSTDIR)/src/tst_querysimid_modis.c >>$(CGEN_CFG_MODEM_SEC)
+	@$(ECHO) -n $(BUILD_TSTDIR)/src/tst_querysimid_modis.c >>$(CODE_GEN_LST)
+endif
+	@$(ECHO) -n "$@: $(strip $(TSTDIR))/database/$(CGEN_DEF_FILE) $(strip $(TSTDIR))/database/Pc_Cnf $(strip $(VERNOFILE)) $(strip $(PROJECT_MAKEFILE)) $(strip $(VERNOFILE))" >>$@
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+	@$(ECHO) -n "$(MODISBUILD_TST_DB)/enumFile" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_ap_swParseDbModem.det: FORCE
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_ap_swParseDbModem.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_ap_swParseDbModem.det: $(MODIS_RULESDIR)/codegen_dep/swParseDbModem.det
+$(MODIS_RULESDIR)/codegen_dep/cgen_ap_swParseDbModem.det: $(strip $(VERNOFILE)) $(strip $(PROJECT_MAKEFILE)) $(CGEN) $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) $(DEL_FILE) $@ $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+ifeq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(CODEGEN_DEPENDENCY_MODEM) $(DO) \
+		($(IF_EXIST) $(PRE_VAR)i $(THEN) $(DEL_FILE) $(PRE_VAR)i $(CMD_END)) \
+	$(DONE)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) $(ECHO) -n "$@" > $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(CMD_END)
+endif
+	@$(ECHO) -n "Append sw Base Information ..."
+	@$(ECHO) -n "$(CGEN) -ap10 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/swParseDbModem.db $(MODISBUILD_TST_DB)/enumFileSw" >>$(CGEN_CFG_MODEM)
+
+	@$(ECHO) -n "$@:" >> $@
+	@$(ECHO) -n "$@"  >> $(CODE_GEN_LST)
+	@$(ECHO) -n "$(MODISBUILD_TST_DB)/enumFile" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem.det: FORCE
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem.det: $(MODIS_RULESDIR)/codegen_dep/libParseDbModem_tdd_fdd.det $(MODIS_RULESDIR)/codegen_dep/libParseDbModem.det
+$(MODIS_RULESDIR)/codegen_dep/cgen_ap_libParseDbModem.det: $(strip $(TSTDIR))/database/$(CGEN_DEF_FILE) $(strip $(TSTDIR))/database/Pc_Cnf $(strip $(VERNOFILE)) $(strip $(PROJECT_MAKEFILE)) $(CGEN)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(CODEGEN_DEPENDENCY_MODEM) $(DO) \
+		($(IF_EXIST) $(PRE_VAR)i $(THEN) $(DEL_FILE) $(PRE_VAR)i $(CMD_END)) \
+	$(DONE)
+ifneq ($(MPD_SOURCE_4G_BUILD),TRUE)
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) $(ECHO) -n "$@" > $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(CMD_END)
+endif
+	@$(ECHO) -n "Append common Base Information ..."
+	@$(ECHO) -n "$(CGEN) -ap8 $(CODEGEN_DATABASE_OUT) $(INPUT_4G_DB) $(MODISBUILD_TST_DB)/msglog_db/libParseDbModem.db $(MODISBUILD_TST_DB)/enumFile" >>$(CGEN_CFG_MODEM)
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(ECHO) -n "$(CGEN) -ap5 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/libParseDbModem_fdd.db $(MODISBUILD_TST_DB)/enumFile" >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n "$(CGEN) -ap6 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/libParseDbModem_tdd.db $(MODISBUILD_TST_DB)/enumFile $(strip $(PLATFORM))_$(strip $(CHIP_VER)) $(strip $(VERNO)) -qModSim-$(BUILD_TSTDIR)/src/tst_querysimid.c" >>$(CGEN_CFG_MODEM)
+  else
+	@$(ECHO) -n "$(CGEN) -ap5 $(CODEGEN_DATABASE_OUT) $(INPUT_4G_DB) $(MODISBUILD_TST_DB)/msglog_db/libParseDbModem_fdd.db $(MODISBUILD_TST_DB)/enumFile $(strip $(PLATFORM))_$(strip $(CHIP_VER)) $(strip $(VERNO)) -qModSim-$(BUILD_TSTDIR)/src/tst_querysimid.c" >>$(CGEN_CFG_MODEM)
+  endif
+else
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+		@$(ECHO) -n $(CGEN) -ap5 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/libParseDbModem_fdd.db $(MODISBUILD_TST_DB)/enumFile >>$(CGEN_CFG_MODEM)
+		@$(ECHO) -n $(CGEN) -ap6 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/libParseDbModem_tdd.db $(MODISBUILD_TST_DB)/enumFile MoDIS $(strip $(VERNO))  -qModSim-$(BUILD_TSTDIR)/src/tst_querysimid_modis.c>>$(CGEN_CFG_MODEM)
+  else
+		@$(ECHO) -n $(CGEN) -ap5 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/libParseDbModem_fdd.db $(MODISBUILD_TST_DB)/enumFile MoDIS $(strip $(VERNO))  -qModSim-$(BUILD_TSTDIR)/src/tst_querysimid_modis.c>>$(CGEN_CFG_MODEM)
+  endif
+endif
+	@$(ECHO) -n "$@: $(strip $(TSTDIR))/database/$(CGEN_DEF_FILE) $(strip $(TSTDIR))/database/Pc_Cnf $(strip $(VERNOFILE)) $(strip $(PROJECT_MAKEFILE))" >$@
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+	@$(ECHO) -n "$(MODISBUILD_TST_DB)/enumFile" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem.det: FORCE
+# Step 3: Protocol trace information
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem.det: $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem.det
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(ECHO) -n "Generate common PS Trace Information ..."
+#backup xxx_trc_gen.h
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/pstrace_db_bak $(THEN) \
+		($(MKDIR) $(MODISBUILD_TST_DB)/pstrace_db_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(MODISBUILD_TST_DB)/pstrace_db_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(MODISBUILD_TST_DB)/pstrace_db_bak/*.*  $(CMD_END))\
+	$(CMD_END)
+	@($(LIST_DIR) "$(MODISBUILD_TST_DB)/pstrace_db/*.h" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(MODISBUILD_TST_DB)/pstrace_db/*.h $(MODISBUILD_TST_DB)/pstrace_db_bak/ >$(DEV_NUL) $(CMD_END))
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) \
+		($(ECHO) -n "$(CGEN) -ps $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_OUT) $(MODISBUILD_TST_DB)/pstrace_db/codegen_single_Modem.ini $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h" >>$(CGEN_CFG_MODEM)) \
+	$(ELSE) \
+		($(ECHO) -n "$(CGEN) -rps $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_OUT) $(MODISBUILD_TST_DB)/pstrace_db/codegen_single_Modem.ini $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h" >>$(CGEN_CFG_MODEM)) \
+	$(CMD_END)
+	@$(ECHO) -n "$(CGEN) -rle $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_2.h $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h" >> $(CGEN_CFG_MODEM)
+	@$(ECHO) -n "$(CGEN) -sps $(MODISBUILD_TST_DB)/pstrace_db/ps_trace.h $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_2.h -posfixName-" >> $(CGEN_CFG_MODEM)
+else
+	@$(ECHO) -n $(CGEN) -ps $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/pstrace_db/codegen_single_Modem.ini $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h >> $(CGEN_CFG_MODEM)
+	@$(ECHO) -n $(CGEN) -sps $(MODISBUILD_TST_DB)/pstrace_db/ps_trace.h $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h -posfixName- >> $(CGEN_CFG_MODEM)
+endif
+	@$(ECHO) -n "$@:" >> $@
+	@$(ECHO) -n "$@"  >> $(CODE_GEN_LST)
+	@$(ECHO) -n "$(MODISBUILD_TST_DB)/pstrace_db/ps_trace.h" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem_sec.det: FORCE
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem_sec.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_ps_Modem_sec.det: $(MODIS_RULESDIR)/codegen_dep/codegen_single_Modem_sec.det
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(ECHO) -n "Generate sec PS Trace Information ..."
+#backup xxx_trc_gen.h
+	@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/pstrace_db_bak $(THEN) \
+		($(MKDIR) $(MODISBUILD_TST_DB)/pstrace_db_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(MODISBUILD_TST_DB)/pstrace_db_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(MODISBUILD_TST_DB)/pstrace_db_bak/*.*  $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(MODISBUILD_TST_DB)/pstrace_db/*.h" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(MODISBUILD_TST_DB)/pstrace_db/*.h $(MODISBUILD_TST_DB)/pstrace_db_bak/ >$(DEV_NUL) $(CMD_END))
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n "$(CGEN) -ps $(CODEGEN_DATABASE_OUT_SEC) $(CODEGEN_DATABASE_IN_SEC) $(MODISBUILD_TST_DB_SEC)/pstrace_db/codegen_single_Modem_sec.ini $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h" >> $(CGEN_CFG_MODEM_SEC)
+else
+	@$(ECHO) -n $(CGEN) -ps $(CODEGEN_DATABASE_OUT_SEC) $(CODEGEN_DATABASE_IN_SEC) $(MODISBUILD_TST_DB_SEC)/pstrace_db/codegen_single_Modem_sec.ini $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h >> $(CGEN_CFG_MODEM_SEC)
+endif
+	@$(ECHO) -n "$@:" >>$@
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+	@$(ECHO) -n "$(MODISBUILD_TST_DB)/pstrace_db/ps_trace.h" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_l1.det: FORCE
+# Step 4: Layer 1 trace information
+# *************************************************************************
+L1MODMSG_CHK = $(strip $(LOGGING_DATABASE))/l1validation_db/L1ModMsg.chk
+
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_l1.det: FORCE
+else
+  -include $(MODIS_RULESDIR)/codegen_dep/./cgen_l1.det
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_l1.det: $(NEED_CHECK_DEPEND_LIST)
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/include $(THEN) $(MKDIR) $(BUILD_TSTDIR)/include $(CMD_END)
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src     $(THEN) $(MKDIR) $(BUILD_TSTDIR)/src $(CMD_END)
+	@$(IF_NOT_EXIST) $(CGEN_L1_OUTDIR)       $(THEN) $(MKDIR) $(CGEN_L1_OUTDIR) $(CMD_END)
+
+#backup dhl/include/*.h
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/include_bak $(THEN) \
+		($(MKDIR) $(BUILD_TSTDIR)/include_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(BUILD_TSTDIR)/include_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(BUILD_TSTDIR)/include_bak/*.* $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(BUILD_TSTDIR)/include/*.h" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(BUILD_TSTDIR)/include/*.h $(BUILD_TSTDIR)/include_bak/ >$(DEV_NUL) $(CMD_END))
+
+#backup dhl/src
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src_bak $(THEN) \
+		($(MKDIR) $(BUILD_TSTDIR)/src_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(BUILD_TSTDIR)/src_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(BUILD_TSTDIR)/src_bak/*.* $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(BUILD_TSTDIR)/src/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(BUILD_TSTDIR)/src/*.* $(BUILD_TSTDIR)/src_bak/ >$(DEV_NUL) $(CMD_END))
+
+#backup l1trace
+	@$(IF_NOT_EXIST) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak $(THEN) \
+		($(MKDIR) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/*.* $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(strip $(PROJ_INTERNAL_DIR))/l1trace/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(strip $(PROJ_INTERNAL_DIR))/l1trace/*.* $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/ >$(DEV_NUL) $(CMD_END))
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+	@$(ECHO) -n "Generate common L1 Trace Information ..."
+  ifeq ($(strip $(RUN_CGEN_L1)),TRUE)
+    ifeq ($(strip $(UTMD_FILES)),)
+			@$(IF_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) \
+				($(ECHO) -n "$(CGEN) -uL1 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(UTMD_FILES) -OutputCPath-$(CGEN_L1_OUTDIR)/" >>$(CGEN_CFG_MODEM)) \
+			$(ELSE) \
+				($(ECHO) -n "$(CGEN) -rL1 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(UTMD_FILES) -OutputCPath-$(CGEN_L1_OUTDIR)/" >>$(CGEN_CFG_MODEM)) \
+			$(CMD_END)
+	@$(STRCMPEX) abc abc e $@ $@: $(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES)))
+    else
+			@$(IF_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) \
+				($(ECHO) "$(CGEN) -uL1 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(strip $(L1MODMSG_CHK)) " >>$(CGEN_CFG_MODEM)) \
+			$(ELSE) \
+				($(ECHO) "$(CGEN) -rL1 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(strip $(L1MODMSG_CHK)) " >>$(CGEN_CFG_MODEM)) \
+			$(CMD_END)
+			@$(FOR) $(DECLARE_VAR)i $(IN) $(UTMD_FILES) $(DO) \
+				($(ECHO) "$(PRE_VAR)i " >> $(CGEN_CFG_MODEM)) \
+				$(DONE)
+			@$(ECHO) -n "-OutputCPath-$(CGEN_L1_OUTDIR)/" >>$(CGEN_CFG_MODEM)
+	@$(STRCMPEX) abc abc e $@ $@: $(strip $(L1MODMSG_CHK))  $(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES)))
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES))), $(CGEN_L1_OUTDIR)/$(notdir $(basename $(utmd_file))).c) $(DO) (echo $(PRE_VAR)i >>$(CODE_GEN_LST)) $(DONE)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES))), $(BUILD_TSTDIR)/include/$(notdir $(basename $(utmd_file))).h) $(DO) (echo $(PRE_VAR)i >>$(CODE_GEN_LST)) $(DONE)
+    endif
+	@$(ECHO) -n "$(BUILD_TSTDIR)/src/TrcMod.c" >>$(CODE_GEN_LST)
+	@$(ECHO) -n "$(BUILD_TSTDIR)/include/TrcMod.h" >>$(CODE_GEN_LST)
+  else
+      # workaround for -puremodis, because some L1 headers are always included
+    ifeq ($(strip $(OS_VERSION)),MSWin32)
+	@for %%i in ($(subst /,\,$(BUILD_TSTDIR)/include/TrcMod.h) $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES))),$(subst /,\,$(BUILD_TSTDIR)/include/$(notdir $(basename $(utmd_file)).h)))) do (if not exist %%i copy /y NUL %%i >NUL)
+    else
+	@touch -a $(BUILD_TSTDIR)/include/TrcMod.h $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES))),$(BUILD_TSTDIR)/include/$(notdir $(basename $(utmd_file)).h))
+    endif
+  endif
+else
+  ifneq ($(strip $(UTMD_FILES)),)
+		@$(IF_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) \
+			($(ECHO) "$(CGEN) -uL1 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(strip $(L1MODMSG_CHK)) " >>$(CGEN_CFG_MODEM)) \
+		$(ELSE) \
+			($(ECHO) "$(CGEN) -rL1 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(strip $(L1MODMSG_CHK)) " >>$(CGEN_CFG_MODEM)) \
+		$(CMD_END)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(UTMD_FILES) $(DO) \
+		($(ECHO) "$(PRE_VAR)i " >> $(CGEN_CFG_MODEM)) \
+		$(DONE)
+	@$(ECHO) -n "-OutputCPath-$(CGEN_L1_OUTDIR)/" >>$(CGEN_CFG_MODEM)
+  endif
+endif
+	@$(ECHO) -n "$@:" >>$@
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_l1_sec.det: FORCE
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_l1_sec.det: FORCE
+else
+  -include $(MODIS_RULESDIR)/codegen_dep/./cgen_l1_sec.det
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_l1_sec.det: $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/include $(THEN) $(MKDIR) $(BUILD_TSTDIR)/include $(CMD_END)
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src     $(THEN) $(MKDIR) $(BUILD_TSTDIR)/src $(CMD_END)
+	@$(IF_NOT_EXIST) $(CGEN_L1_OUTDIR)       $(THEN) $(MKDIR) $(CGEN_L1_OUTDIR) $(CMD_END)
+
+#backup dhl/include/*.h
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/include_bak $(THEN) \
+		($(MKDIR) $(BUILD_TSTDIR)/include_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(BUILD_TSTDIR)/include_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(BUILD_TSTDIR)/include_bak/*.* $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(BUILD_TSTDIR)/include/*.h" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(BUILD_TSTDIR)/include/*.h $(BUILD_TSTDIR)/include_bak/ >$(DEV_NUL) $(CMD_END))
+
+#backup dhl/src
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src_bak $(THEN) \
+		($(MKDIR) $(BUILD_TSTDIR)/src_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(BUILD_TSTDIR)/src_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(BUILD_TSTDIR)/src_bak/*.* $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(BUILD_TSTDIR)/src/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(BUILD_TSTDIR)/src/*.* $(BUILD_TSTDIR)/src_bak/ >$(DEV_NUL) $(CMD_END))
+
+#backup l1trace
+	@$(IF_NOT_EXIST) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak $(THEN) \
+		($(MKDIR) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak) \
+	$(ELSE) \
+		($(LIST_DIR) "$(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+			$(IF_ERR_FALSE) $(THEN) $(DEL_FILE) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/*.* $(CMD_END)) \
+	$(CMD_END)
+	@($(LIST_DIR) "$(strip $(PROJ_INTERNAL_DIR))/l1trace/*.*" 1>$(DEV_NUL) 2>&1 $(WITH)\
+		$(IF_ERR_FALSE) $(THEN) $(COPY_FILE) $(strip $(PROJ_INTERNAL_DIR))/l1trace/*.* $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/ >$(DEV_NUL) $(CMD_END))
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+	@$(ECHO) -n "Generate sec L1 Trace Information ..."
+  ifeq ($(strip $(RUN_CGEN_L1)),TRUE)
+    ifeq ($(strip $(UTMD_FILES_SEC)),)
+			@$(ECHO) -n "$(CGEN) -uL1 $(CODEGEN_DATABASE_OUT_SEC) $(CODEGEN_DATABASE_IN_SEC) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(DHL_L1_UTMD_FILE) $(UTMD_FILES_SEC) -OutputCPath-$(CGEN_L1_OUTDIR)/" >>$(CGEN_CFG_MODEM_SEC)
+			@$(STRCMPEX) abc abc e $@ $@: $(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES_SEC)))
+    else
+			@$(ECHO) -n "$(CGEN) -uL1 $(CODEGEN_DATABASE_OUT_SEC) $(CODEGEN_DATABASE_IN_SEC) L1_CATCHER $(BUILD_TSTDIR)/src/TrcMod.c $(BUILD_TSTDIR)/include/TrcMod.h $(strip $(TSTDIR_SEC))/database/l1validation_db/L1ModMsg.chk $(DHL_L1_UTMD_FILE) $(UTMD_FILES_SEC) -OutputCPath-$(CGEN_L1_OUTDIR)/" >>$(CGEN_CFG_MODEM_SEC)
+			@$(STRCMPEX) abc abc e $@ $@: $(strip $(TSTDIR_SEC))/database/l1validation_db/L1ModMsg.chk  $(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES_SEC)))
+			@$(FOR) $(DECLARE_VAR)i $(IN) $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES_SEC))), $(CGEN_L1_OUTDIR)/$(notdir $(basename $(utmd_file))).c $(BUILD_TSTDIR)/include/$(notdir $(basename $(utmd_file))).h) $(DO) (echo $(PRE_VAR)i >>$(CODE_GEN_LST)) $(DONE)
+    endif
+		@$(ECHO) -n "$(BUILD_TSTDIR)/src/TrcMod.c" >>$(CODE_GEN_LST)
+		@$(ECHO) -n "$(BUILD_TSTDIR)/include/TrcMod.h" >>$(CODE_GEN_LST)
+  else
+    # workaround for -puremodis, because some L1 headers are always included
+    ifeq ($(strip $(OS_VERSION)),MSWin32)
+			@for %%i in ($(subst /,\,$(BUILD_TSTDIR)/include/TrcMod.h) $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES_SEC))),$(subst /,\,$(BUILD_TSTDIR)/include/$(notdir $(basename $(utmd_file)).h)))) do (if not exist %%i copy /y NUL %%i >NUL)
+    else
+			@touch -a $(BUILD_TSTDIR)/include/TrcMod.h $(foreach utmd_file,$(filter-out CuStOm_StArT_% CuStOm_EnD_%,$(strip $(UTMD_FILES_SEC))),$(BUILD_TSTDIR)/include/$(notdir $(basename $(utmd_file)).h))
+    endif
+  endif
+endif
+	@$(ECHO) -n "$@:" >>$@
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_gv.det: FORCE
+# Step 5: Result temporary - Global variable information
+# *************************************************************************
+#ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_gv.det: FORCE
+endif
+ifneq ($(strip $(C2K_RELEASE)),TRUE)
+$(MODIS_RULESDIR)/codegen_dep/cgen_gv.det: $(MODIS_RULESDIR)/codegen_dep/gv_db.det $(GV_FILES)
+else
+$(MODIS_RULESDIR)/codegen_dep/cgen_gv.det: $(MODIS_RULESDIR)/codegen_dep/gv_db_ext.det $(GV_FILES_C2K)
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_gv.det: $(NEED_CHECK_DEPEND_LIST)
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(ECHO) -n "Generate common Global variable Information ..."
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+ifneq ($(strip $(C2K_RELEASE)),TRUE)
+	@$(ECHO) -n "$(CGEN) -gv $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/gv/gv_db/ $(BUILD_TSTDIR)/src/gvTbl.c" >> $(CGEN_CFG_MODEM)
+else
+	@$(ECHO) -n "$(CGEN) -gv $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/gv/gv_db_ext/ $(BUILD_TSTDIR)/src/gvTbl.c" >> $(CGEN_CFG_MODEM)
+endif
+	@$(ECHO) -n "$(BUILD_TSTDIR)/src/gvTbl.c" >>$(CODE_GEN_LST)
+else
+ifneq ($(strip $(C2K_RELEASE)),TRUE)
+	@$(ECHO) -n $(CGEN) -gv $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/gv/gv_db/ $(BUILD_TSTDIR)/src/gvTbl_modis.c >> $(CGEN_CFG_MODEM)
+else
+	@$(ECHO) -n $(CGEN) -gv $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/gv/gv_db_ext/ $(BUILD_TSTDIR)/src/gvTbl_modis.c >> $(CGEN_CFG_MODEM)
+endif
+	@$(ECHO) -n $(BUILD_TSTDIR)/src/gvTbl_modis.c >>$(CODE_GEN_LST)
+endif
+ifneq ($(strip $(C2K_RELEASE)),TRUE)
+	@$(STRCMPEX) abc abc e $(basename $@).d $@: $(GV_FILES)
+else
+	@$(STRCMPEX) abc abc e $(basename $@).d $@: $(GV_FILES_C2K)
+endif
+	@perl ./tools/pack_dep_gen.pl $@ $@ $(patsubst %/,%,$(dir $@)) "$(basename $(notdir $@))\.d"
+	@$(IF_EXIST) $(basename $@).d $(THEN) $(DEL_FILE) $(basename $@).d $(CMD_END)
+	@$(ECHO) -n "$@" >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+#endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_gv_sec.det: FORCE
+# *************************************************************************
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_gv_sec.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_gv_sec.det: $(MODIS_RULESDIR)/codegen_dep/gv_db_sec.det $(GV_FILES_SEC) $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(ECHO) -n "Generate sec Global variable Information ..."
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(ECHO) -n "$(CGEN) -gv $(CODEGEN_DATABASE_OUT_SEC) $(CODEGEN_DATABASE_IN_SEC) $(MODISBUILD_TST_DB_SEC)/gv/gv_db/ $(BUILD_TSTDIR)/src/gvTbl.c" >> $(CGEN_CFG_MODEM_SEC)
+	@$(ECHO) -n "$(BUILD_TSTDIR)/src/gvTbl.c" >>$(CODE_GEN_LST)
+else
+	@$(ECHO) -n $(CGEN) -gv $(CODEGEN_DATABASE_OUT_SEC) $(CODEGEN_DATABASE_IN_SEC) $(MODISBUILD_TST_DB_SEC)/gv/gv_db/ $(BUILD_TSTDIR)/src/gvTbl_modis.c >> $(CGEN_CFG_MODEM_SEC)
+	@$(ECHO) -n $(BUILD_TSTDIR)/src/gvTbl_modis.c >>$(CODE_GEN_LST)
+endif
+	@$(STRCMPEX) abc abc e $(basename $@).d $@: $(GV_FILES_SEC)
+	@perl ./tools/pack_dep_gen.pl $@ $@ $(patsubst %/,%,$(dir $@)) "$(basename $(notdir $@))\.d"
+	@$(IF_EXIST) $(basename $@).d $(THEN) $(DEL_FILE) $(basename $@).d $(CMD_END)
+	@$(ECHO) -n "$@" >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_l1v.det: FORCE
+# Step 6:  Result - Layer 1 validation information (L1S)
+# *************************************************************************
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+  ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+    $(MODIS_RULESDIR)/codegen_dep/cgen_l1v.det: FORCE
+  endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_l1v.det: $(MODIS_RULESDIR)/codegen_dep/l1v_db.det
+$(MODIS_RULESDIR)/codegen_dep/cgen_l1v.det: $(filter-out %/l1validation_db/l1v_db/l1v_db.l1v,$(shell $(RECURSIVE_DIR) $(strip $(TST_DB))/l1validation_db/ "\.l1v")) $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+
+	@$(ECHO) -n "Generate common L1 Validation Information ..."
+	@$(ECHO) -n "$(CGEN) -L1V $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/l1validation_db/l1v_db/" >> $(CGEN_CFG_MODEM)
+
+	@$(IF_EXIST) $(basename $@).d $(THEN) $(DEL_FILE) $(basename $@).d $(CMD_END)
+# too much *.l1v files, command length will be over 32KB
+	@$(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(RECURSIVE_DIR) $(strip $(TST_DB))/l1validation_db "\.l1v"` $(DO) (echo $@: $(PRE_VAR)i >> $(basename $@).d) $(DONE)
+	@perl ./tools/pack_dep_gen.pl $@ $@ $(patsubst %/,%,$(dir $@)) "$(basename $(notdir $@))\.d"
+	@$(IF_EXIST) $(basename $@).d $(THEN) $(DEL_FILE) $(basename $@).d $(CMD_END)
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+endif
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_l1v_sec.det
+# *************************************************************************
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_l1v_sec.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_l1v_sec.det: $(MODIS_RULESDIR)/codegen_dep/l1v_db_sec.det $(CGEN) $(NEED_CHECK_DEPEND_LIST)
+ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE)
+$(MODIS_RULESDIR)/codegen_dep/cgen_l1v_sec.det: $(filter-out %/l1validation_db/l1v_db/l1v_db.l1v,$(shell $(RECURSIVE_DIR) $(strip $(TST_DB_SEC))/l1validation_db/ "\.l1v")) 
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+   ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+
+	@$(ECHO) -n "Generate sec L1 Validation Information ..."
+	@$(ECHO) -n "$(CGEN) -L1V $(CODEGEN_DATABASE_OUT_SEC) $(CODEGEN_DATABASE_IN_SEC) $(MODISBUILD_TST_DB_SEC)/l1validation_db/l1v_db/" >> $(CGEN_CFG_MODEM_SEC)
+
+	@$(IF_EXIST) $(basename $@).d $(THEN) $(DEL_FILE) $(basename $@).d $(CMD_END)
+# too much *.l1v files, command length will be over 32KB
+	@$(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(RECURSIVE_DIR) $(strip $(TST_DB_SEC))/l1validation_db "\.l1v"` $(DO) (echo $@: $(PRE_VAR)i >> $(basename $@).d) $(DONE)
+	@perl ./tools/pack_dep_gen.pl $@ $@ $(patsubst %/,%,$(dir $@)) "$(basename $(notdir $@))\.d"
+	@$(IF_EXIST) $(basename $@).d $(THEN) $(DEL_FILE) $(basename $@).d $(CMD_END)
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_un.det: FORCE
+# Step 7: Result - Union Information (GSM/GPRS)
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_un.det: FORCE
+endif
+ifneq ($(strip $(C2K_RELEASE)),TRUE)
+$(MODIS_RULESDIR)/codegen_dep/cgen_un.det: $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_tdd_fdd.det
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_un.det: $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_tdd_fdd_ext.det $(NEED_CHECK_DEPEND_LIST)
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+	@$(ECHO) -n "Generate common Union Information ..."
+  ifneq ($(strip $(C2K_RELEASE)),TRUE)
+	@$(ECHO) -n "$(CGEN) -un $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/unionTag/unionTag_parse.txt" >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n "$(CGEN) -un $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/unionTag/unionTag_parse_fdd.txt" >>$(CGEN_CFG_MODEM)
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(ECHO) -n "$(CGEN) -un $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/unionTag/unionTag_parse_tdd.txt" >>$(CGEN_CFG_MODEM)
+    endif
+  endif
+	@$(ECHO) -n "$(CGEN) -un $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/unionTag/ext/unionTag_parse.txt" >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n "$(CGEN) -un $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/unionTag/ext/unionTag_parse_fdd.txt" >>$(CGEN_CFG_MODEM)
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(ECHO) -n "$(CGEN) -un $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/unionTag/ext/unionTag_parse_tdd.txt" >>$(CGEN_CFG_MODEM)
+  endif
+	@$(ECHO) -n "$@:" >>$@
+	@$(ECHO) -n "$@" >>$(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_un_sec.det:
+# *************************************************************************
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+ifeq ($(RUN_UMTS_GEN),TRUE)
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_un_sec.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_un_sec.det: $(MODIS_RULESDIR)/codegen_dep/unionTag_parse_sec.det $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+
+	@$(ECHO) -n "Generate sec Union Information ..."
+	@$(ECHO) -n "$(CGEN) -un $(CODEGEN_DATABASE_OUT_SEC) $(CODEGEN_DATABASE_IN_SEC) $(MODISBUILD_TST_DB_SEC)/unionTag/unionTag_parse_sec.txt" >> $(CGEN_CFG_MODEM_SEC)
+	@$(ECHO) -n "$@:" >> $@
+	@$(ECHO) -n "$@"  >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_cm.det: FORCE
+# Step 8: Result - Merge customization code
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_cm.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_cm.det: $(MODIS_RULESDIR)/codegen_dep/custom_parse_db_tdd_fdd.det $(MODIS_RULESDIR)/codegen_dep/custom_parse_db.det $(VERNOFILE) $(CGEN) $(NEED_CHECK_DEPEND_LIST) $(strip $(PROJECT_MAKEFILE))
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+		@$(FOR) $(DECLARE_VAR)i $(IN) $(CODEGEN_DEPENDENCY_MODEM) $(DO) \
+			($(IF_EXIST) $(PRE_VAR)i $(THEN) $(DEL_FILE) $(PRE_VAR)i $(CMD_END)) \
+		$(DONE)
+		@$(IF_NOT_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) $(ECHO) -n "$@" > $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(CMD_END)
+endif
+	@$(ECHO) -n $(CGEN) -cm6 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db.db $(MODISBUILD_TST_DB)/enumFileCustom >>$(CGEN_CFG_MODEM)
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(ECHO) -n $(CGEN) -cm5 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_fdd.db $(MODISBUILD_TST_DB)/enumFileCustom >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n $(CGEN) -cm  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_tdd.db $(MODISBUILD_TST_DB)/enumFileCustom $(strip $(PLATFORM))_$(strip $(CHIP_VER)) $(strip $(VERNO)) -sf-$(MODISBUILD_TST_DB)/sf.ini -prjName-"$(strip $(FULL_PRJ_NAME))" -VERNO_HAL-$(strip $(VERNO_HAL)) >>$(CGEN_CFG_MODEM)
+    else
+	@$(ECHO) -n $(CGEN) -cm  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_fdd.db $(MODISBUILD_TST_DB)/enumFileCustom $(strip $(PLATFORM))_$(strip $(CHIP_VER)) $(strip $(VERNO)) -sf-$(MODISBUILD_TST_DB)/sf.ini -prjName-"$(strip $(FULL_PRJ_NAME))" -VERNO_HAL-$(strip $(VERNO_HAL)) >>$(CGEN_CFG_MODEM)
+    endif
+  else
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(ECHO) -n $(CGEN) -cm5 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_fdd.db $(MODISBUILD_TST_DB)/enumFileCustom >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n $(CGEN) -cm  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_tdd.db $(MODISBUILD_TST_DB)/enumFileCustom MoDIS $(strip $(VERNO)) >>$(CGEN_CFG_MODEM)
+    else
+	@$(ECHO) -n $(CGEN) -cm6 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db.db $(MODISBUILD_TST_DB)/enumFileCustom >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n $(CGEN) -cm  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_fdd.db $(MODISBUILD_TST_DB)/enumFileCustom MoDIS $(strip $(VERNO)) >>$(CGEN_CFG_MODEM)
+    endif
+  endif
+	@$(ECHO) -n $(MODISBUILD_TST_DB)/enumFileCustom >>$(CODE_GEN_LST)
+else
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(ECHO) -n $(CGEN) -cm5 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_fdd.db $(MODISBUILD_TST_DB)/enumFileCustomAppSrc >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n $(CGEN) -cm $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_tdd.db $(MODISBUILD_TST_DB)/enumFileCustomAppSrc $(strip $(PLATFORM))_$(strip $(CHIP_VER)) $(strip $(VERNO)) -sf-$(MODISBUILD_TST_DB)/sf.ini -prjName-"$(strip $(FULL_PRJ_NAME))" -VERNO_HAL-$(strip $(VERNO_HAL)) >>$(CGEN_CFG_MODEM)
+    else
+	@$(ECHO) -n $(CGEN) -cm  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_fdd.db $(MODISBUILD_TST_DB)/enumFileCustomAppSrc $(strip $(PLATFORM))_$(strip $(CHIP_VER)) $(strip $(VERNO)) -sf-$(MODISBUILD_TST_DB)/sf.ini -prjName-"$(strip $(FULL_PRJ_NAME))" -VERNO_HAL-$(strip $(VERNO_HAL)) >>$(CGEN_CFG_MODEM)
+    endif
+  else
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(ECHO) -n $(CGEN) -cm5 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_fdd.db $(MODISBUILD_TST_DB)/enumFileCustomAppSrc >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n $(CGEN) -cm  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_tdd.db $(MODISBUILD_TST_DB)/enumFileCustomAppSrc MoDIS $(strip $(VERNO)) $(MMIDIR) >>$(CGEN_CFG_MODEM)
+    else
+	@$(ECHO) -n $(CGEN) -cm  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/custom_parse_db_fdd.db $(MODISBUILD_TST_DB)/enumFileCustomAppSrc MoDIS $(strip $(VERNO)) $(MMIDIR) >>$(CGEN_CFG_MODEM)
+    endif
+  endif
+	@$(ECHO) -n $(MODISBUILD_TST_DB)/enumFileCustomAppSrc >>$(CODE_GEN_LST)
+endif
+	@$(ECHO) -n $@: $(VERNOFILE) "$(PROJECT_MAKEFILE)" >> $@
+	@$(ECHO) -n $@ >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_ap_srcParseDbModem.det: FORCE
+# Step 8: Result - Merge customization code
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_ap_srcParseDbModem.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_ap_srcParseDbModem.det: $(MODIS_RULESDIR)/codegen_dep/srcParseDbModem_tdd_fdd.det $(MODIS_RULESDIR)/codegen_dep/srcParseDbModem.det $(VERNOFILE) $(CGEN) $(NEED_CHECK_DEPEND_LIST) $(strip $(PROJECT_MAKEFILE))
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det $(CMD_END)
+
+	@$(ECHO) -n $(CGEN) -ap9 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/srcParseDbModem.db $(MODISBUILD_TST_DB)/enumFileCustomApp >>$(CGEN_CFG_MODEM)
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(ECHO) -n $(CGEN) -ap7 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/srcParseDbModem_fdd.db $(MODISBUILD_TST_DB)/enumFileCustomApp >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n $(CGEN) -ap  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/srcParseDbModem_tdd.db $(MODISBUILD_TST_DB)/enumFileCustomApp $(strip $(PLATFORM))_$(strip $(CHIP_VER)) $(strip $(VERNO)) >>$(CGEN_CFG_MODEM)
+    else
+	@$(ECHO) -n $(CGEN) -ap  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/srcParseDbModem_fdd.db $(MODISBUILD_TST_DB)/enumFileCustomApp $(strip $(PLATFORM))_$(strip $(CHIP_VER)) $(strip $(VERNO)) >>$(CGEN_CFG_MODEM)
+    endif
+	@$(ECHO) -n $(MODISBUILD_TST_DB)/enumFileCustomApp >>$(CODE_GEN_LST)
+  endif
+else
+  ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+	@$(ECHO) -n $(CGEN) -ap7 $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/srcParseDbModem_fdd.db $(MODISBUILD_TST_DB)/enumFileCustomApp >>$(CGEN_CFG_MODEM)
+	@$(ECHO) -n $(CGEN) -ap  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/srcParseDbModem_tdd.db $(MODISBUILD_TST_DB)/enumFileCustomApp MoDIS $(strip $(VERNO)) >>$(CGEN_CFG_MODEM)
+    else
+	@$(ECHO) -n $(CGEN) -ap  $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_IN) $(MODISBUILD_TST_DB)/msglog_db/srcParseDbModem_fdd.db $(MODISBUILD_TST_DB)/enumFileCustomApp MoDIS $(strip $(VERNO)) >>$(CGEN_CFG_MODEM)
+    endif
+	@$(ECHO) -n $(MODISBUILD_TST_DB)/enumFileCustomApp >>$(CODE_GEN_LST)
+  endif
+endif
+	@$(ECHO) -n $@: $(VERNOFILE) "$(PROJECT_MAKEFILE)" >> $@
+	@$(ECHO) -n $@ >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det: 
+# *************************************************************************
+LOG2SD_CATCHER_FILTERS_LIST := $(subst log2SD_Catcher_filters_,,$(notdir $(basename $(strip $(LOG2SD_CATCHER_FILTERS_FILE_LIST)))))
+DBF_INI_LIST := $(notdir $(wildcard $(DBFINI_DIR)/DSP_*))
+CUS_OPT_INI := interface/service/logging_database/XDD/customer_option.ini
+ifeq ($(strip $(RELEASE_PACKAGE)),REL_INTERNAL)
+BUILTINFILTERINI := interface/service/logging_database/XDD/Customization/BuiltinFilterSetting.ini
+else
+BUILTINFILTERINI := interface/service/logging_database/XDD/Customization/BuiltinFilterSettingExternal.ini
+endif
+
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det: FORCE
+endif
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det:
+else
+  ifneq ($(wildcard $(BUILD_TST_DB)/log2SD_Catcher_filters.ini),)
+    # exist tst/database/log2SD_Catcher_filters.ini
+  else
+    $(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det:
+  endif
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det: $(LOGGING_DATABASE)/XDD/mini_log_Catcher_filters.ini
+ifneq ($(strip $(UPDATE_DSP)),TRUE)
+$(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det: $(filter-out \
+                                                                   $(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det \
+                                                                   $(MODIS_RULESDIR)/codegen_dep/cgen_gv.det \
+                                                                   $(MODIS_RULESDIR)/codegen_dep/cgen_l1v.det \
+                                                                   $(MODIS_RULESDIR)/codegen_dep/cgen_un.det \
+                                                            ,$(CODEGEN_DEPENDENCY_MODEM))
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_filter_gen_Modem.det: $(NEED_CHECK_DEPEND_LIST) $(VERNOFILE) $(POSTGEN) $(NEED_CHECK_DEPEND_LIST) $(strip $(PROJECT_MAKEFILE))
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(ECHO) -n $@: >>$@
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src $(THEN) $(MKDIR) $(BUILD_TSTDIR)/src $(CMD_END)
+	@$(IF_EXIST) $(strip $(POSTGEN_CFG_MODEM)) $(THEN) $(DEL_FILE) $(strip $(POSTGEN_CFG_MODEM)) $(CMD_END)
+
+	@$(ECHO) -n $(POSTGEN) -log_sec_key_gen $(CODEGEN_DATABASE_OUT) $(CODEGEN_MDKEY) $(BUILD_TSTDIR)/src/traceKey.c $(strip $(CUS_OPT_INI)) > $(POSTGEN_CFG_MODEM) 
+	@$(ECHO) -n $(POSTGEN) -filter_sig $(CODEGEN_DATABASE_OUT) $(BUILD_TSTDIR)/src/filterSig.c >> $(POSTGEN_CFG_MODEM) 
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifneq ($(strip $(CLOSE_MDM_LAYOUT)),TRUE)
+		@$(ECHO) -n $(POSTGEN) -em_filter_gen $(CODEGEN_DATABASE_OUT) $(strip $(LOGGING_DATABASE))/MSG_LIST $(MODISBUILD_TST_DB)/em_filter.bin >> $(POSTGEN_CFG_MODEM)
+		@$(ECHO) -n $(POSTGEN) -all_em_info $(CODEGEN_DATABASE_OUT) $(CODEGEN_DATABASE_OUT) $(strip $(LOGGING_DATABASE))/MSG_LIST >> $(POSTGEN_CFG_MODEM)
+		@$(ECHO) -n $(POSTGEN) -extract_all_em_info $(CODEGEN_DATABASE_OUT) $(MODISBUILD_TST_DB)/mdm_layout_desc.dat >> $(POSTGEN_CFG_MODEM)
+  endif
+  ifneq ($(strip $(NO_DSP)),TRUE)
+    ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+			@$(IF_NOT_EXIST) $(strip $(MODISBUILD_TST_DB))/dbf $(THEN) $(MKDIR) $(strip $(MODISBUILD_TST_DB))/dbf $(CMD_END)
+			@$(FOR) $(DECLARE_VAR)i $(IN) $(DBF_INI_LIST) $(DO) \
+				($(IF_EXIST) $(strip $(DBFINI_DIR))/$(PRE_VAR)i $(THEN) \
+					(mono ${UNIVERSAL_COMMON}/tools/dex_gen/$(strip $(MD_VER_FOLDER))/DSPXMLUtil.exe -iFltrXML $(DSPDIR)/$(strip $(DSP_PROJECT))/$(strip $(DSP_FLAVOR))/final_bin/xml/filterXML -iFilterIni $(strip $(DBFINI_DIR))/$(PRE_VAR)i -oDBFDir "$(strip $(MODISBUILD_TST_DB))/dbf") >> $(strip $(COMPLOGDIR))/gen_dbf.log \
+				$(CMD_END)) \
+			$(DONE)
+    endif
+		@$(ECHO) -n $(POSTGEN) -gen_built_in_filter_utf bin $(CODEGEN_DATABASE_OUT) $(strip $(BUILTINFILTERINI)) $(BUILD_TST_DB) $(strip $(DBF_INPUT_PATH)) >> $(POSTGEN_CFG_MODEM)
+  endif
+endif #end of L1S
+endif #MODIS_CONFIG
+
+	@$(ECHO) -n $(POSTGEN) -gen_built_in_filter_utf src $(CODEGEN_DATABASE_OUT) $(strip $(BUILTINFILTERINI)) $(BUILD_TSTDIR)/src/dhl_builtin_filters.c $(strip $(DBF_INPUT_PATH)) >> $(POSTGEN_CFG_MODEM)
+ifeq ($(strip $(ICD_SUPPORT)),TRUE)
+	@$(ECHO) -n $(POSTGEN) -gen_icd_built_in_filter $(CODEGEN_DATABASE_OUT) $(strip $(PROJDIR))/modem/icd_ac_gen/ICDJSONDef_cgen.json $(strip $(BUILTINFILTERINI)) $(strip $(LOGGING_DATABASE))/XDD/ICD $(BUILD_TSTDIR)/src/icd_builtin_filters.c >> $(POSTGEN_CFG_MODEM)
+endif
+
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+	@$(ECHO) -n $(BUILD_TST_DB)/dsp_filter.bin >>$(CODE_GEN_LST)
+	@$(ECHO) -n $(BUILD_TST_DB)/merge_filter.bin >>$(CODE_GEN_LST)
+# generate meta database
+	@$(ECHO) -n "@PROJECT_NAME@MTK = ENUM_DB"              > $(MODISBUILD_TST_DB)/nvram_db_cnf.ini
+	@$(ECHO) -n "@PROJECT_NAME@CM = ENUM_DB"              >> $(MODISBUILD_TST_DB)/nvram_db_cnf.ini
+	@$(ECHO) -n "nvram_mcf_ota_lid = ENUM_DB"             >> $(MODISBUILD_TST_DB)/nvram_db_cnf.ini
+	@$(ECHO) -n "nvram_mcf_ota_by_operator_lid = ENUM_DB" >> $(MODISBUILD_TST_DB)/nvram_db_cnf.ini
+	@$(ECHO) -n "mcf_tool_version_info = ENUM_DB"         >> $(MODISBUILD_TST_DB)/nvram_db_cnf.ini
+	@$(ECHO) -n "GPRF=SPECIFY_DB"                         >> $(MODISBUILD_TST_DB)/nvram_db_cnf.ini
+
+	@perl ./tools/NVRAMStatistic/gen_secure_nvram_lid_structure_to_db.pl ./interface/service/nvram/nvram_lid_structure_check_extend_list.h $(MODISBUILD_TST_DB)/nvram_db_cnf.ini
+	@$(ECHO) -n "$(POSTGEN) -meta_db_gen $(MODISBUILD_TST_DB)/$(MDDBMETA_V12) $(CODEGEN_DATABASE_OUT) $(MODISBUILD_TST_DB)/nvram_db_cnf.ini -saveXmlFile-$(MODISBUILD_TST_DB)/$(MDDBMETADATABASEXML)" >>$(POSTGEN_CFG_MODEM)
+	@$(ECHO) -n "$(POSTGEN) -compress_gen $(MODISBUILD_TST_DB)/$(MDDBMETADATABASEXML).GZ $(MODISBUILD_TST_DB)/$(MDDBMETADATABASEXML)" >>$(POSTGEN_CFG_MODEM)
+	@$(ECHO) -n $@: $(LOGGING_DATABASE)/XDD/mini_log_Catcher_filters.ini >> $@
+	@$(ECHO) -n $@ >>$(CODE_GEN_LST)
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_cfg_Modem.det
+# *************************************************************************
+IS_LIB_RELEASE := REL_SUB_SW,SRC
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_cfg_Modem.det: FORCE
+endif
+ifneq ($(strip $(UPDATE_DSP)),TRUE)
+$(MODIS_RULESDIR)/codegen_dep/cgen_cfg_Modem.det: $(CODEGEN_DEPENDENCY_MODEM)
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_cfg_Modem.det: $(CGEN)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+  ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifneq ($(words $(strip $(MDDBINFOCUSTOM))),1)
+		@$(ECHO) -n [ERROR] Cannot determine the original codegen database: $(strip $(MDDBINFOCUSTOM)) >> $(CODE_GEN_LOG)
+		@$(ECHO) -n [ERROR] Cannot determine the original codegen database: $(strip $(MDDBINFOCUSTOM))
+		@exit 2
+  endif
+  endif
+else
+  ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+  ifeq ($(MPD_SOURCE_FULL_BUILD),FALSE)
+    ifneq ($(strip $(NO_LTECGEN)),TRUE)
+      ifeq ($(strip $(CODEGEN_DATABASE_IN_SEC)),)
+	@$(ECHO) -n "Error: There is no existing any LTE database in the path: $(CUS_MTK_REL)/dhl/lte_sec/database" >> $(CODE_GEN_LOG)
+	@$(ECHO) -n "Error: $@ Failed. Please check $(CODE_GEN_LOG)" $(WITH) exit 1
+      else ifneq ($(words $(strip $(CODEGEN_DATABASE_IN_SEC))),1)
+	@$(ECHO) -n "Error: There is existing multiple LTE databases: $(strip $(CODEGEN_DATABASE_IN_SEC))" >> $(CODE_GEN_LOG)
+	@$(ECHO) -n "Error: Please remove redundant LTE database in the path: $(CUS_MTK_REL)/dhl/lte_sec/datababase" >> $(CODE_GEN_LOG)
+	@$(ECHO) -n "Error: $@ Failed. Please check $(CODE_GEN_LOG)" $(WITH) exit 1
+      endif
+    endif
+  endif
+  endif
+endif
+	@$(IF_NOT_EXIST) $(strip $(CGEN_CFG_MODEM)) $(THEN) (echo Error: $(CGEN_CFG_MODEM) does not exist!) $(AND) (exit 1) $(CMD_END)
+  ifneq ($(strip $(UPDATE_DSP)),TRUE)
+  ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE)
+		@$(IF_EXIST) $(strip $(CGEN_CFG_MODEM_SEC)) $(THEN) \
+			echo Cgen $(strip $(GEN_DB_OPTION)) -cfg $(CGEN_CFG_MODEM_SEC) $(AND) \
+			($(CGEN) $(strip $(GEN_DB_OPTION)) -cfg $(CGEN_CFG_MODEM_SEC) 2>>$(CODE_GEN_LOG)) $(WITH) \
+			($(IF_ERR_TRUE) $(THEN) (echo Error: Cgen failed. Please check $(CODE_GEN_LOG) $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+    #save enum to db
+		@$(ECHO) -n "$(strip $(MTK_MODEM_ARCH))=0" > $(MODISBUILD_TST_DB_SEC)/mtk_modem_arch_sec.ini
+		@$(ECHO) -n "AUTO_GEN@GLOBAL_DEBUG_LEVEL=$(strip $(GLOBAL_TRACE_DEBUG_LEVEL))" > $(MODISBUILD_TST_DB_SEC)/feature_option_enum_sec.ini
+		@$(ECHO) -n "$(strip $(DSP_PROJECT))=0" > $(MODISBUILD_TST_DB_SEC)/dsp_project_flavor_sec.ini
+		@$(ECHO) -n "$(strip $(DSP_FLAVOR))=1" >> $(MODISBUILD_TST_DB_SEC)/dsp_project_flavor_sec.ini
+
+		@$(ECHO) -n "catcher_filter_bin=0" > $(MODISBUILD_TST_DB_SEC)/modem_filter_list.ini
+  ifneq ($(LOG2SD_CATCHER_FILTERS_LIST),)
+		@perl ./tools/gen_md_filter_list.pl $(strip $(PROJDIR)) $(MODISBUILD_TST_DB_SEC)/modem_filter_list.ini
+  endif
+
+		@$(ECHO) -n "<@MK_MTK_MODEM_ARCH>$(MODISBUILD_TST_DB_SEC)/mtk_modem_arch_sec.ini"          > $(MODISBUILD_TST_DB_SEC)/file2enum_sec.ini
+		@$(ECHO) -n "<@FEATURE_OPTION_ENUM>$(MODISBUILD_TST_DB_SEC)/feature_option_enum_sec.ini"  >> $(MODISBUILD_TST_DB_SEC)/file2enum_sec.ini
+		@$(ECHO) -n "<@MK_DSP_PROJECT_FLAVOR>$(MODISBUILD_TST_DB_SEC)/dsp_project_flavor_sec.ini" >> $(MODISBUILD_TST_DB_SEC)/file2enum_sec.ini
+		@$(ECHO) -n "<@ModemDefaultFilterList>$(MODISBUILD_TST_DB_SEC)/modem_filter_list.ini"     >> $(MODISBUILD_TST_DB_SEC)/file2enum_sec.ini
+
+		@$(IF_EXIST) $(strip $(CODEGEN_DATABASE_OUT_SEC)) $(THEN)\
+			echo $(POSTGEN) $(strip $(GEN_DB_OPTION)) -save_enum $(CODEGEN_DATABASE_OUT_SEC) $(MODISBUILD_TST_DB_SEC)/file2enum_sec.ini $(AND) \
+			($(POSTGEN) $(strip $(GEN_DB_OPTION)) -save_enum $(CODEGEN_DATABASE_OUT_SEC) $(MODISBUILD_TST_DB_SEC)/file2enum_sec.ini 2>>$(CODE_GEN_LOG)) $(WITH) \
+			($(IF_ERR_TRUE) $(THEN) (echo Error: PostGen failed. Please check $(CODE_GEN_LOG) $(WITH) exit 1) $(CMD_END)) \
+		$(CMD_END)
+  endif
+  ifeq ($(MPD_SOURCE_4G_BUILD),TRUE)
+		@$(IF_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) \
+			($(IF_EXIST) $(strip $(CGEN_CFG_MODEM_4G)) $(THEN) \
+				$(ECHO) $(CGEN) $(strip $(GEN_DB_OPTION)) -cfg $(CGEN_CFG_MODEM_4G) $(AND) \
+				($(CGEN) $(strip $(GEN_DB_OPTION)) -cfg $(CGEN_CFG_MODEM_4G) 2>>$(CODE_GEN_LOG)) $(WITH) \
+				($(IF_ERR_TRUE) $(THEN) (echo Error: Cgen failed. Please check $(CODE_GEN_LOG) $(WITH) exit 1) $(CMD_END)) \
+			$(CMD_END)) \
+		$(ELSE) \
+			($(IF_EXIST) $(strip $(CGEN_CFG_MODEM_4G)) $(THEN) \
+				($(CAT) $(strip $(CGEN_CFG_MODEM_4G)) > $(strip $(CGEN_CFG_MODEM))_tmp) $(AND)\
+				($(CAT) $(strip $(CGEN_CFG_MODEM)) >> $(strip $(CGEN_CFG_MODEM))_tmp) $(AND)\
+				($(CAT) $(strip $(CGEN_CFG_MODEM)_tmp) > $(strip $(CGEN_CFG_MODEM))) \
+			$(CMD_END)) \
+		$(CMD_END)
+  endif
+	@$(ECHO) -n $(CGEN) $(strip $(GEN_DB_OPTION)) -cfg $(CGEN_CFG_MODEM)
+	@($(CGEN) $(strip $(GEN_DB_OPTION)) -cfg $(CGEN_CFG_MODEM) 2>>$(CODE_GEN_LOG)) $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Cgen failed. Please check $(CODE_GEN_LOG) $(WITH) exit 1) $(CMD_END))
+  endif #UPDATE_DSP
+	@$(IF_EXIST) $(strip $(POSTGEN_CFG_MODEM)) $(THEN) \
+		$(ECHO) $(POSTGEN) $(strip $(GEN_DB_OPTION)) -cfg $(POSTGEN_CFG_MODEM) $(AND) \
+		($(POSTGEN) $(strip $(GEN_DB_OPTION)) -cfg $(POSTGEN_CFG_MODEM) 2>>$(CODE_GEN_LOG)) $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			$(DEL_FILE) "$(MODISBUILD_TST_DB)/*MDDB*" $(AND) \
+			(echo Error: Postgen failed. Please check $(CODE_GEN_LOG) $(WITH) exit 1) \
+		$(CMD_END)) \
+	$(CMD_END)
+
+	@$(IF_EXIST) $(BUILD_TST_DB)/catcher_filter_Default.bin $(THEN) \
+		$(MOVE) $(BUILD_TST_DB)/catcher_filter_Default.bin $(BUILD_TST_DB)/catcher_filter.bin >$(DEV_NUL) \
+	$(CMD_END)
+
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+	@$(DB_CONVERTER) V12ToV11 $(MODISBUILD_TST_DB)/$(MDDBMETA_V12) $(MODISBUILD_TST_DB)/$(MDDBMETA)  2>>$(CODE_GEN_LOG) $(WITH)\
+	$(IF_ERR_TRUE) $(THEN) (echo Error: DBv12_Converter error. Please check $(CODE_GEN_LOG) $(WITH) exit 1) $(CMD_END)
+endif
+
+  ifeq ($(strip $(MCF_SUPPORT)),TRUE)
+    ifneq ($(strip $(UPDATE_DSP)),TRUE)
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory mcf_gen
+    endif
+  endif
+
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/$(MDDBMETADATABASEXML).GZ $(THEN) \
+		$(IF_EXIST) $(MODISBUILD_TST_DB)/$(MDDBMETADATABASEXML) $(THEN) \
+			$(DEL_FILE) "$(MODISBUILD_TST_DB)/$(MDDBMETADATABASEXML)" \
+		$(CMD_END) \
+	$(CMD_END)
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+#restore xxx_trc_gen.h
+	@($(LIST_DIR) "$(MODISBUILD_TST_DB)/pstrace_db_bak/*.h" 1>$(DEV_NUL) 2>&1 $(WITH) \
+	$(IF_ERR_FALSE) $(THEN)\
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(LIST_DIR) -n -b "$(MODISBUILD_TST_DB)/pstrace_db_bak/*.h"` $(DO)\
+			(($(COMPARE) $(MODISBUILD_TST_DB)/pstrace_db/$(PRE_VAR)i $(MODISBUILD_TST_DB)/pstrace_db_bak/$(PRE_VAR)i >$(DEV_NUL) 2>&1) $(WITH) \
+			($(IF_ERR_FALSE) $(THEN)(touch -r $(MODISBUILD_TST_DB)/pstrace_db_bak/$(PRE_VAR)i $(MODISBUILD_TST_DB)/pstrace_db/$(PRE_VAR)i >$(DEV_NUL)) \
+			$(ELSE) (echo $(PRE_VAR)i is updated) $(CMD_END) ))\
+		$(DONE))\
+	$(CMD_END))
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/pstrace_db_bak $(THEN) $(DEL_DIR) $(MODISBUILD_TST_DB)/pstrace_db_bak $(CMD_END)
+	@($(LIST_DIR) "$(BUILD_TSTDIR)/include_bak/*.h" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) \
+			($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(LIST_DIR) -n -b "$(BUILD_TSTDIR)/include_bak/*.h"` $(DO)\
+			(($(COMPARE) $(BUILD_TSTDIR)/include/$(PRE_VAR)i $(BUILD_TSTDIR)/include_bak/$(PRE_VAR)i >$(DEV_NUL) 2>&1) $(WITH)\
+			($(IF_ERR_FALSE) $(THEN) (touch -r $(BUILD_TSTDIR)/include_bak/$(PRE_VAR)i $(BUILD_TSTDIR)/include/$(PRE_VAR)i >$(DEV_NUL))\
+		$(ELSE) (echo $(PRE_VAR)i is updated) $(CMD_END))) \
+		$(DONE))\
+	$(CMD_END))
+	@$(IF_EXIST) $(BUILD_TSTDIR)/include_bak $(THEN) $(DEL_DIR) $(BUILD_TSTDIR)/include_bak $(CMD_END)
+
+	@($(LIST_DIR) "$(BUILD_TSTDIR)/src_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) \
+			($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(LIST_DIR) -n -b "$(BUILD_TSTDIR)/src_bak/*.*"` $(DO)\
+				(($(COMPARE) $(BUILD_TSTDIR)/src/$(PRE_VAR)i $(BUILD_TSTDIR)/src_bak/$(PRE_VAR)i >$(DEV_NUL) 2>&1) $(WITH)\
+				($(IF_ERR_FALSE) $(THEN) (touch -r $(BUILD_TSTDIR)/src_bak/$(PRE_VAR)i $(BUILD_TSTDIR)/src/$(PRE_VAR)i >$(DEV_NUL))\
+			$(ELSE) (echo $(PRE_VAR)i is updated) $(CMD_END))) \
+		$(DONE))\
+	$(CMD_END))
+	@$(IF_EXIST) $(BUILD_TSTDIR)/src_bak $(THEN) $(DEL_DIR) $(BUILD_TSTDIR)/src_bak $(CMD_END)
+
+	@($(LIST_DIR) "$(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/*.*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+		$(IF_ERR_FALSE) $(THEN) \
+			($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(LIST_DIR) -n -b "$(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/*.*"` $(DO)\
+			(($(COMPARE) $(strip $(PROJ_INTERNAL_DIR))/l1trace/$(PRE_VAR)i $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/$(PRE_VAR)i >$(DEV_NUL) 2>&1) $(WITH)\
+			($(IF_ERR_FALSE) $(THEN) (touch -r $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak/$(PRE_VAR)i $(strip $(PROJ_INTERNAL_DIR))/l1trace/$(PRE_VAR)i >$(DEV_NUL))\
+			$(ELSE) (echo $(PRE_VAR)i is updated) $(CMD_END))) \
+		$(DONE))\
+	$(CMD_END))
+	@$(IF_EXIST) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak $(THEN) $(DEL_DIR) $(strip $(PROJ_INTERNAL_DIR))/l1trace_bak $(CMD_END)
+endif #OS_VERSION
+
+	@$(ECHO) -n $@: $(CGEN) $(POSTGEN) >> $@
+ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE)
+	@$(ECHO) -n $@: $(MODISBUILD_TST_DB_SEC)/mtk_modem_arch_sec.ini >> $@
+	@$(ECHO) -n $@: $(MODISBUILD_TST_DB_SEC)/feature_option_enum_sec.ini >> $@
+	@$(ECHO) -n $@: $(MODISBUILD_TST_DB_SEC)/dsp_project_flavor_sec.ini >> $@
+	@$(ECHO) -n $@: $(MODISBUILD_TST_DB_SEC)/file2enum_sec.ini >> $@
+endif
+	@$(IF_EXIST) $(MODIS_RULESDIR)/codegen_dep/codegen.det $(THEN) $(DEL_FILE) $(MODIS_RULESDIR)/codegen_dep/codegen.det $(CMD_END)
+	@perl ./tools/pack_dep_gen.pl $(dir $@)codegen.det $(dir $@)cgen_preflow.det $(patsubst %/,%,$(dir $@)) "\.det"
+	@$(ECHO) -n $(dir $@)cgen_preflow.det: >>$(dir $@)cgen_preflow.det
+	@$(ECHO) -n $@ >>$(CODE_GEN_LST)
+	@$(ECHO) -n $(dir $@)codegen.det        >> $(CODE_GEN_LST)
+	@$(ECHO) -n $(CGEN_CFG_MODEM)           >> $(CODE_GEN_LST)
+	@$(ECHO) -n $(CGEN_CFG_MODEM_SEC)       >> $(CODE_GEN_LST)
+	@$(ECHO) -n $(CODEGEN_DATABASE_OUT)     >> $(CODE_GEN_LST)
+	@$(ECHO) -n $(CODEGEN_DATABASE_OUT_SEC) >> $(CODE_GEN_LST)
+	@$(ECHO) -n $(dir $@)cgen_preflow.det: $(foreach comp, $(strip $(COMPLIST)), $(strip $(MODULEINFODIR))/$(comp)/$(comp).def) >> $(dir $@)codegen.det
+
+	@perl ./tools/pack_dep_gen.pl $(MODIS_RULESDIR)/codegen.dep custom_parse_db.obj $(patsubst %/,%,$(dir $@)) "\bcustom_parse_db\.det"
+	@perl ./tools/pack_dep_gen.pl $(MODIS_RULESDIR)/srcParseDbModem.d srcParseDbModem.obj $(patsubst %/,%,$(dir $@)) "\bsrcParseDbModem\.det"
+	@$(IF_EXIST) $(MODIS_RULESDIR)/srcParseDbModem.d $(THEN) (($(CAT) $(MODIS_RULESDIR)/srcParseDbModem.d >>$(MODIS_RULESDIR)/codegen.dep) $(AND) ($(DEL_FILE) $(MODIS_RULESDIR)/srcParseDbModem.d)) $(CMD_END)
+
+ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+ifneq ($(PCIBT_ACTION_LIST),)
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) "service/dhl/database/msglog_db/custom_parse_db_tdd_fdd.c" $(dir $@)custom_parse_db_tdd_fdd.det $(filter-out $(IS_LIB_RELEASE), $(PCIBT_ACTION_LIST)) 2>>$(strip $(CODE_GEN_LOG))
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) "service/dhl/database/msglog_db/custom_parse_db.c" $(dir $@)custom_parse_db.det $(filter-out $(IS_LIB_RELEASE), $(PCIBT_ACTION_LIST)) 2>>$(strip $(CODE_GEN_LOG))
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+   ifeq ($(strip $(MPD_SOURCE_4G_BUILD)),TRUE)
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) "service/dhl/database/msglog_db/libParseDbModem.c" $(dir $@)libParseDbModem.det REL_SUB_MPD_COMMON,SRC 2>>$(strip $(CODE_GEN_LOG))
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) "service/dhl/database/msglog_db/libParseDbModem_tdd_fdd.c" $(dir $@)libParseDbModem_tdd_fdd.det REL_SUB_MPD_COMMON,SRC 2>>$(strip $(CODE_GEN_LOG))
+   endif
+   ifeq ($(strip $(MPD_SOURCE_FULL_BUILD)),TRUE)
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) "service/dhl/database/msglog_db/libParseDbModem_4g.c" $(dir $@)libParseDbModem_4g.det REL_SUB_MPD_4G,SRC 2>>$(strip $(CODE_GEN_LOG))
+   endif
+  endif
+endif
+endif
+
+ifeq ($(strip $(NVRAM_LID_CHECK)),TRUE)
+	@$(ECHO) -n ==== NVRAM LID CHECK START ====
+	@$(IF_EXIST) $(strip $(PROJDIR))/nvram_auto_gen/MDDB.META.ODB.XML $(THEN) $(DEL_FILE) $(strip $(PROJDIR))/nvram_auto_gen/MDDB.META.ODB.XML $(CMD_END)
+	@perl ./tools/NVRAMStatistic/nvram_lid_check.pl ./tools/NVRAMStatistic/lid/$(PROJECT_NAME)/$(FLAVOR) $(strip $(PROJDIR))/nvram_auto_gen $(strip $(COMPLOGDIR))/nvram_lid_check.log /s NVRAM_OTA_SMART_RESET=$(NVRAM_OTA_SMART_RESET) >$(strip $(COMPLOGDIR))/nvram_lid_check.log 2>&1\
+	$(WITH) \
+	($(IF_ERR_TRUE) $(THEN) (echo Error: NVRAM LID CHECK failed.Please check $(strip $(COMPLOGDIR))/nvram_lid_check.log $(WITH) exit 1) $(CMD_END))
+	@$(ECHO) -n $(dir $@)cgen_preflow.det: tools/NVRAMStatistic/nvram_lid_check.pl >> $(dir $@)codegen.det
+	@$(ECHO) -n ==== NVRAM LID CHECK END ====
+endif
+
+ifeq ($(strip $(NV_CHKSUM_ENHANCE)),TRUE)
+	@$(ECHO) -n ==== NVRAM CHECKSUM ALGORITHM DOUBLE CHECK START ====
+	@$(IF_EXIST) $(strip $(PROJDIR))/nvram_auto_gen/MDDB.META.ODB.XML $(THEN) $(DEL_FILE) $(strip $(PROJDIR))/nvram_auto_gen/MDDB.META.ODB.XML $(CMD_END)
+	@python ./tools/NVRAMStatistic/nvram_checksum_algorithm_double_check.py ./tools/NVRAMStatistic/lid/$(PROJECT_NAME)/$(FLAVOR) $(strip $(PROJDIR))/nvram_auto_gen >> $(strip $(COMPLOGDIR))/nvram_gen_full_log.log 2>>$(strip $(COMPLOGDIR))/nvram_gen.log\
+	$(WITH) \
+	($(IF_ERR_TRUE) $(THEN) (echo Error: NVRAM LID CHECKSum Double check failed.Please check $(strip $(COMPLOGDIR))/nvram_gen.log $(WITH) exit 1) $(CMD_END))
+	@$(ECHO) -n $(dir $@)cgen_preflow.det: tools/NVRAMStatistic/nvram_checksum_algorithm_double_check.py >> $(dir $@)codegen.det
+	@$(ECHO) -n ==== NVRAM CHECKSUM ALGORITHM DOUBLE CHECK END ====
+endif
+
+ifeq ($(strip $(NVRAM_OTA_SMART_RESET)),TRUE)
+	@$(ECHO) -n ==== NVRAM POST GEN START ====
+	@perl ./tools/NVRAMStatistic/nvram_post_gen.pl $(strip $(PROJDIR))/nvram_auto_gen $(strip $(COMPLOGDIR))/nvram_post_gen.log >$(strip $(COMPLOGDIR))/nvram_post_gen.log 2>&1 $(WITH)\
+	($(IF_ERR_TRUE) $(THEN) (echo Error: NVRAM post gen failed. Please check $(strip $(COMPLOGDIR))/nvram_post_gen.log $(WITH) exit 1) $(CMD_END))
+	@$(ECHO) -n $(dir $@)cgen_preflow.det: tools/NVRAMStatistic/nvram_post_gen.pl >> $(dir $@)codegen.det
+	@$(ECHO) -n ==== NVRAM POST GEN END ====
+endif
+
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h $(THEN) $(DEL_FILE) $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_1.h $(CMD_END)
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_2.h $(THEN) $(DEL_FILE) $(MODISBUILD_TST_DB)/pstrace_db/ps_trace_2.h $(CMD_END)
+
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) $(DEL_FILE) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(CMD_END)
+
+#gen nvram lid db database
+ifeq ($(strip $(NVRAM_LID_DESC_CHECK)),TRUE)
+	@(python ./tools/NVRAMStatistic/nvram_gen_excel/nvram_monitor.py $(strip $(PROJDIR)) >> $(strip $(TARGDIR))/build.log)
+endif
+
+	@$(ECHO) "$@ END TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: mcf_gen
+# Generate MCF Db 
+# *************************************************************************
+MCF_XML_LIST := $(wildcard ./custom/service/mcf/ota_files/MTK_OTA.xml)
+ifeq ($(strip $(OS_VERSION)),MSWin32)
+    MCF_OTA_GEN =  ".\tools\MCF\MCF_OTA_Gen\MCF_OTA_Gen.exe"
+else
+    MCF_OTA_GEN =  ./tools/MCF/MCF_OTA_Gen/MCF_OTA_Gen
+endif
+ifeq ($(strip $(MCF_OTA_NAME)),DEFAULT)
+  ifneq ($(strip $(MCF_OTA_DEFAULT_NAME)),)
+    MCF_OTA_NAME = $(strip $(MCF_OTA_DEFAULT_NAME))
+  endif
+endif
+mcf_gen: $(POSTGEN_DEP)/mcf_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(POSTGEN_DEP)/./mcf_gen.det)
+else
+$(POSTGEN_DEP)/mcf_gen.det: FORCE
+endif
+$(POSTGEN_DEP)/mcf_gen.det:
+ifeq ($(strip $(MCF_SUPPORT)),TRUE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(POSTGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(POSTGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_postcgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/modem/mcf $(THEN) $(MKDIR) $(strip $(PROJDIR))/modem/mcf $(CMD_END)
+	@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcf/new_item_found.txt $(THEN) $(DEL_FILE) $(strip $(PROJDIR))/modem/mcf/new_item_found.txt $(CMD_END)
+	@$(ECHO) -n ==== MCF GEN START ====
+    ifeq ($(strip $(OS_VERSION)),MSWin32)
+	@".\tools\MCF\mcf_parser_gen.exe" codegen $(MODISBUILD_TST_DB)/$(MDDBMETADATABASEXML) $(strip $(PROJDIR))/nvram_auto_gen/custom_nvram_lid_cat.xml ./custom/service/mcf/system_files/mcf_system.csv ./custom/service/mcf/system_files/branch.txt $(strip $(PROJDIR))/modem/mcf $(strip $(PROJDIR))/modem/mcf $(strip $(PROJDIR))/modem/mcf/MDDB.MCF.ODB.xml  -n>>$(strip $(COMPLOGDIR))/mcf_parser_gen.log $(WITH)\
+	$(IF_ERR_TRUE) $(THEN) (echo Error: mcf_parser_gen error. Please check $(strip $(COMPLOGDIR))/mcf_parser_gen.log $(WITH) exit 1) $(CMD_END)
+    else
+	@./tools/MCF/mcf_parser_gen codegen $(MODISBUILD_TST_DB)/$(MDDBMETADATABASEXML) $(strip $(PROJDIR))/nvram_auto_gen/custom_nvram_lid_cat.xml ./custom/service/mcf/system_files/mcf_system.csv ./custom/service/mcf/system_files/branch.txt $(strip $(PROJDIR))/modem/mcf $(strip $(PROJDIR))/modem/mcf $(strip $(PROJDIR))/modem/mcf/MDDB.MCF.ODB.xml  -n>>$(strip $(COMPLOGDIR))/mcf_parser_gen.log $(WITH) \
+	$(IF_ERR_TRUE) $(THEN) (echo Error: mcf_gen mcf_parser_gen error. Please check $(strip $(COMPLOGDIR))/mcf_parser_gen.log | tee -a $(strip $(COMPLOGDIR))/mcf_parser_gen.log $(WITH) exit 1) $(CMD_END)
+    endif
+
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/modem/mcf/all_ota_files $(THEN) $(MKDIR) $(strip $(PROJDIR))/modem/mcf/all_ota_files $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/modem/mcf/flavor_ota_files $(THEN) $(MKDIR) $(strip $(PROJDIR))/modem/mcf/flavor_ota_files $(CMD_END)
+
+	@$(ECHO) -n Start to build all MCF OTA files > $(strip $(COMPLOGDIR))/mcf_ota_gen.log
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(MCF_XML_LIST) $(DO) \
+		$(ECHO) -n Build $(PRE_VAR)i >> $(strip $(COMPLOGDIR))/mcf_ota_gen.log $(WITH) \
+		$(MCF_OTA_GEN) -d $(strip $(PROJDIR))/modem/mcf/MDDB.MCF.ODB.xml -i $(PRE_VAR)i -o $(strip $(PROJDIR))/modem/mcf/all_ota_files >>$(strip $(COMPLOGDIR))/mcf_ota_gen.log $(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: mcf_ota_gen error. Please check $(strip $(COMPLOGDIR))/mcf_ota_gen.log $(WITH) exit 1) $(CMD_END) \
+        $(DONE)
+    ifneq ($(strip $(MTK_OTA_LIST)),NONE)
+	@$(ECHO) -n Start to build flavor MCF OTA files >> $(strip $(COMPLOGDIR))/mcf_ota_gen.log
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(MTK_OTA_LIST) $(DO) \
+		$(ECHO) -n Build ./custom/service/mcf/ota_files/$(PRE_VAR)i >> $(strip $(COMPLOGDIR))/mcf_ota_gen.log $(WITH) \
+		$(MCF_OTA_GEN) -d $(strip $(PROJDIR))/modem/mcf/MDDB.MCF.ODB.xml -i ./custom/service/mcf/ota_files/$(PRE_VAR)i.xml -o $(strip $(PROJDIR))/modem/mcf/flavor_ota_files >>$(strip $(COMPLOGDIR))/mcf_ota_gen.log $(WITH) \
+		$(IF_ERR_TRUE) $(THEN) (echo Error: mcf_ota_gen error. Please check $(strip $(COMPLOGDIR))/mcf_ota_gen.log $(WITH) exit 1) $(CMD_END) \
+        $(DONE)
+    endif
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+		@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcf/all_ota_files  $(THEN) \
+			(($(COPY_FILE) ./custom/service/mcf/ota_files/* $(strip $(PROJDIR))/modem/mcf/all_ota_files > $(strip $(COMPLOGDIR))/tar_ota_file.log 2>&1) \
+			$(WITH) \
+			($(COPY_FILE) $(strip $(PROJDIR))/modem/mcf/flavor_ota_files/* $(strip $(PROJDIR))/modem/mcf/all_ota_files > $(strip $(COMPLOGDIR))/tar_ota_file.log 2>&1) \
+			$(WITH) \
+			(perl ./tools/MCF/modify_ota_config.pl $(strip $(PROJDIR))/modem/mcf/all_ota_files/MTK_MD_OTA_CONFIG.ini $(strip $(MCF_OTA_NAME)) > $(strip $(COMPLOGDIR))/tar_ota_file.log 2>&1) \
+			$(WITH) \
+			(tar -zcv -f $(strip $(TARGDIR))/MCF_OTA_FILES.tar.gz -C $(strip $(PROJDIR))/modem/mcf/all_ota_files . > $(strip $(COMPLOGDIR))/tar_ota_file.log 2>&1) \
+			$(WITH) \
+			($(IF_ERR_TRUE) $(THEN) (echo Error: mcf_gen pack ota files failed. Please check $(strip $(COMPLOGDIR))/tar_ota_file.log | tee -a $(strip $(COMPLOGDIR))/tar_ota_file.log $(WITH) exit 1) $(CMD_END))) \
+		$(CMD_END)
+		@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcf/MDDB.MCF.ODB.xml  $(THEN) \
+			((tar -zcvf $(strip $(TARGDIR))/MDDB.MCF.ODB.tar.gz -C $(strip $(PROJDIR))/modem/mcf/ MDDB.MCF.ODB.xml > $(strip $(COMPLOGDIR))/tar_mcf_db.log 2>&1) \
+			$(WITH) \
+			($(IF_ERR_TRUE) $(THEN) (echo Error: mcf_gen pack mcf db failed. Please check $(strip $(COMPLOGDIR))/tar_mcf_db.log | tee -a $(strip $(COMPLOGDIR))/tar_mcf_db.log $(WITH) exit 1) $(CMD_END))) \
+		$(CMD_END)
+      ifeq ($(strip $(MCF_DIFF_CHECK)),TRUE)
+		@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcf/new_item_found.txt  $(THEN) \
+		((echo Error: MCF diff check error. >> $(strip $(COMPLOGDIR))/mcf_diff_check.log) \
+		$(WITH) ($(CAT) ./tools/MCF/new_var_found_guideline.txt >> $(strip $(COMPLOGDIR))/mcf_diff_check.log) \
+		$(WITH) ($(CAT) $(strip $(PROJDIR))/modem/mcf/new_item_found.txt >> $(strip $(COMPLOGDIR))/mcf_diff_check.log) \
+		$(WITH) (echo MCF diff check end. >> $(strip $(COMPLOGDIR))/mcf_diff_check.log) \
+		$(WITH) (echo MCF diff check error. Please check $(strip $(COMPLOGDIR))/mcf_diff_check.log) \
+		$(WITH) (exit 1)) \
+		$(CMD_END)
+      endif
+    else
+		@$(IF_EXIST) $(strip $(PROJDIR))/modem/mcf/all_ota_files  $(THEN) \
+ 			(($(IF_NOT_EXIST) $(strip $(MODISPROJDIR))/WIN32FS/mdota $(THEN) $(MKDIR) $(strip $(MODISPROJDIR))/WIN32FS/mdota $(CMD_END)) \
+			$(WITH) \
+			($(COPY_FILE) ./custom/service/mcf/ota_files/* $(strip $(PROJDIR))/modem/mcf/all_ota_files > $(strip $(COMPLOGDIR))/tar_ota_file.log 2>&1) \
+			$(WITH) \
+			(perl ./tools/MCF/modify_ota_config.pl $(strip $(PROJDIR))/modem/mcf/all_ota_files/MTK_MD_OTA_CONFIG.ini $(strip $(MCF_OTA_NAME)) > $(strip $(COMPLOGDIR))/tar_ota_file.log 2>&1) \
+			$(WITH) \
+			($(COPY_FILE) $(strip $(PROJDIR))/modem/mcf/all_ota_files/* $(strip $(MODISPROJDIR))/WIN32FS/mdota > $(strip $(COMPLOGDIR))/tar_ota_file.log 2>&1) \
+ 			$(WITH) \
+			($(COPY_FILE) $(strip $(PROJDIR))/modem/mcf/flavor_ota_files/* $(strip $(MODISPROJDIR))/WIN32FS/mdota > $(strip $(COMPLOGDIR))/tar_ota_file.log 2>&1)) \
+		$(CMD_END)
+    endif
+	@$(ECHO) -n "$@: $(MODISBUILD_TST_DB)/$(MDDBMETADATABASEXML)" >> $@
+	@$(ECHO) -n "$@: $(strip $(PROJDIR))/nvram_auto_gen/custom_nvram_lid_cat.xml" >> $@
+	@$(ECHO) -n "$@: custom/service/mcf/system_files/mcf_system.csv" >> $@
+	@$(ECHO) -n "$@: custom/service/mcf/system_files/branch.txt" >> $@
+	@$(ECHO) -n "$@: tools/MCF/mcf_parser_gen" >> $@
+	@$(ECHO) -n ==== MCF GEN END ====
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+  #delete target file for cleaning legacy code
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >>$(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif # MCF_SUPPORT
+
+# *************************************************************************
+# TARGET: cleancodegen
+# Clean Generated Code Sources
+# *************************************************************************
+cleancodegen:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+ifneq ($(strip $(SMART_CHECK)),TRUE)
+ifneq ($(strip $(AUTO_CHECK_DEPEND)),TRUE)
+	@$(ECHO) -n clean codegen list
+   # $(CODE_GEN_LST) should be copied to another place then delete
+	@$(IF_EXIST) $(CODE_GEN_LST) $(THEN)\
+		(($(COPY_FILE) $(CODE_GEN_LST) $(strip $(TMPDIR))/~codegenlis.tmp >$(DEV_NUL)) $(AND) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(CODE_GEN_LST)` $(DO) \
+			($(IF_EXIST) $(PRE_VAR)i $(THEN) $(DEL_FILE) $(PRE_VAR)i $(CMD_END)) \
+		$(DONE)) $(WITH) \
+		($(DEL_FILE) $(CODE_GEN_LST))) \
+	$(CMD_END)
+  ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+	@$(IF_EXIST) $(strip ${CODEGEN_DEP}) $(THEN) $(DEL_DIR) $(strip ${CODEGEN_DEP}) $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip ${CODEGEN_DEP}) $(THEN) $(MKDIR) $(strip ${CODEGEN_DEP}) $(CMD_END)
+  endif
+endif
+endif
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Target: sysgen_init
+# Copy custom files to build folder
+# *************************************************************************
+sysgen_init: $(PREGEN_DEP)/sysgen_init.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./sysgen_init.det)
+else
+$(PREGEN_DEP)/sysgen_init.det: FORCE
+endif
+$(PREGEN_DEP)/sysgen_init.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+ifneq ($(strip $(DISABLE_SYS)),TRUE)
+#backup custom/system files
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+#can not remove system backup folder due to previously incremental build may fail at autogen steps.
+#	@$(IF_EXIST) $(strip $(PROJDIR))/custom/system_bak $(THEN) ($(DEL_DIR) $(strip $(PROJDIR))/custom/system_bak) $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(PROJDIR))/custom/system_bak $(THEN) ($(MKDIR) $(strip $(PROJDIR))/custom/system_bak) $(CMD_END)
+	@($(LIST_DIR) "$(strip $(PROJDIR))/custom/system/*.*" 1>$(DEV_NUL) 2>&1 $(WITH) \
+	$(IF_ERR_FALSE) $(THEN) \
+		($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(LIST_DIR) -n -b "$(strip $(PROJDIR))/custom/system/*.*"` $(DO) \
+			(mv -f $(strip $(PROJDIR))/custom/system/$(PRE_VAR)i $(strip $(PROJDIR))/custom/system_bak/$(PRE_VAR)i) $(AND) \
+			(echo $(strip $(PROJDIR))/custom/system/$(PRE_VAR)i is moved to $(strip $(PROJDIR))/custom/system_bak/$(PRE_VAR)i!) \
+		$(DONE)) \
+	$(CMD_END))
+
+endif
+
+	@perl ./tools/sysgen_init.pl $(call CUSTOM_FLD_MAPPING,./custom/system) $(strip $(BUILD_SYSDIR)) $(strip $(SMART_CHECK)) > $(strip $(COMPLOGDIR))/sysgen_init.log $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: sysgen_init Failed. Please check  $(strip $(COMPLOGDIR))/sysgen_init.log $(WITH) exit 1) $(CMD_END))
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Target: emigen
+# Generate emi settings based on configurations in custom_MemoryDevice.h
+# *************************************************************************
+MEMORY_FILE := $(wildcard $(strip $(TMPDIR))/*.xls)
+emigen: sysgen_init $(PREGEN_DEP)/emigen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./emigen.det)
+else
+$(PREGEN_DEP)/emigen.det: FORCE
+endif
+$(PREGEN_DEP)/emigen.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+ifneq ($(MEMORY_FILE),)
+	@$(IF_EXIST) $(MEMORY_FILE) $(THEN) ($(DEL_FILE) $(MEMORY_FILE)) $(CMD_END)
+endif
+
+	@$(IF_NOT_EXIST) $(COMPLOGDIR) $(THEN) ($(MKDIR) $(COMPLOGDIR)) $(CMD_END)
+
+	@$(ECHO) -n Generate EMI settings
+	@$(IF_EXIST) $(strip $(EMI_GENERATOR)) $(THEN) \
+		(perl $(strip $(EMI_GENERATOR)) FALSE $(strip $(MEMORY_DEVICE_HDR)) "$(strip $(PROJECT_MAKEFILE))" FALSE $(strip $(INSIDE_MTK)) $(strip $(TMPDIR)) $@ > $(strip $(COMPLOGDIR))/emigen.log 2>&1) $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: emigen Failed. Please check  $(strip $(COMPLOGDIR))/emigen.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+  #delete target file for cleaning legacy code
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Target: copro_info_gen
+# *************************************************************************
+copro_info_gen: $(PREGEN_DEP)/copro_info_gen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./copro_info_gen.det)
+else
+$(PREGEN_DEP)/copro_info_gen.det: FORCE
+endif
+$(PREGEN_DEP)/copro_info_gen.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(ECHO) -n "L1CORE_IMAGELAYOUT = $(L1CORE_SCATTERFILE)">$(strip $(TMPDIR))/~copro_info.tmp
+	@$(ECHO) -n "L1CORE_MAP = $(L1CORE_MAP_FILE)" >> $(strip $(TMPDIR))/~copro_info.tmp
+	@$(ECHO) -n "L1CORE_SYM = $(L1CORE_SYM_FILE)" >> $(strip $(TMPDIR))/~copro_info.tmp
+
+	@$(IF_EXIST) $(FIXPATH)/tools/copro_info_gen.pl $(THEN)\
+		(perl $(FIXPATH)/tools/copro_info_gen.pl $(FORCE_GEN) $(strip $(TMPDIR))/~copro_info.tmp "$(strip $(PROJECT_MAKEFILE))" $(strip $(INFOMAKELOG)) $(SINGLE_CORE) $@ > $(strip $(COMPLOGDIR))/copro_info_gen.log 2>&1) $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) echo Error: copro_info_gen.pl failed. Please check $(strip $(COMPLOGDIR))/copro_info_gen.log $(WITH) exit 1 $(CMD_END)) \
+	$(CMD_END)
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Generate custom\system\BB\* base on makefile and EMI.h
+# *************************************************************************
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+sysgen: sys_auto_gen sys_mem_gen
+else
+sysgen: sys_auto_gen sys_mem_gen mertos_codegen
+endif
+sys_auto_gen: $(PREGEN_DEP)/sysgen_conf.det ckmemlayout
+
+$(PREGEN_DEP)/sysgen_conf.det: genlog copro_info_gen emigen
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./sysgen_conf.det)
+else
+$(PREGEN_DEP)/sysgen_conf.det: FORCE
+endif
+$(PREGEN_DEP)/sysgen_conf.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+# use specific lds
+ifeq ($(strip $(HARDCODE_LDS)),TRUE)
+	@$(IF_EXIST) $(FIXPATH)/$(SCATTERFILE_PATH)/$(USER_DEFINE_SCATTERFILE_SRC) $(THEN) \
+		$(COPY_FILE) $(SCATTERFILE_PATH)/$(USER_DEFINE_SCATTERFILE_SRC) $(SCATTERFILE) \
+	$(ELSE) \
+		(echo Error: no such lds file: $(FIXPATH)/$(SCATTERFILE_PATH)/$(USER_DEFINE_SCATTERFILE_SRC) $(WITH) exit 1) \
+	$(CMD_END)
+endif
+
+	@$(IF_EXIST) $(FIXPATH)/tools/sys_auto_gen.pl $(THEN) \
+		((perl $(FIXPATH)/tools/sys_auto_gen.pl $(SCATTERFILE) $(BL_SCATTERFILE) "$(strip $(PROJECT_MAKEFILE))" $(strip $(BUILD_SYSDIR)) $(strip $(NEED_BUILD_BOOTLOADER)) $(strip $(INSIDE_MTK)) $(strip $(DUMMY_LIS)) $(strip $(INFOMAKELOG)) $(strip $(TMPDIR))/~copro_info.tmp $(LIBDIR_TEMP) $(strip $(CC)) $@ > $(strip $(COMPLOGDIR))/sysgen.log) \
+		$(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: sys_auto_gen Failed. Please check $(strip $(COMPLOGDIR))/sysgen.log $(WITH) exit 1) $(CMD_END))) \
+	$(CMD_END)
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Calculate system memory size and generate header files
+# *************************************************************************
+sys_mem_gen:
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+sys_mem_gen: genlog
+endif
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $(strip $(TMPDIR))/~config_optInc.tmp $(THEN) ($(DEL_FILE) $(strip $(TMPDIR))/~config_optInc.tmp) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TMPDIR))/~config_Option.tmp $(THEN) ($(DEL_FILE) $(strip $(TMPDIR))/~config_Option.tmp) $(CMD_END)
+	@$(MAKE) -fmake/common/build.mak -r -R --no-print-directory --old-file=genlog MODIS_CONFIG=$(strip $(MODIS_CONFIG)) MODIS_UESIM=$(strip $(MODIS_UESIM)) ALL_MODULELIS=config.lis genmoduleinfo
+  ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+		@$(ECHO) -n System memory calculation for $(strip $(MODIS_UESIM))>$(strip $(MODISLOGDIR))/syscomp.log
+  else
+		@$(ECHO) -n System memory calculation for Target>$(strip $(COMPLOGDIR))/syscomp.log
+		@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~config_optInc.tmp $(foreach inc,$(subst \,/,$(COMMINCDIRS)),-I$(inc))
+		@$(STRCMPEX) def def e $(strip $(TMPDIR))/~config_opt.tmp $(foreach def,$(COM_DEFS),-D$(def))
+		@$(CAT) $(strip $(TMPDIR))/~config_opt.tmp >> $(strip $(TMPDIR))/~config_optInc.tmp
+  endif
+
+	@$(ECHO) -n -D__SYS_MEM_GEN__ >> $(strip $(TMPDIR))/~config_optInc.tmp
+
+  ifeq ($(strip $(OS_VERSION)),MSWin32)
+		@$(IF_EXIST) $(strip $(MODULEINFODIR))/config $(THEN)\
+			($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(MODULEINFODIR))/config/config.def ` \
+			$(DO)\
+				(echo ^#define $(PRE_VAR)i >>$(strip $(TMPDIR))/~config_Option.tmp) $(DONE)) $(WITH) \
+				(perl ./tools/replace_string.pl $(strip $(TMPDIR))/~config_Option.tmp = " " $(strip $(TMPDIR))/~config_Option.tmp) $(WITH) \
+			($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(MODULEINFODIR))/config/config.inc ` \
+			$(DO)\
+				(echo -I$(PRE_VAR)i >>$(strip $(TMPDIR))/~config_optInc.tmp) $(DONE)) \
+		$(CMD_END)
+  else
+		@$(IF_EXIST) $(strip $(MODULEINFODIR))/config $(THEN)\
+			($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(MODULEINFODIR))/config/config.def ` \
+			$(DO)\
+				(echo -D$(PRE_VAR)i >>$(strip $(TMPDIR))/~config_optInc.tmp) $(DONE)) $(WITH) \
+			($(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(CAT) $(strip $(MODULEINFODIR))/config/config.inc ` \
+			$(DO)\
+				(echo -I$(PRE_VAR)i >>$(strip $(TMPDIR))/~config_optInc.tmp) $(DONE)) \
+		$(CMD_END)
+  endif
+  #backup syscomp_config for incremental build
+  ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(IF_EXIST) $(strip $(TMPDIR))/~syscomp_config.o $(THEN) mv $(strip $(TMPDIR))/~syscomp_config.o $(strip $(TMPDIR))/~syscomp_config_bak.o >$(DEV_NUL) $(CMD_END)
+  endif
+  ifeq ($(strip $(OS_VERSION)),MSWin32)
+		@$(IF_EXIST) ./service/config/src/hal/syscomp_config.c $(THEN)\
+			($(CC) $(VIA)$(strip $(TMPDIR))/~config_optInc.tmp -imacros $(strip $(TMPDIR))/~config_Option.tmp -c ./service/config/src/hal/syscomp_config.c -o $(strip $(TMPDIR))/~syscomp_config.o 2>$(strip $(MODISLOGDIR))/sys_mem_gen.log $(AND) \
+			(perl ./tools/sys_mem_gen/sys_mem_gen.pl $(strip $(TMPDIR))/~syscomp_config.o $(strip $(BUILD_SYSDIR)) $(MODIS_CONFIG) $(strip $(MODISLOGDIR)) $(INFOMAKELOG) "$(CROSS)" $(strip $(MTK_MODEM_ARCH)) >>$(strip $(MODISLOGDIR))/sys_mem_gen.log $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: System memory calculation failed. Please check $(strip $(MODISLOGDIR))/sys_mem_gen.log $(WITH) exit 1) $(CMD_END))) \
+		$(CMD_END)
+  else
+    ifeq ($(strip $(COMPILER_ARCH)),MIPS)
+			@$(ECHO) -EL -fshort-enums >> $(strip $(TMPDIR))/~config_optInc.tmp
+    endif
+		@$(IF_EXIST) ./service/config/src/hal/syscomp_config.c $(THEN)\
+			($(CC) $(VIA)$(strip $(TMPDIR))/~config_optInc.tmp -c ./service/config/src/hal/syscomp_config.c -o $(strip $(TMPDIR))/~syscomp_config.o 2>$(strip $(COMPLOGDIR))/sys_mem_gen.log $(AND) \
+			(perl ./tools/sys_mem_gen/sys_mem_gen.pl $(strip $(TMPDIR))/~syscomp_config.o $(strip $(BUILD_SYSDIR)) $(MODIS_CONFIG) $(strip $(COMPLOGDIR)) $(INFOMAKELOG) "$(CROSS)" $(strip $(MTK_MODEM_ARCH)) >>$(strip $(COMPLOGDIR))/sys_mem_gen.log $(WITH) \
+			$(IF_ERR_TRUE) $(THEN) (echo Error: System memory calculation failed. Please check $(strip $(COMPLOGDIR))/sys_mem_gen.log $(WITH) exit 1) $(CMD_END))) \
+		$(CMD_END)
+
+    ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+      ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+        ifeq ($(filter CHIP10992,$(strip $(COM_DEFS))),)
+			@python ./tools/kal_config/kal_config_irq_info_parser.py $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(MTK_MODEM_ARCH)) $(strip $(PLATFORM)) > $(strip $(COMPLOGDIR))/irq_config_table.csv 2>$(strip $(COMPLOGDIR))/irq_config_table.log $(WITH) \
+				$(IF_ERR_TRUE) $(THEN) (echo Error: Generate IRQ configuration table failed. Please check $(strip $(COMPLOGDIR))/irq_config_table.log $(WITH) exit 1) $(CMD_END)
+        else
+			@python ./tools/kal_config/kal_config_irq_info_parser.py $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(MTK_MODEM_ARCH)) $(strip CHIP10992) > $(strip $(COMPLOGDIR))/irq_config_table.csv 2>$(strip $(COMPLOGDIR))/irq_config_table.log $(WITH) \
+				$(IF_ERR_TRUE) $(THEN) (echo Error: Generate IRQ configuration table failed. Please check $(strip $(COMPLOGDIR))/irq_config_table.log $(WITH) exit 1) $(CMD_END)
+        endif
+      endif
+    endif
+  endif
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(IF_EXIST) $(strip $(TMPDIR))/~syscomp_config_bak.o $(THEN) \
+		(($(COMPARE) $(strip $(TMPDIR))/~syscomp_config.o $(strip $(TMPDIR))/~syscomp_config_bak.o >$(DEV_NUL) 2>&1) $(WITH) \
+			($(IF_ERR_FALSE) $(THEN) \
+				(touch -r $(strip $(TMPDIR))/~syscomp_config_bak.o $(strip $(TMPDIR))/~syscomp_config.o >$(DEV_NUL)) $(AND) \
+				(echo $(strip $(TMPDIR))/~syscomp_config.o timestamp is changed from $(strip $(TMPDIR))/~syscomp_config_bak.o!) \
+			$(CMD_END))) $(AND) \
+		($(DEL_FILE) $(strip $(TMPDIR))/~syscomp_config_bak.o) \
+	$(CMD_END)
+endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# Generate codes required by MERTOS
+# *************************************************************************
+mertos_codegen: sys_mem_gen $(PREGEN_DEP)/mertos_codegen.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./mertos_codegen.det)
+else
+$(PREGEN_DEP)/mertos_codegen.det: FORCE
+endif
+$(PREGEN_DEP)/mertos_codegen.det:
+ifeq ($(strip $(RTOS)),MERTOS)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(ECHO) "$@ START TIME=" >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+
+	@$(IF_NOT_EXIST) $(COMPLOGDIR) $(THEN) ($(MKDIR) $(COMPLOGDIR)) $(CMD_END)
+
+  # Body Start
+	@$(ECHO) -n Generating MERTOS required information ...
+  # Execute codegen script; reuse the ~syscomp_config.o generated in sys_mem_gen
+	@$(ECHO) -n python ./tools/mertos/mer_codegen.py $(strip $(CROSS))readelf $(strip $(TMPDIR))/~syscomp_config.o $(strip $(BUILD_SYSDIR)) > $(strip $(COMPLOGDIR))/mertos_codegen.log
+	@(python ./tools/mertos/mer_codegen.py $(strip $(CROSS))readelf $(strip $(TMPDIR))/~syscomp_config.o $(strip $(BUILD_SYSDIR)) >> $(strip $(COMPLOGDIR))/mertos_codegen.log 2>&1 $(WITH) \
+	$(IF_ERR_TRUE) $(THEN) (echo Error: mertos_codegen Failed. Please check $(strip $(COMPLOGDIR))/mertos_codegen.log $(WITH) exit 1) $(CMD_END))
+  # Body End
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common >> $(strip $(COMPLOGDIR))/genJson.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			((echo Error: the command is \"$(GEN_TARGET_FILE) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(DSP_PROJECT)) $(strip $(DSP_FLAVOR)) $(strip $(TARGET_MODIS_UESIM)) $@ $@ common\") $(AND) \
+			echo Error: Failed in tools/genTargetFile.py at $@. Please check $(strip $(COMPLOGDIR))/genJson.log !$(WITH) exit 1) \
+		$(CMD_END))
+endif
+
+	@$(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log
+	@$(CHK_TIME) >> $(strip $(TARGDIR))/build.log
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+endif
+
+# *************************************************************************
+
+# *************************************************************************
+# Target: gen_sfini
+# *************************************************************************
+gen_sfini: $(PREGEN_DEP)/gen_sfini.det
+ifeq ($(strip $(SMART_CHECK)),TRUE)
+include $(wildcard $(PREGEN_DEP)/./gen_sfini.det)
+else
+$(PREGEN_DEP)/gen_sfini.det: FORCE
+endif
+$(PREGEN_DEP)/gen_sfini.det:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_NOT_EXIST) $(strip $(PREGEN_DEP)) $(THEN) ($(MKDIR) $(strip $(PREGEN_DEP))) $(CMD_END)
+	@$(IF_EXIST) $@ $(THEN) ($(DEL_FILE) $@) $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+#		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_precgen.log
+  endif
+
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(TARGNAME).lis $(THEN)\
+		(perl ./tools/MarginCalc.pl $(strip $(TARGDIR))/$(TARGNAME).lis >$(strip $(COMPLOGDIR))/MarginCalc.log 2>&1 $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo ./tools/MarginCalc.pl Error. Please check $(strip $(COMPLOGDIR))/MarginCalc.log $(WITH) exit 1) $(CMD_END)))\
+	$(CMD_END)
+
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/libs.log $(THEN) ($(DEL_FILE) $(strip $(COMPLOGDIR))/libs.log) $(CMD_END)
+ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(COMPLIST) $(DO) \
+		(echo $(strip $(COMPLIBDIR))/lib$(PRE_VAR)i.a >> $(strip $(COMPLOGDIR))/libs.log) \
+		$(DONE)
+else
+  ifneq ($(strip $(MTK_LIBS)),)
+		@$(STRCMPEX) abc abc e $(strip $(COMPLOGDIR))/libs.log $(MTK_LIBS)
+		@perl ./tools/lnitem.pl $(strip $(COMPLOGDIR))/libs.log
+  endif
+endif
+	
+	@$(IF_EXIST) $(FIXPATH)/tools/libinfo.pl $(THEN) \
+		((perl $(FIXPATH)/tools/libinfo.pl $(strip $(COMPLOGDIR))/libs.log > $(strip $(COMPLOGDIR))/libinfo.log) \
+		$(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: ./tools/libinfo.pl Failed. Please check $(strip $(COMPLOGDIR))/libinfo.log $(WITH) exit 1) $(CMD_END))) \
+	$(CMD_END)
+
+#Preprocess mt_config.h
+	@$(IF_EXIST) $(strip $(TMPDIR))/~mt_config_inc.tmp $(THEN) ($(DEL_FILE) $(strip $(TMPDIR))/~mt_config_inc.tmp) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TMPDIR))/~mt_config_def.tmp $(THEN) ($(DEL_FILE) $(strip $(TMPDIR))/~mt_config_def.tmp) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TMPDIR))/~mt_config.o $(THEN) ($(DEL_FILE) $(strip $(TMPDIR))/~mt_config.o) $(CMD_END)
+	@$(STRCMPEX) inc inc e $(strip $(TMPDIR))/~mt_config_inc.tmp $(foreach inc,$(XGEN_INC_DIR),-I$(inc))
+	@$(STRCMPEX) def def e $(strip $(TMPDIR))/~mt_config_def.tmp $(foreach def,$(COM_DEFS_TARGET),-D$(def))
+	@$(IF_EXIST) $(strip .)/interface/service/config/mt_config.h $(THEN) \
+		$(CC) -E -W $(VIA)$(strip $(TMPDIR))/~mt_config_inc.tmp $(VIA)$(strip $(TMPDIR))/~mt_config_def.tmp $(strip .)/interface/service/config/mt_config.h -o $(strip $(TMPDIR))/~mt_config.o > $(strip $(COMPLOGDIR))/mt_config.log $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) (echo Error: Preprocess mt_config.h Failed. Please check $(strip $(COMPLOGDIR))/mt_config_info.log $(WITH) exit 1) $(CMD_END)) \
+	$(CMD_END)
+
+ifeq ($(filter CHIP10992,$(strip $(COM_DEFS))),)
+#MDProfilerMETAInfoGen
+	@$(IF_EXIST) $(strip $(TMPDIR))/~syscomp_config.o $(THEN) \
+		$(IF_EXIST) ./tools/MDProfilerMETAInfoGen/MDProfiler_META_info_gen.pl $(THEN) \
+			((perl ./tools/MDProfilerMETAInfoGen/MDProfiler_META_info_gen.pl $(strip $(TMPDIR))/~syscomp_config.o $(strip $(TMPDIR))/~mt_config.o $(strip $(MODISBUILD_TST_DB)) $(strip $(COMPLOGDIR)) $(strip $(PLATFORM)) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(VERNO)) $(strip $(MD_VER_FOLDER)) $(strip $(CROSS))) \
+			$(WITH) \
+			($(IF_ERR_TRUE) $(THEN) (echo Error: ./tools/MDProfilerMETAInfoGen/MDProfiler_META_info_gen.pl Failed. Please check $(strip $(COMPLOGDIR))/swla_meta_info.log $(WITH) exit 1) $(CMD_END))) \
+		$(CMD_END) \
+	$(CMD_END)
+else
+#MDProfilerMETAInfoGen
+	@$(IF_EXIST) $(strip $(TMPDIR))/~syscomp_config.o $(THEN) \
+		$(IF_EXIST) ./tools/MDProfilerMETAInfoGen/MDProfiler_META_info_gen.pl $(THEN) \
+			((perl ./tools/MDProfilerMETAInfoGen/MDProfiler_META_info_gen.pl $(strip $(TMPDIR))/~syscomp_config.o $(strip $(TMPDIR))/~mt_config.o $(strip $(MODISBUILD_TST_DB)) $(strip $(COMPLOGDIR)) $(strip CHIP10992) $(strip $(PROJECT_NAME)) $(strip $(FLAVOR)) $(strip $(VERNO)) $(strip $(MD_VER_FOLDER)) $(strip $(CROSS))) \
+			$(WITH) \
+			($(IF_ERR_TRUE) $(THEN) (echo Error: ./tools/MDProfilerMETAInfoGen/MDProfiler_META_info_gen.pl Failed. Please check $(strip $(COMPLOGDIR))/swla_meta_info.log $(WITH) exit 1) $(CMD_END))) \
+		$(CMD_END) \
+	$(CMD_END)
+endif
+
+	@$(ECHO) -n $(strip $(INFOLOG)) > $(MODISBUILD_TST_DB)/sf.ini
+	@$(ECHO) -n $(strip "$(PROJECT_MAKEFILE)") >> $(MODISBUILD_TST_DB)/sf.ini
+	@$(ECHO) -n $(strip $(COMPLOGDIR))/emigen.log >> $(MODISBUILD_TST_DB)/sf.ini
+	@$(ECHO) -n $(strip $(COMPLOGDIR))/ckSysDrv.log >> $(MODISBUILD_TST_DB)/sf.ini
+	@$(ECHO) -n $(strip $(COMPLOGDIR))/drv_features_option.log >> $(MODISBUILD_TST_DB)/sf.ini
+	@$(ECHO) -n $(strip $(COMPLOGDIR))/MarginCalc.log >> $(MODISBUILD_TST_DB)/sf.ini
+	@$(ECHO) -n $(strip $(COMPLOGDIR))/libinfo.log >> $(MODISBUILD_TST_DB)/sf.ini
+	@$(ECHO) -n "<ICDJSONDef_0>$(strip $(PROJDIR))/modem/icd_ac_gen/ICDJSONDef_0.json" >> $(MODISBUILD_TST_DB)/sf.ini
+	@$(ECHO) -n "<ICDJSONDef_1>$(strip $(PROJDIR))/modem/icd_ac_gen/ICDJSONDef_1.json" >> $(MODISBUILD_TST_DB)/sf.ini
+	@$(ECHO) -n "<MCUFilter@ModLayerRATInfo>$(strip $(LOGGING_DATABASE))/XDD/module_layer_rat_info.txt" >> $(MODISBUILD_TST_DB)/sf.ini
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+  ifdef EUTRAN_MODE_SUPPORT
+  ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+    ifeq ($(strip $(NO_LTECGEN)),FALSE)
+    ifeq ($(strip $(NO_DSP)),FALSE)
+	@$(ECHO) -n "<DSPXMLUtil@filterXML>$(DSPDIR)/$(strip $(DSP_PROJECT))/$(strip $(DSP_FLAVOR))/final_bin/xml/filterXML" >> $(MODISBUILD_TST_DB)/sf.ini
+    endif
+    endif
+  endif
+  endif
+endif
+
+	@$(IF_EXIST) $(strip $(TMPDIR))/~syscomp_config.o $(THEN) \
+	($(ECHO) -n "<92SWLAMetaInfoFile>$(strip $(MODISBUILD_TST_DB))/MDProfiler_METAInfo.ini" >>$(MODISBUILD_TST_DB)/sf.ini) \
+	$(CMD_END)
+
+ifneq ($(wildcard $(CUSTOMIZATION)/log2SD_Catcher_filters_meta.ini),)
+ifneq ($(LOG2SD_CATCHER_FILTERS_LIST),)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(LOG2SD_CATCHER_FILTERS_LIST) $(DO) \
+		$(IF_EXIST) $(MODISBUILD_TST_DB)/catcher_filter_$(PRE_VAR)i.bin $(THEN) \
+			($(ECHO) -n "<catcher_filter@$(PRE_VAR)i>$(MODISBUILD_TST_DB)/catcher_filter_$(PRE_VAR)i.bin" >> $(MODISBUILD_TST_DB)/sf.ini) \
+		$(CMD_END) \
+	$(DONE)
+endif
+endif
+
+# generate modem_list_filter for sf.ini
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/catcher_filter.bin $(THEN) \
+			($(ECHO) -n "<ModemDefaultFilter_catcher_filter_bin>$(MODISBUILD_TST_DB)/catcher_filter.bin" >> $(MODISBUILD_TST_DB)/sf.ini) \
+	$(CMD_END)
+
+ifneq ($(LOG2SD_CATCHER_FILTERS_LIST),)
+	@$(FOR) $(DECLARE_VAR)i $(IN) $(LOG2SD_CATCHER_FILTERS_LIST) $(DO) \
+		$(IF_EXIST) $(MODISBUILD_TST_DB)/catcher_filter_$(PRE_VAR)i.bin $(THEN) \
+			($(ECHO) "<ModemDefaultFilter_catcher_filter_${PRE_VAR}i" >> $(MODISBUILD_TST_DB)/sf.ini) $(AND) \
+			($(ECHO) -n "_bin>$(MODISBUILD_TST_DB)/catcher_filter_$(PRE_VAR)i.bin" >> $(MODISBUILD_TST_DB)/sf.ini) \
+		$(CMD_END) \
+	$(DONE)
+endif
+
+#ifeq ($(strip $(SMART_CHECK)),TRUE)
+#	@$(ECHO) -n $@: $(strip $(INFOLOG)) >>$@
+#	@$(ECHO) -n "$@: $(strip $(PROJECT_MAKEFILE))" >> $@
+#	@$(ECHO) -n $@: $(MODISBUILD_TST_DB)/sf.ini  >> $@
+#	@$(ECHO) -n $@: $(MAKE_COMMON)/codegen.mak   >> $@
+#	@$(ECHO) -n $@: ./tools/MDProfilerMETAInfoGen/MDProfiler_META_info_gen.pl >> $@
+#endif
+
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: gencustominfo
+# Generate Custom Information
+# *************************************************************************
+gencustominfo:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN)\
+		($(ECHO) "$@ START TIME=" >>$(strip $(TARGDIR))/build.log $(AND) \
+		perl ./tools/time.pl -n   >>$(strip $(TARGDIR))/build.log) \
+	$(CMD_END)
+
+ifdef DRV_CUSTOM_TOOL_SUPPORT
+ifeq ($(strip $(DRV_CUSTOM_TOOL_SUPPORT)),TRUE)
+ifeq ($(findstring MT6129D,$(strip $(RF_MODULE))),)
+ifeq ($(findstring MT6139E,$(strip $(RF_MODULE))),)
+	@$(IF_NOT_EXIST) $(BUILD_CODEGENDIR) $(THEN) ($(MKDIR) $(BUILD_CODEGENDIR)) $(CMD_END)
+	@$(IF) "$(strip  $(DRV_CUSTOM_TOOL_SUPPORT))" $(EQU) "TRUE" $(THEN) \
+		($(IF_EXIST) $(DRV_GEN) $(THEN) \
+			($(IF_EXIST) $(call CUSTOM_FLD_MAPPING, custom/driver/drv_gen)/codegen.dws $(THEN) \
+				($(DRV_GEN) $(call CUSTOM_FLD_MAPPING,./custom/driver/drv_gen)/codegen.dws $(strip $(BUILD_CODEGENDIR)) $(strip $(PROJDIR))) \
+			$(CMD_END)) \
+		$(CMD_END)) \
+	$(CMD_END)
+endif
+endif
+endif
+endif
+	@$(IF_EXIST) $(strip $(TARGDIR))/build.log $(THEN)\
+		($(ECHO) "$@ END TIME="  >> $(strip $(TARGDIR))/build.log $(AND) \
+		 perl ./tools/time.pl -n >> $(strip $(TARGDIR))/build.log) $(CMD_END)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+# TARGET: $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det: FORCE
+# *************************************************************************
+ifneq ($(strip $(AUTO_CHECK_CGEN)),TRUE)
+  $(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det: FORCE
+endif
+$(MODIS_RULESDIR)/codegen_dep/cgen_db_sig.det: $(NEED_CHECK_DEPEND_LIST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $@ $(THEN) $(DEL_FILE) $@ $(CMD_END)
+  ifeq ($(strip $(SMART_CHECK)),TRUE)
+		@$(ECHO) -n "[SMART LOG] $@ target is triggered by: $?" >> $(strip $(COMPLOGDIR))/smart_log_cgen.log
+  endif
+
+	@$(IF_NOT_EXIST) $(BUILD_TSTDIR)/src $(THEN) ($(MKDIR) $(BUILD_TSTDIR)/src) $(CMD_END)
+	@$(ECHO) -n "Generate dbSig File ......"
+
+	@$(IF_EXIST) $(MODISBUILD_TST_DB)/chk_cgen_step.ini $(THEN) \
+		($(ECHO) -n "$(CGEN) -db_sig $(CODEGEN_DATABASE_OUT) $(BUILD_TSTDIR)/src/dbSig.c " >> $(CGEN_CFG_MODEM)) \
+	$(ELSE) \
+		($(ECHO) -n "$(CGEN) -rdb_sig $(CODEGEN_DATABASE_OUT) $(BUILD_TSTDIR)/src/dbSig.c " >> $(CGEN_CFG_MODEM)) \
+	$(CMD_END)
+
+	@$(ECHO) -n $@: $(CGEN) >> $@
+	@$(ECHO) -n $@ >> $(CODE_GEN_LST)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
diff --git a/mcu/make/common/comp.mak b/mcu/make/common/comp.mak
new file mode 100644
index 0000000..2c65f53
--- /dev/null
+++ b/mcu/make/common/comp.mak
@@ -0,0 +1,1479 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+#
+#
+# *************************************************************************
+#
+#   		MediaTek Inc GSM/GPRS Wireless Communicatin Project
+#					Build/Make Development Tools
+#
+#			Author			Date			Description
+#			Sherman Wang 	2004/04/29		Create version 1.0
+#
+# *************************************************************************
+# COMP.MAK  - Component build script
+#
+#  DISCUSSION:
+#
+#     This file is build script for component modules, and contains C source
+#  files (.c), and Assembly source files(.s).
+#
+#  USAGE:
+#
+#  IMPORTANT NOTES:
+#
+# *************************************************************************
+#
+# $Revision:$
+# $Modtime:$
+# $Log:$
+#
+# 10 14 2020 chi-chun.lu
+# [MOLY00538735] [MakeFile][Modify Makefile Rules] incremental build enhancement
+# 	
+# 	.
+#
+# 09 09 2020 chi-chun.lu
+# [MOLY00538735] [MakeFile][Modify Makefile Rules] incremental build enhancement
+# 	
+# 	(EWSP0000153449).
+#
+# 09 08 2020 chi-chun.lu
+# [MOLY00566669] [MakeFile] [Modify Common Makefile Rules] add deterministic for ci service
+# .
+#
+# 07 06 2020 chi-chun.lu
+# [MOLY00538735] [MakeFile][Modify Makefile Rules] incremental build enhancement
+# 	
+# 	.
+#
+# 06 30 2020 chi-chun.lu
+# [MOLY00538735] [MakeFile][Modify Makefile Rules] incremental build enhancement
+# 	
+# 	.
+#
+# 05 22 2020 chi-chun.lu
+# [MOLY00525991] [MakeFile] [VMOLY] [Modify Makefile Rules] support smart new when verno change
+# .
+#
+# 12 25 2019 chi-chun.lu
+# [MOLY00467020] [MakeFile] [VMOLY] [Modify Makefile Rules] fix ccache potential problem
+# .
+#
+# 12 09 2019 chi-chun.lu
+# [MOLY00464738] [MakeFile] [VMOLY] [Modify Makefile Rules] smart new enhancement
+# 	
+# 	.
+#
+# 11 27 2019 chi-chun.lu
+# [MOLY00461604] [MakeFile] [VMOLY] [Modify Makefile Rules] ccache enhancement
+# 	
+# 	.
+#
+# 11 15 2019 chi-chun.lu
+# [MOLY00459055] [MakeFile] [VMOLY] [Modify Makefile Rules] fix potential smart new build flow problem
+# .
+#
+# 11 11 2019 yuri.huang
+# [MOLY00458426] [MakeFile] [VUMOLY] [Modify Makefile Rules] Modify build flow
+# 	
+# 	.
+#
+# 11 08 2019 chi-chun.lu
+# [MOLY00456042] [MakeFile] [VMOLY] [Modify Makefile Rules] fix update_dsp flow
+# .
+#
+# 11 05 2019 ray.lin-wang
+# [MOLY00456042] [MakeFile] [VMOLY] [Modify Makefile Rules] fix update_dsp flow - comp.amk via dep
+# 	
+# 	.
+#
+# 11 04 2019 ray.lin-wang
+# [MOLY00456042] [MakeFile] [VMOLY] [Modify Makefile Rules] fix update_dsp flow.
+#
+# 10 22 2019 ray.lin-wang
+# [MOLY00452976] [MakeFile] [VMOLY] [Modify Makefile Rules] MoDIS/UESim support smart new
+# 	
+# 	.
+#
+# 10 09 2019 yuri.huang
+# [MOLY00446346] [MakeFile] [UMOLYE] [Modify Makefile Rules] Modify build flow
+# (Clean PCISB).
+#
+# 09 10 2019 yuri.huang
+# [MOLY00439079] [MakeFile] [VMOLY] [Modify Makefile Rules] Remove Legacy RTOS references from access restricted make files - Part 2
+# (Lari Manninen).
+#
+# 06 03 2019 yuri.huang
+# [MOLY00381361] [MakeFile] [UMOLYE] [Modify Makefile Rules] Phase out auto_header.h mechanism
+# 	
+# 	.
+#
+# 05 10 2019 chi-chun.lu
+# [MOLY00405345] [MakeFile] [UMOLYE] [Modify Makefile Rules] fix remake problem
+# 	
+# 	.
+#
+# 05 10 2019 chi-chun.lu
+# [MOLY00405345] [MakeFile] [UMOLYE] [Modify Makefile Rules] fix remake problem
+# 	
+# 	.
+#
+# 04 16 2019 ray.lin-wang
+# [MOLY00399667] [MakeFile] [VMOLY] [Modify Makefile Rules] MoDIS/UESim support generating dep and pcibt check
+# .
+#
+# 04 01 2019 yuri.huang
+# [MOLY00395916] [MakeFile] [UMOLYE] [Modify Makefile Rules] MPD 4g local build
+# 	
+# 	.
+#
+# 03 20 2019 gerry.liao
+# [MOLY00392677] [6297] MERTOS phase-in
+# .
+#
+# 12 26 2018 chi-chun.lu
+# [MOLY00372655] [MakeFile] [UMOLYE] [Modify Makefile Rules] smart new enhancement
+# 	
+# 	.
+#
+# 10 16 2018 ray.lin-wang
+# [MOLY00352266] [UESim on Linux] UESim built by Clang toolchain on Linux
+# support -llvm-coverage (ShihYu Wang).
+#
+# 10 03 2018 chi-chun.lu
+# [MOLY00356821] [MakeFile] [UMOLYE] [Modify Makefile Rules] refine build flow
+# 	
+# 	.
+#
+# 10 02 2018 chi-chun.lu
+# [MOLY00355922] [MakeFile] [UMOLYE] [Modify Makefile Rules] fix smart new problem
+# 	
+# 	.
+#
+# 09 07 2018 chi-chun.lu
+# [MOLY00350930] [MakeFile] [UMOLYE] [Modify Makefile Rules] check MPD folder path implement(temp)
+# 	
+# 	.
+#
+# 09 07 2018 chi-chun.lu
+# [MOLY00350930] [MakeFile] [UMOLYE] [Modify Makefile Rules] check MPD folder path implement(temp)
+# 	
+# 	.
+#
+# 08 10 2018 ray.lin-wang
+# [MOLY00344924] [VMOLY][BuildEnv] merge back from Gen97 Dev to VMOLY
+# build flow makefile.
+#
+# 08 02 2018 ray.lin-wang
+# [MOLY00342318] [MoDIS on Linux] MoDIS built by Clang toolchain on Linux
+# 07 26 2018 chi-chun.lu
+# [MOLY00342237] [MakeFile] [UMOLYE] [Modify Makefile Rules] fix debug mode of module makefile
+# 	
+# 	.
+#
+# *************************************************************************
+# *************************************************************************
+# Common macro definitions
+# *************************************************************************
+#$(call Upper,$(1)) ...... reference $(1) in upper-case letters
+Upper = $(subst z,Z,$(subst y,Y,$(subst x,X,$(subst w,W,$(subst v,V,$(subst u,U,$(subst t,T,$(subst s,S,$(subst r,R,$(subst q,Q,$(subst p,P,$(subst o,O,$(subst n,N,$(subst m,M,$(subst l,L,$(subst k,K,$(subst j,J,$(subst i,I,$(subst h,H,$(subst g,G,$(subst f,F,$(subst e,E,$(subst d,D,$(subst c,C,$(subst b,B,$(subst a,A,$(1)))))))))))))))))))))))))))
+Lower = $(subst Z,z,$(subst Y,y,$(subst X,x,$(subst W,w,$(subst V,v,$(subst U,u,$(subst T,t,$(subst S,s,$(subst R,r,$(subst Q,q,$(subst P,p,$(subst O,o,$(subst N,n,$(subst M,m,$(subst L,l,$(subst K,k,$(subst J,j,$(subst I,i,$(subst H,h,$(subst G,g,$(subst F,f,$(subst E,e,$(subst D,d,$(subst C,c,$(subst B,b,$(subst A,a,$(1)))))))))))))))))))))))))))
+
+CUSTOM_FLD_MAPPING = $(if $($(subst /,_,$(patsubst %/,%,$(subst //,/,$(subst \,/,$(call lc, $(1))))))), \
+                     $($(subst /,_,$(patsubst %/,%,$(subst //,/,$(subst \,/,$(call lc, $(1))))))),\
+                     $(if $(wildcard $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/$(strip $(CUSTOM_FLAVOR))),\
+                     $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/$(strip $(CUSTOM_FLAVOR)),\
+                     $(wildcard $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/DEFAULT)))
+
+
+AUTO_MERGE_FILE_CHECK = $(if $(shell $(LIST_DIR) "$(call CUSTOM_FLD_MAPPING,$(1))/$(2)" 2>$(DEV_NUL)), $(call CUSTOM_FLD_MAPPING,$(1))/$(2), \
+                        $(if $(shell $(LIST_DIR) "$(1)/_Default_BB/$(strip $(PLATFORM))/$(2)" 2>$(DEV_NUL)), $(1)/_Default_BB/$(strip $(PLATFORM))/$(2),))
+# *************************************************************************
+# Project Variables
+# *************************************************************************
+
+include make/common/cmd_cfg.mak
+include ./tools/GMSL/gmsl
+include $(strip $(TMPDIR))/~compbld.tmp # Temporary build script created by build.mak
+include $(strip $(PROJECT_MAKEFILE))
+include make/common/buildconfig.mak
+-include $(strip $(TARGDIR))/MMI_DRV_DEFS.mak
+
+ifeq ($(filter $(strip $(COMPONENT)),$(COMPLIST)),)
+NO_PCIBT := TRUE
+endif
+
+ifeq ($(strip $(COMPILER)),GCC)
+  ADEFTrans = $(strip -defsym $(1)=$(strip $(2)))
+endif
+
+NEED_CHECK_DEPEND_LIST :=
+MODULE_DEFS := $(DEFINES) $(DRV_DEFS)
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  MODULE_DEFS := $(filter-out __MTK_TARGET__,$(MODULE_DEFS))
+  include $(strip $(MAKE_COMMON))/modisconfig.mak
+  NEED_CHECK_DEPEND_LIST += $(strip $(MAKE_COMMON))/modisconfig.mak
+endif
+
+include $(strip $(TMPDIR))/~categorymapping.mak
+
+MODULE_MAKEFILE := make/$($(call Upper,$(strip $(COMPONENT)))_MODULE_CATEGORY)/$(call Lower,$(strip $(COMPONENT))).mak
+include $(MODULE_MAKEFILE)
+NEED_CHECK_DEPEND_LIST += $(MODULE_MAKEFILE)
+
+CATEGORY_CONFIG_MAKEFILE := make/module/$($(call Upper,$(strip $(COMPONENT)))_CATEGORY)/$($(call Upper,$(strip $(COMPONENT)))_CATEGORY)_config.mak
+ifneq ($(strip $(NOT_USE_CATEGORY_INCLUDE)),TRUE)
+  include $(CATEGORY_CONFIG_MAKEFILE)
+  NEED_CHECK_DEPEND_LIST += $(CATEGORY_CONFIG_MAKEFILE)
+endif
+
+# *************************************************************************
+# Set SUFFIXES
+# *************************************************************************
+.SUFFIXES:
+.SUFFIXES: .obj .c .S .s .cpp .arm .ltp .det
+
+# *************************************************************************
+# Set PHONY
+# *************************************************************************
+.PHONY : update_lib update_dep
+
+# *************************************************************************
+# Set Shell
+# *************************************************************************
+#SHELL = $(ComSpec)
+
+# *************************************************************************
+# Construct $(COMPONENT) specific varible
+# *************************************************************************
+TARGLIB          = $(subst \,/,$(strip $(COMPLIBDIR)))/lib$(strip $(COMPONENT)).a
+
+COMPOBJS_DIR     = $(subst \,/,$(OBJSDIR))/$(strip $(COMPONENT))
+OBJ_ARCHIVE      = $(OBJSDIR)/$(COMPONENT)/$(strip $(COMPONENT)).via
+OBJ_ARCHIVE_SORT = $(OBJSDIR)/$(COMPONENT)/$(strip $(COMPONENT))_sort.via
+
+TARGDEP          = $(subst \,/,$(RULESDIR))/$(strip $(COMPONENT)).dep
+COMPDETS_DIR     = $(subst \,/,$(RULESDIR))/$(strip $(COMPONENT))
+COMPVIA_DIR      = $(TARGDIR)/via
+
+TARGDEP_LIST :=
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  MODULE_FOLDER = $(TARGDIR)/module
+else
+  MODULE_FOLDER = $(strip $(BUILDDIR))/$(strip $(PROJECT_NAME))/$(strip $(FLAVOR))/$(strip $(MODIS_UESIM))/_BUILD_MODULE
+endif
+
+ifdef $($(COMPONENT))
+  COMPONENT_FOLDER = $(MODULE_FOLDER)/$(strip $($(call Lower,$(COMPONENT))))/$(call Lower,$(strip $(COMPONENT)))
+else
+  COMPONENT_FOLDER = $(MODULE_FOLDER)/$(call Lower,$(strip $(COMPONENT)))
+endif
+COMPONENT_LOG = $(COMPONENT_FOLDER)/$(call Lower,$(strip $(COMPONENT)))
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  COMPLOGDIR       := $(MODISLOGDIR)
+  TARGLIB          := $(MODISPROJDIR)/$(strip $(COMPONENT))/$(strip $(MODIS_MODE))/$(strip $(COMPONENT)).lib
+  COMPOBJS_DIR     := $(MODISPROJDIR)/$(strip $(COMPONENT))/$(strip $(MODIS_MODE))
+  OBJ_ARCHIVE      := $(COMPONENT_FOLDER)/$(call Lower,$(strip $(COMPONENT)))_lib.via
+  OBJ_ARCHIVE_SORT := $(COMPONENT_FOLDER)/$(call Lower,$(strip $(COMPONENT)))_lib_sort.via
+  TARGDEP          := $(MODIS_RULESDIR)/$(call Lower,$(strip $(COMPONENT))).dep
+  COMPDETS_DIR     := $(MODIS_RULESDIR)/$(call Lower,$(strip $(COMPONENT)))
+  COMPVIA_DIR      := $(COMPONENT_FOLDER)
+  ifeq ($(strip $(MODIS_COMPILER)),MINGW)
+    ifeq ($(strip $(MODIS_MODE)),Debug)
+      DEBUG_MODULES := ALL
+    else ifeq ($(strip $(MODIS_MODE)),Release)
+      NON_DEBUG_MODULES := ALL
+    endif
+  endif
+endif
+
+# *************************************************************************
+# Configure debug symbol compiler arguments
+# *************************************************************************
+ifndef CUSTOM_DEBUG_MODULES
+  CUSTOM_DEBUG_MODULES =
+endif
+
+ifndef CUSTOM_NON_DEBUG_MODULES
+  CUSTOM_NON_DEBUG_MODULES =
+endif
+
+ifneq ($(filter ALL,$(call Upper,$(CUSTOM_DEBUG_MODULES))),)
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    ifeq ($(strip $(COMPILER)),GCC)
+      CFLAGS += $(DWARF_FLAGS)
+      CPLUSFLAGS += $(DWARF_FLAGS)
+    endif
+  endif
+else
+  ifneq ($(filter $(call Upper,$(COMPONENT)),$(call Upper,$(CUSTOM_DEBUG_MODULES))),)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      ifeq ($(strip $(COMPILER)),GCC)
+        CFLAGS += $(DWARF_FLAGS)
+        CPLUSFLAGS += $(DWARF_FLAGS)
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(filter $(call Upper,$(COMPONENT)),$(call Upper,$(DSP_ASE_MODULES))),)
+  ifneq ($(filter -mdsp -mdspr2,$(CFLAGS)),)
+    $(error Error: Cannot use -mdsp -mdspr2 in module makefile, please check !!)
+  endif
+endif
+
+ifneq ($(filter $(call Upper,$(COMPONENT)),$(call Upper,$(CUSTOM_NON_DEBUG_MODULES))),)
+  CFLAGS := $(filter-out -g -gtp -gdwarf-% -g1 -g2 -g3,$(strip $(CFLAGS)))
+  CPLUSFLAGS := $(filter-out -g -gtp -gdwarf-% -g1 -g2 -g3,$(strip $(CPLUSFLAGS)))
+endif
+
+ifneq ($(filter $(call Upper,$(COMPONENT)),$(call Upper,$(CUSTOM_NON_DEBUG_MODULES))),)
+  $(info Module $(COMPONENT) is in NON_DEBUG mode)
+else 
+  ifneq ($(filter ALL,$(call Upper,$(CUSTOM_DEBUG_MODULES))),)
+    $(info Module $(COMPONENT) is in DEBUG mode)
+  else
+    ifneq ($(filter $(call Upper,$(COMPONENT)),$(call Upper,$(CUSTOM_DEBUG_MODULES))),)
+      $(info Module $(COMPONENT) is in DEBUG mode)
+    else
+      $(info Module $(COMPONENT) is in DEFAULT mode)
+    endif
+  endif
+endif
+
+# *************************************************************************
+# Construct the list of object dependencies
+# *************************************************************************
+# THUMB + Assembly
+SRCLIST0 := $(sort $(SRC_LIST) $(filter-out %.c %.C %.cpp,$(SRC_LIST_ARM)))
+# ARM
+SRCLIST5 := $(sort $(filter %.c %.C %.cpp,$(SRC_LIST_ARM)))
+# BOTH
+SRC_LIST := $(SRCLIST0) $(SRCLIST5)
+ifdef SRC_RULE_FLAG32
+  # SRC_RULE_FLAG32 means the asm file should be compiled by armasm using -32 flag
+  SRCLIST9 := $(foreach file,$(SRCLIST0),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_FLAG32))),$(file),))
+  SRCLIST0 := $(foreach file,$(SRCLIST0),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_FLAG32))),,$(file)))
+endif
+ifdef SRC_RULE_PREPROCESS
+  # SRC_RULE_PREPROCESS means the asm file needs to be preprocessed by armcc -E and then armasm
+  SRCLIST8 := $(foreach file,$(SRCLIST0),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_PREPROCESS))),$(file),))
+  SRCLIST0 := $(foreach file,$(SRCLIST0),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_PREPROCESS))),,$(file)))
+endif
+
+ifeq ($(filter __L1_KW_SCAN__,$(DEFINES)),)
+ifdef SRC_RULE_AUTOTCM
+  # SRC_RULE_AUTOTCM means the c file needs to be preprocessed by armcc -E and then auto tcm and then compiled by armcc -c
+  ifeq ($(strip $(SRC_RULE_AUTOTCM)),ALL)
+    SRCLIST1 := $(filter     %.c %.C %.cpp,$(SRCLIST0))
+    SRCLIST0 := $(filter-out %.c %.C %.cpp,$(SRCLIST0))
+    SRCLIST6 := $(filter     %.c %.C %.cpp,$(SRCLIST5))
+    SRCLIST5 := $(filter-out %.c %.C %.cpp,$(SRCLIST5))
+  else
+    SRCLIST1 := $(foreach file,$(SRCLIST0),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_AUTOTCM))),$(file),))
+    SRCLIST0 := $(foreach file,$(SRCLIST0),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_AUTOTCM))),,$(file)))
+    SRCLIST6 := $(foreach file,$(SRCLIST5),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_AUTOTCM))),$(file),))
+    SRCLIST5 := $(foreach file,$(SRCLIST5),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_AUTOTCM))),,$(file)))
+  endif
+endif
+ifdef SRC_RULE_AUTOAMMS_DRDI
+  ifeq ($(strip $(SRC_RULE_AUTOAMMS_DRDI)),ALL)
+    SRCLIST_AMMS_DRDI := $(filter     %.c %.C %.cpp,$(SRC_LIST))
+    SRCLIST0          := $(filter-out %.c %.C %.cpp,$(SRCLIST0))
+    SRCLIST5          := $(filter-out %.c %.C %.cpp,$(SRCLIST5))
+  else
+    SRCLIST_AMMS_DRDI := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_AUTOAMMS_DRDI))),$(file),))
+    SRCLIST0          := $(foreach file,$(SRCLIST0),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_AUTOAMMS_DRDI))),,$(file)))
+    SRCLIST5          := $(foreach file,$(SRCLIST5),$(if $(filter $(notdir $(call Upper,$(file))) $(call Upper,$(file)),$(call Upper,$(SRC_RULE_AUTOAMMS_DRDI))),,$(file)))
+  endif
+endif
+endif
+
+CSRCS  := $(filter %.c %.C %.cpp, $(SRCLIST0))
+CSRCS1 := $(filter %.c %.C %.cpp, $(SRCLIST1))
+CSRCS5 := $(filter %.c %.C %.cpp, $(SRCLIST5))
+CSRCS6 := $(filter %.c %.C %.cpp, $(SRCLIST6))
+ASRCS  := $(filter %.s %.S %.arm, $(SRCLIST0))
+ASRCS1 := $(filter %.s %.S %.arm, $(SRCLIST9))
+ASRCS2 := $(filter %.s %.S %.arm, $(SRCLIST8))
+CSRCS_AMMS_DRDI := $(filter %.c %.C %.cpp, $(SRCLIST_AMMS_DRDI))
+
+INC_DIR += $(CATEGORY_INCDIRS)
+INCDIRS := $(INC_DIR) $(INCDIRS)
+INCDIRS := $(call uniq,$(INCDIRS))
+
+#CATEGORY_DEFS is from $category_config.mak
+DEFINES += $(CATEGORY_DEFS)
+#COMP_DEFS is from $module.mak
+DEFINES += $(COMP_DEFS)
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifdef MODIS_DIS_INC_PATH
+    INCDIRS := $(filter-out $(MODIS_DIS_INC_PATH),$(INCDIRS))
+  endif
+  ifdef MODIS_DIS_OPTION
+    DEFINES := $(filter-out $(MODIS_DIS_OPTION),$(DEFINES))
+  endif
+endif
+
+CINCDIRS = $(foreach inc, $(subst \,/,$(INCDIRS)),-I$(inc))
+CDEFS    = $(foreach def, $(DEFINES),-D$(def))
+A_CDEFS  = $(foreach def, $(strip $(DEFINES)),$(if $(findstring =,$(def)),-D$(def),-D$(def)=$(def)))
+
+#*************************************************************************
+# ccache excluding files
+#*************************************************************************
+CCACHE_EXCLUDE_FILE :=
+
+#*************************************************************************
+# folder path check
+#*************************************************************************
+ifneq ($(strip $(NO_PCIBT)),TRUE)
+  -include $(strip $(TMPDIR))/~buildinfo.tmp
+  -include $(strip $(MAKE_COMMON))/comp_pcibt.mak
+endif
+
+#check if non-4g module use the 4g src
+ifeq ($(filter $(COMPONENT),$(FOURG_COMP) $(FIVEG_COMP)),)
+  ifneq ($(filter protocol/lte_sec% l1/lte_sec% protocol/lte_sec%, $(SRC_LIST) $(INC_DIR)),)
+    $(error Error: Can not use lte_sec in $(COMPONENT) module SRC_LIST/INC_DIR, please check !!)
+  endif
+endif
+
+ifneq ($(filter $(COMPONENT),$(FOURG_COMP) $(FIVEG_COMP)),)
+CHK_LTE_COMP = TRUE
+endif
+
+# *************************************************************************
+# Set View Path
+# *************************************************************************
+vpath
+vpath %.obj $(COMPOBJS_DIR)
+vpath %.det $(COMPDETS_DIR)
+
+# XXX!!! To use predefine for assembler is a little difficult and
+# usually can be replaced with C sources.
+ADEFS = $(foreach def, $(COMP_DEFS),$(call ADEFTrans,$(def), TRUE))
+ADEFS += $(foreach def, $(strip $(COM_DEFS_FOR_$(strip $(PLATFORM)))),$(call ADEFTrans,$(def), TRUE))
+ifeq ($(strip $(COMPILER)),GCC)
+  ADEFS += --defsym __SRS_CPS_OPTIMIZE__=1
+endif
+
+ifneq ($(filter $(strip $(PLATFORM)),$(SV5_PLATFORM)),)
+  ADEFS += $(call ADEFTrans,__SV5_ENABLED__, TRUE)
+endif
+
+ifneq ($(filter __KAL_STACK_ISOLATION__,$(strip $(DEFINES))),)
+  ADEFS += $(call ADEFTrans,__KAL_STACK_ISOLATION__, TRUE)
+endif
+
+ifneq ($(filter __KAL_STACK_EXTENSIBLE__,$(strip $(DEFINES))),)
+  ADEFS += $(call ADEFTrans,__KAL_STACK_EXTENSIBLE__, TRUE)
+endif
+
+ifneq ($(filter __EVENT_BASED_TIMER__,$(strip $(DEFINES))),)
+  ADEFS += $(call ADEFTrans,__EVENT_BASED_TIMER__, TRUE)
+endif
+
+ifeq ($(PRODUCTION_RELEASE),TRUE)
+  ADEFS += $(call ADEFTrans,__PRODUCTION_RELEASE__, TRUE)
+endif
+
+ifeq ($(strip $(RTOS)),MERTOS)
+  ADEFS       +=  $(call ADEFTrans,KAL_ON_MERTOS, TRUE)
+endif
+
+ifeq ($(strip $(CHIP_VERSION_CHECK)),TRUE)
+  ADEFS += $(call ADEFTrans,__CHIP_VERSION_CHECK__, TRUE)
+endif
+
+ifdef GADGET_SUPPORT
+ifneq ($(strip $(GADGET_SUPPORT)),NONE)
+  ADEFS += $(call ADEFTrans,__GADGET_SUPPORT__, TRUE)
+endif
+endif
+
+ifeq ($(strip $(KEYPAD_DEBUG_TRACE)),TRUE)
+  ADEFS += $(call ADEFTrans,__KEYPAD_DEBUG_TRACE__, TRUE)
+endif
+
+ifneq ($(filter $(strip $(PLATFORM)),$(ARM9_PLATFORM)),)
+  ADEFS += $(call ADEFTrans,ARM9_MMU, TRUE) 
+endif
+
+ifneq ($(filter $(strip $(PLATFORM)),$(ARM11_PLATFORM)),)
+  ADEFS += $(call ADEFTrans,$(strip $(PLATFORM)), TRUE)
+  ADEFS += $(call ADEFTrans,ARM11_MMU, TRUE)
+  ADEFS += $(call ADEFTrans,__ARM1176__, TRUE)
+endif
+
+ifneq ($(filter $(strip $(PLATFORM)),$(CR4_PLATFORM)),)
+  ADEFS += $(call ADEFTrans,$(strip $(PLATFORM)), TRUE)
+  ADEFS += $(call ADEFTrans,CR4, TRUE)
+endif
+## end of ADEFS
+
+# if any component needs to interwork with other ARM mode components, it should
+
+# Compiler settings for specific components
+#the following will be removed after *.def are updated
+
+
+ifeq ($(strip $(COMPONENT)),dp_engine)
+  ifeq ($(strip $(COMPILER)),GCC)
+    CFLAGS += -O3
+  else
+    CFLAGS += -Otime -Ono_autoinline
+  endif
+endif
+
+ifeq ($(strip $(COMPILER)),GCC)
+   depend = -MMD -MP -MF
+   AS_depend = -MD
+else
+   depend = --depend
+   AS_depend = --depend
+endif
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(MODIS_COMPILER)),CLANG)
+    CFLAGS := $(CFLAGS_CLANG_MODIS)
+    ifeq ($(strip $(COMPONENT)),c2k_xsim_gw)
+      # One byte alignment is required for GKI send/receive signal operations.
+      # Only applies to c2k_xsim_gw because it is the only entry point for GKI operations for UESIM/Modis
+      CFLAGS += /Zp1
+    else
+      # Default alignment of 8 bytes
+      CFLAGS += /Zp8
+    endif
+    CPLUSFLAGS := $(CFLAGS)
+    LIB := $(LIB_MODIS)
+  else ifeq ($(strip $(MODIS_COMPILER)),MINGW)
+    CFLAGS := $(CFLAGS_MODIS)
+    CPLUSFLAGS := $(CFLAGS)
+    LIB := $(LIB_MODIS)
+  endif
+endif
+
+
+# Generate module information
+ifeq ($(strip $(GEN_MODULE_INFO)),TRUE)
+
+COMP_TEMP:=$(shell $(IF_NOT_EXIST) $(strip $(MODULE_FOLDER)) $(THEN) $(MKDIR) $(strip $(MODULE_FOLDER)) $(CMD_END))
+COMP_TEMP:=$(shell $(IF_EXIST) $(COMPONENT_LOG).lis $(THEN) $(DEL_FILE) $(COMPONENT_LOG).lis $(CMD_END))
+COMP_TEMP:=$(shell $(IF_EXIST) $(COMPONENT_LOG).ade $(THEN) $(DEL_FILE) $(COMPONENT_LOG).ade $(CMD_END))
+COMP_TEMP:=$(shell $(IF_EXIST) $(COMPONENT_LOG).inc $(THEN) $(DEL_FILE) $(COMPONENT_LOG).inc $(CMD_END))
+COMP_TEMP:=$(shell $(IF_NOT_EXIST) $(strip $(COMPONENT_FOLDER)) $(THEN) $(MKDIR) $(strip $(COMPONENT_FOLDER)) $(CMD_END))
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+COMP_TEMP:=$(shell $(IF_EXIST) $(COMPONENT_LOG).def.bak $(THEN) $(DEL_FILE) $(COMPONENT_LOG).def.bak $(CMD_END))
+COMP_TEMP:=$(shell $(IF_EXIST) $(COMPONENT_LOG).def $(THEN) mv $(COMPONENT_LOG).def $(COMPONENT_LOG).def.bak $(CMD_END))
+endif
+
+ifneq ($(words $(SRC_LIST)),0)
+  ifeq ($(call lte,$(call strlen,$(SRC_LIST)),32000),T)
+    COMP_TEMP:=$(shell perl ./tools/echoLongString4.pl $(COMPONENT_LOG).lis $(SRC_LIST))
+    COMP_TEMP:=$(shell perl ./tools/lnitem.pl $(COMPONENT_LOG).lis)
+  else
+    COMP_TEMP:=$(foreach com,$(SRC_LIST),$(shell echo $(com)>>$(COMPONENT_LOG).lis))
+  endif
+else
+  COMP_TEMP:=$(shell $(ECHO) "" >$(COMPONENT_LOG).lis)
+endif
+
+#remove object files if not exist in SRC_LIST
+ifneq ($(wildcard $(COMPOBJS_DIR)),)
+LIST_OBJ_FINAL:=$(filter-out $(basename $(notdir $(SRC_LIST))),$(basename $(notdir $(shell $(LIST_DIR) -n "$(COMPOBJS_DIR)/*.obj"))))
+ifneq ($(words $(LIST_OBJ_FINAL)),0)
+  COMP_TEMP:=$(shell $(IF_EXIST) $(TARGLIB) $(THEN) $(DEL_FILE) $(TARGLIB) $(CMD_END))
+  COMP_TEMP:=$(foreach com,$(LIST_OBJ_FINAL),$(shell $(IF_EXIST) $(COMPOBJS_DIR)/$(com).obj $(THEN) $(DEL_FILE) $(COMPOBJS_DIR)/$(com).obj $(CMD_END)))
+  COMP_TEMP:=$(foreach com,$(LIST_OBJ_FINAL),$(shell $(IF_EXIST) $(COMPDETS_DIR)/$(com).d $(THEN) $(DEL_FILE) $(COMPDETS_DIR)/$(com).d $(CMD_END)))
+endif
+endif
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(words $(INCDIRS)),0)
+    ifeq ($(call lte,$(call strlen,$(INCDIRS)),32000),T)
+      COMP_TEMP:=$(shell $(STRCMPEX) abc abc e $(COMPONENT_LOG).inc $(subst \,/,$(INCDIRS)))
+      COMP_TEMP:=$(shell perl ./tools/lnitem.pl $(COMPONENT_LOG).inc)
+    else
+      COMP_TEMP:=$(foreach com,$(INCDIRS),$(shell echo $(subst \,/,$(com)) >>$(COMPONENT_LOG).inc))
+    endif
+  else
+    COMP_TEMP:=$(shell $(ECHO) "" >$(COMPONENT_LOG).inc)
+  endif
+else
+  ifneq ($(words $(INC_DIR)),0)
+    ifeq ($(call lte,$(call strlen,$(INC_DIR)),32000),T)
+      ifeq ($(strip $(COMPILER)),GCC)
+        COMP_TEMP:=$(shell $(STRCMPEX) abc abc e $(COMPONENT_LOG).inc $(subst \,/,$(INC_DIR)))
+      else
+        COMP_TEMP:=$(shell $(STRCMPEX) abc abc e $(COMPONENT_LOG).inc $(INC_DIR))
+      endif
+      COMP_TEMP:=$(shell perl ./tools/lnitem.pl $(COMPONENT_LOG).inc)
+    else
+      ifeq ($(strip $(COMPILER)),GCC)
+        COMP_TEMP:=$(foreach com,$(INC_DIR),$(shell echo $(subst \,/,$(com)) >>$(COMPONENT_LOG).inc))
+      else
+        COMP_TEMP:=$(foreach com,$(INC_DIR),$(shell echo $(com) >>$(COMPONENT_LOG).inc))
+      endif
+    endif
+  else
+    COMP_TEMP:=$(shell $(ECHO) "" >$(COMPONENT_LOG).inc)
+  endif
+endif
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(words $(DEFINES)),0)
+    ifeq ($(call lte,$(call strlen,$(DEFINES)),32000),T)
+      COMP_TEMP:=$(shell perl ./tools/echoLongString4.pl $(COMPONENT_LOG).def $(DEFINES))
+      COMP_TEMP:=$(shell perl ./tools/lnitem.pl $(COMPONENT_LOG).def)
+    else
+      COMP_TEMP:=$(foreach def,$(DEFINES),$(shell echo $(def) >>$(COMPONENT_LOG).def))
+    endif
+  else
+    COMP_TEMP:=$(shell $(ECHO) "" >$(COMPONENT_LOG).def)
+  endif
+else
+  ifneq ($(words $(COMP_DEFS)),0)
+    COMP_TEMP:=$(shell perl ./tools/echoLongString4.pl $(COMPONENT_LOG).def $(COMP_DEFS))
+    COMP_TEMP:=$(shell perl ./tools/lnitem.pl $(COMPONENT_LOG).def)
+  else
+    COMP_TEMP:=$(shell $(ECHO) "" >$(COMPONENT_LOG).def)
+  endif
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  COMP_TEMP:=$(shell perl ./tools/echoLongString5.pl $(COMPONENT_LOG).ade ADEFS $(ADEFS))
+endif
+
+else ifeq ($(filter $(MAKECMDGOALS),setup_env),)
+  SRC_LIST_OUT := $(filter-out %.rec %.ico %.rc %.bmp %.h,$(SRC_LIST))
+  SRC_LIST_TMP := $(foreach file,$(sort $(call Lower,$(SRC_LIST_OUT))),$(if $(filter $(basename $(notdir $(file))),$(basename $(notdir $(filter-out $(file),$(call Lower,$(SRC_LIST_OUT)))))),$(file),))
+  ifneq ($(strip $(SRC_LIST_TMP)),)
+    $(info The following files are conflicted in SRC_LIST from $(strip $(COMPONENT)).mak:)
+    $(info $(strip $(SRC_LIST_TMP)))
+    $(error SRC_LIST)
+  endif
+endif
+# end
+
+# *************************************************************************
+# Library Targets
+# *************************************************************************
+ifneq ($(strip $(DETERMINISTIC)),TRUE)
+ARCHIVE_OPTION := -r
+CLANG_FOR_DETERMINISTIC :=
+else
+ARCHIVE_OPTION := -rD
+CLANG_FOR_DETERMINISTIC := /Brepro
+endif
+
+update_lib: $(TARGLIB)
+#	@$(IF_EXIST) $(COMPDETS_DIR) $(THEN) $(DEL_DIR) $(COMPDETS_DIR) $(CMD_END)
+$(TARGLIB):
+   # If library for customer release exists.
+   # Copy and update it or create a new one
+   # mbis time probe
+ifeq ($(strip $(MBIS_EN_OBJ_LOG)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,L," >> $(COMPLOGDIR)/mbis/$(strip $(COMPONENT))/$(basename $(notdir $@))".mbis"
+endif
+	@$(IF_EXIST) $(TARGLIB) $(THEN) ($(DEL_FILE) $(TARGLIB)) $(CMD_END)
+	@$(IF_EXIST) $(OBJ_ARCHIVE) $(THEN) ($(DEL_FILE) $(OBJ_ARCHIVE)) $(CMD_END)
+	@$(IF_EXIST) $(OBJ_ARCHIVE_SORT) $(THEN) ($(DEL_FILE) $(OBJ_ARCHIVE_SORT)) $(CMD_END)
+
+	@$(FOR) $(F_OPT) $(DECLARE_VAR)i $(IN) `$(LIST_DIR) -n "$(COMPOBJS_DIR)/*.obj"` \
+	$(DO) \
+		$(ECHO) -n $(PRE_VAR)i>>$(OBJ_ARCHIVE)\
+	$(DONE)
+	@perl ./tools/sortobj.pl $(OBJ_ARCHIVE) $(OBJ_ARCHIVE_SORT)
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(COMPILER)),GCC)
+	@$(strip $(LIB)) $(strip $(ARCHIVE_OPTION)) $(TARGLIB) $(VIA)$(OBJ_ARCHIVE_SORT)
+  else
+	@$(strip $(LIB)) -create $(TARGLIB) $(VIA)$(OBJ_ARCHIVE_SORT)
+  endif
+else
+  ifeq ($(strip $(MODIS_COMPILER)),MINGW)
+	@$(strip $(LIB)) $(strip $(ARCHIVE_OPTION)) $(TARGLIB) $(VIA)$(OBJ_ARCHIVE_SORT)
+  endif
+  ifeq ($(strip $(MODIS_COMPILER)),CLANG)
+	@$(strip $(LIB)) /nologo /out:$(TARGLIB) $(VIA)$(OBJ_ARCHIVE_SORT)
+  endif
+endif
+
+	@$(ECHO) -n "$(TARGLIB) is updated"
+
+	@$(IF_EXIST) $(OBJ_ARCHIVE)      $(THEN) ($(DEL_FILE) $(OBJ_ARCHIVE)) $(CMD_END)
+	@$(IF_EXIST) $(OBJ_ARCHIVE_SORT) $(THEN) ($(DEL_FILE) $(OBJ_ARCHIVE_SORT)) $(CMD_END)
+
+ifeq ($(filter remake remake_modis,$(strip $(ACTION))),)
+  ifneq ($(strip $(NO_DEP)),TRUE)
+		@$(IF_EXIST) $(COMPDETS_DIR) $(THEN) perl ./tools/pack_dep_gcc.pl $(TARGDEP) $(COMPDETS_DIR) $(HTOGETHER) $(strip $(HEADER_TEMP)) $(CMD_END)
+  endif
+  ifneq ($(PCIBT_ACTION_LIST),)
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) $(MODULE_MAKEFILE) $(COMPDETS_DIR) $(PCIBT_ACTION_LIST) 
+  endif
+endif
+#	@$(IF_EXIST) $(COMPDETS_DIR) $(THEN)$(DEL_DIR) $(COMPDETS_DIR) $(CMD_END)
+   # mbis time probe
+ifeq ($(strip $(MBIS_EN_OBJ_LOG)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,L," >> $(COMPLOGDIR)/mbis/$(strip $(COMPONENT))/$(basename $(notdir $@))".mbis"
+endif
+
+RUN_SETUP_ENV := TRUE
+ifeq ($(strip $(GEN_MODULE_INFO)),TRUE)
+  RUN_SETUP_ENV := FALSE
+endif
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(MODIS_COMPILER)),VC2008)
+    RUN_SETUP_ENV := FALSE
+  endif
+endif
+
+setup_env: gen_setup_env
+gen_setup_env: 
+ifeq ($(strip $(RUN_SETUP_ENV)),TRUE)
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(IF_EXIST) $(COMPVIA_DIR)/$(strip $(COMPONENT)).via     $(THEN) mv $(COMPVIA_DIR)/$(strip $(COMPONENT)).via $(COMPVIA_DIR)/$(strip $(COMPONENT)).via_bak $(CMD_END)
+	@$(IF_EXIST) $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via $(THEN) mv $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via_bak $(CMD_END)
+endif
+
+	@$(IF_NOT_EXIST) $(COMPVIA_DIR) $(THEN) $(MKDIR) $(COMPVIA_DIR)/$(strip $(COMPONENT)) $(CMD_END)
+	@$(STRCMPEX) abc abc e $(COMPVIA_DIR)/$(strip $(COMPONENT)).via $(CDEFS)
+	@$(STRCMPEX) abc abc e $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via $(CINCDIRS)
+
+ifneq ($(strip $(OS_VERSION)),MSWin32)
+	@$(IF_EXIST) $(COMPVIA_DIR)/$(strip $(COMPONENT)).via_bak $(THEN) \
+		(($(COMPARE) $(COMPVIA_DIR)/$(strip $(COMPONENT)).via_bak $(COMPVIA_DIR)/$(strip $(COMPONENT)).via >$(DEV_NUL) 2>&1) $(WITH) \
+			($(IF_ERR_FALSE) $(THEN) \
+				(touch -r $(COMPVIA_DIR)/$(strip $(COMPONENT)).via_bak $(COMPVIA_DIR)/$(strip $(COMPONENT)).via >$(DEV_NUL)) $(AND) \
+				(echo $(COMPVIA_DIR)/$(strip $(COMPONENT)).via timestampe is changed from $(COMPVIA_DIR)/$(strip $(COMPONENT)).via_bak!) \
+			$(CMD_END))) $(AND) \
+		($(DEL_FILE) $(COMPVIA_DIR)/$(strip $(COMPONENT)).via_bak) \
+	$(CMD_END)
+
+	@$(IF_EXIST) $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via_bak $(THEN) \
+		(($(COMPARE) $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via_bak $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via >$(DEV_NUL) 2>&1) $(WITH) \
+			($(IF_ERR_FALSE) $(THEN) \
+				(touch -r $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via_bak $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via >$(DEV_NUL)) $(AND) \
+				(echo $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via timestampe is changed from $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via_bak!) \
+			$(CMD_END))) $(AND) \
+		($(DEL_FILE) $(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via_bak) \
+	$(CMD_END)
+endif
+
+ifeq ($(strip $(OS_VERSION)),MSWin32)
+	@tools\warp.exe $(subst /,\,$(COMPVIA_DIR))\$(strip $(COMPONENT)).via
+	@tools\warp.exe $(subst /,\,$(COMPVIA_DIR))\$(strip $(COMPONENT))_inc.via
+endif
+	@$(IF_NOT_EXIST) $(COMPLOGDIR)/$(strip $(COMPONENT)) $(THEN) $(MKDIR) $(COMPLOGDIR)/$(strip $(COMPONENT)) $(CMD_END)
+	@$(IF_NOT_EXIST) $(COMPDETS_DIR) $(THEN) $(MKDIR) $(COMPDETS_DIR) $(CMD_END)
+	@$(IF_NOT_EXIST) $(COMPOBJS_DIR) $(THEN) $(MKDIR) $(COMPOBJS_DIR) $(CMD_END)
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(filter __L1_KW_SCAN__,$(DEFINES)),)
+  ifdef SRC_RULE_AUTOTCM
+  ifneq ($(strip $(SRC_RULE_AUTOTCM)),)
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/$(strip $(COMPONENT))_auto_tcm.log $(THEN) $(DEL_FILE) $(strip $(COMPLOGDIR))/$(strip $(COMPONENT))_auto_tcm.log $(CMD_END)
+	@$(IF_NOT_EXIST) $(PROJ_INTERNAL_DIR)/auto_tcm/$(strip $(COMPONENT)) $(THEN) $(MKDIR) $(PROJ_INTERNAL_DIR)/auto_tcm/$(strip $(COMPONENT)) $(CMD_END)
+  endif
+  endif
+  ifdef SRC_RULE_AUTOAMMS_DRDI
+  ifneq ($(strip $(SRC_RULE_AUTOAMMS_DRDI)),)
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/$(strip $(COMPONENT))_auto_amms_drdi.log $(THEN) $(DEL_FILE) $(strip $(COMPLOGDIR))/$(strip $(COMPONENT))_auto_amms_drdi.log $(CMD_END)
+	@$(IF_NOT_EXIST) $(PROJ_INTERNAL_DIR)/auto_amms/$(strip $(COMPONENT)) $(THEN) $(MKDIR) $(PROJ_INTERNAL_DIR)/auto_amms/$(strip $(COMPONENT)) $(CMD_END)
+  endif
+  endif
+  endif
+  endif
+  # generate vcxproj for modis/uesim.
+  ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+		perl ./$(strip $(MODISDIR))/createMoDIS.pl "$(strip $(PROJECT_MAKEFILE))" $(MODIS_UESIM) "$(strip $(COMPONENT))"
+  endif
+
+else
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+	@echo Generating $(COMPONENT) information is done.
+  else
+	@echo $(COMPONENT) MoDIS module setup is done.
+  endif
+endif
+ifneq ($(PCIBT_ACTION_LIST),)
+  ifeq ($(strip $(RUN_SETUP_ENV)),TRUE)
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) $(MODULE_MAKEFILE) $(COMPONENT_LOG).lis,$(COMPVIA_DIR)/$(strip $(COMPONENT))_inc.via $(PCIBT_ACTION_LIST)
+  else
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) $(MODULE_MAKEFILE) $(COMPONENT_LOG).lis,$(COMPONENT_LOG).inc $(PCIBT_ACTION_LIST)
+  endif
+endif
+
+# *************************************************************************
+# Dependency Targets
+# *************************************************************************
+update_dep: $(TARGDEP)
+	#@$(IF_EXIST) $(COMPDETS_DIR) $(THEN) $(DEL_DIR) $(COMPDETS_DIR) $(CMD_END)
+
+$(TARGDEP):
+   # mbis time probe
+ifeq ($(strip $(MBIS_EN_OBJ_LOG)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,D," >> $(COMPLOGDIR)/mbis/$(strip $(COMPONENT))/$(basename $(notdir $@))".mbis"
+endif
+	@$(IF_EXIST) $(COMPDETS_DIR) $(THEN) perl ./tools/pack_dep_gcc.pl $(TARGDEP) $(COMPDETS_DIR) $(HTOGETHER) $(strip $(HEADER_TEMP)) $(CMD_END)
+	#@$(IF_EXIST) $(COMPDETS_DIR) $(THEN) $(DEL_DIR) $(COMPDETS_DIR) $(CMD_END)
+ifneq ($(PCIBT_ACTION_LIST),)
+	$(PCIBT_SCRIPT_CMD) $(CHK_LTE_COMP) $(MODULE_MAKEFILE) $(TARGDEP) $(PCIBT_ACTION_LIST)
+endif
+   # mbis time probe
+ifeq ($(strip $(MBIS_EN_OBJ_LOG)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,D," >> $(COMPLOGDIR)/mbis/$(strip $(COMPONENT))/$(basename $(notdir $@))".mbis"
+endif
+
+# *************************************************************************
+# Component Targets
+# *************************************************************************
+# %.c: %.txt
+define target_adt_codegen
+$(2): $(1) $(3)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Processing for ADT codegen $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$(IF_NOT_EXIST) $$(strip $$(ADT_RULESDIR))/$$(strip $$(COMPONENT)) $(THEN) $(MKDIR) $$(strip $$(ADT_RULESDIR))/$$(strip $$(COMPONENT)) $(CMD_END)
+	@perl $(3) $(1) $$(strip $$(ADT_RULESDIR))/$$(strip $$(COMPONENT))/$(4).c $$(strip $$(ADT_RULESDIR))/$$(strip $$(COMPONENT))/$(4).h >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.obj: %.c
+# %.obj: %.cpp
+define target_compile_c_obj
+ifneq ($(filter update_lib,$(MAKECMDGOALS)),)
+include $$(wildcard $$(COMPDETS_DIR)/$$(basename $$(notdir $(1))).d)
+endif
+ifeq ($$(strip $$(SMART_CHECK)),TRUE)
+$(2): $$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via
+endif
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+ifeq ($$(strip $$(SMART_CHECK)),TRUE)
+	@echo [SMART LOG] $$@ target is triggered by: $$?
+endif
+	@perl ./tools/chk_dsp_ase.pl "$$(strip $$(COMPONENT))" "$$(strip $$(DSP_ASE_MODULES))" "$$($(4))"
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+  ifndef CCACHE_DIR
+		$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$($(4)) -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$($(4)) -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$($(4)) -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$($(4)) -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+else
+  ifndef CCACHE_DIR
+		$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$($(4)) $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$($(4)) $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$($(4)) $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$($(4)) $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+	@$$(ECHO) "$(1):" >> "$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+endif
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.obj: %.c (tcm)
+# %.obj: %.cpp (tcm)
+define target_compile1_c_obj
+ifneq ($(filter update_lib,$(MAKECMDGOALS)),)
+include $$(wildcard $$(COMPDETS_DIR)/$$(basename $$(notdir $(1))).d)
+endif
+ifeq ($$(strip $$(SMART_CHECK)),TRUE)
+$(2): $$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via
+endif
+$(2): $(1) $$(NEED_CHECK_DEPEND_LIST) ./tools/auto_tcm_attribute.pl $$(filter-out NO_LIST,$$(TARGET_AUTOTCM_LIST))
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Pre-compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(IF_EXIST) $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$(THEN) $$(DEL_FILE) $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+  ifndef CCACHE_DIR
+		$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -o $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -o $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -o $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -o $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+else
+  ifndef CCACHE_DIR
+	$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+	@$$(ECHO) "$(1):" >> "$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+endif
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+ifneq ($$(strip $$(MODIS_CONFIG)),TRUE)
+ifneq ($$(filter-out NO_LIST,$$(TARGET_AUTOTCM_LIST)),)
+# writing the same log at the same time is protected by OS
+	@perl ./tools/auto_tcm_attribute.pl $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$(TARGET_AUTOTCM_LIST) $$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))_auto_tcm.log >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log 2>&1
+endif
+endif
+	@echo $(3) -c $$($(4)) -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c
+	@$(3) -c $$($(4)) -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$(PROJ_INTERNAL_DIR)/auto_tcm/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.obj: %.c (amms_drdi)
+# %.obj: %.cpp (amms_drdi)
+define target_compile_c_obj_amms_drdi
+ifneq ($(filter update_lib,$(MAKECMDGOALS)),)
+include $$(wildcard $$(COMPDETS_DIR)/$$(basename $$(notdir $(1))).d)
+endif
+ifeq ($$(strip $$(SMART_CHECK)),TRUE)
+$(2): $$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via
+endif
+$(2): $(1) $$(NEED_CHECK_DEPEND_LIST) ./tools/auto_amms_drdi_attribute.pl $$(filter-out NO_LIST,$$(TARGET_AMMS_DRDI_LIST))
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Pre-compiling $$< to $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(IF_EXIST) $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$(THEN) $$(DEL_FILE) $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+  ifndef CCACHE_DIR
+		$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -o $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -o $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -o $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -o $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+else
+  ifndef CCACHE_DIR
+		$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -E -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+	@$$(ECHO) "$(1):" >> "$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+endif
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+ifneq ($$(strip $$(MODIS_CONFIG)),TRUE)
+ifneq ($$(filter-out NO_LIST,$$(TARGET_AMMS_DRDI_LIST)),)
+# writing the same log at the same time is protected by OS
+	@perl ./tools/auto_amms_drdi_attribute.pl $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c $$(TARGET_AMMS_DRDI_LIST) $$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))_auto_amms_drdi.log >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log 2>&1
+endif
+endif
+	@echo $(3) -c $$($(4)) -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c
+	@$(3) -c $$($(4)) -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$(PROJ_INTERNAL_DIR)/auto_amms/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).c 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.det: %.c
+# %.det: %.cpp
+define target_scan_c_det
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Pre-compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -M $$< >$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.obj: %.s
+define target_compile_asm_obj
+ifneq ($(filter update_lib,$(MAKECMDGOALS)),)
+include $$(wildcard $$(COMPDETS_DIR)/$$(basename $$(notdir $(1))).d)
+endif
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+	$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) $$< -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+else
+	$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(AS_depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+
+	@$$(ECHO) "$(1):" >> "$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+endif
+# mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.det: %.s
+define target_scan_asm_det
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Pre-compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.obj: %.s (-32)
+define target_compile1_asm_obj
+ifneq ($(filter update_lib,$(MAKECMDGOALS)),)
+include $$(wildcard $$(COMPDETS_DIR)/$$(basename $$(notdir $(1))).d)
+endif
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+  ifeq ($$(strip $$(COMPILER)),GCC)
+		$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) -mapcs-32 $$< -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  endif
+else
+  ifeq ($$(strip $$(COMPILER)),GCC)
+		$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) -mapcs-32 $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(AS_depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+		@$$(ECHO) "$(1):" >> "$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+  endif
+endif
+# mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.obj: %.s (preprocess)
+define target_compile2_asm_obj
+ifneq ($(filter update_lib,$(MAKECMDGOALS)),)
+include $$(wildcard $$(COMPDETS_DIR)/$$(basename $$(notdir $(1))).d)
+endif
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Pre-compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(STRCMPEX) abc abc e $$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(A_CDEFS) -D$$(strip $$(PLATFORM))_$$(strip $$(CHIP_VER))=$$(strip $$(PLATFORM))_$$(strip $$(CHIP_VER))
+ifeq ($$(strip $$(OS_VERSION)),MSWin32)
+	@tools\warp.exe $$(COMPVIA_DIR)\$$(basename $$(notdir $$@))_det.via
+endif
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+  ifndef CCACHE_DIR
+		$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+else
+  ifndef CCACHE_DIR
+		$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+endif
+	@echo Compiling $$< ... >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+	$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+else
+	$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(ECHO) "$(1):" >> "$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+endif
+
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.det: %.s (preprocess)
+define target_scan2_asm_det
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Pre-compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(STRCMPEX) abc abc e $$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(A_CDEFS) -D$$(strip $$(PLATFORM))_$$(strip $$(CHIP_VER))=$$(strip $$(PLATFORM))_$$(strip $$(CHIP_VER)) $$(CINCDIRS)
+ifeq ($$(strip $$(OS_VERSION)),MSWin32)
+	@tools\warp.exe $$(COMPVIA_DIR)\$$(basename $$(notdir $$@))_det.via
+endif
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s $$(CMD_END)
+ifndef CCACHE_DIR
+	$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+else
+  ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+		$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+			$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+			$(CCACHE) $$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    endif
+  endif
+endif
+	@$$(IF_EXIST) $$(COMPDETS_DIR)/~$$(basename $$(notdir $$@)).d $$(THEN) \
+		$$(CAT) $$(COMPDETS_DIR)/~$$(basename $$(notdir $$@)).d | $$(GREP_V) "$$(basename $$(notdir $$@)).s" >>$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d $$(WITH) (exit 0)\
+	$$(CMD_END)
+	@$$(IF_EXIST) $$(COMPDETS_DIR)/~$$(basename $$(notdir $$@)).d $$(THEN) $$(DEL_FILE) $$(COMPDETS_DIR)/~$$(basename $$(notdir $$@)).d $$(CMD_END)
+
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.obj: %.s (preprocess and -32)
+define target_compile3_asm_obj
+ifneq ($(filter update_lib,$(MAKECMDGOALS)),)
+include $$(wildcard $$(COMPDETS_DIR)/$$(basename $$(notdir $(1))).d)
+endif
+$(2): $(1)
+# mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Pre-compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(STRCMPEX) abc abc e $$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(A_CDEFS) -D$$(strip $$(PLATFORM))_$$(strip $$(CHIP_VER))=$$(strip $$(PLATFORM))_$$(strip $$(CHIP_VER))
+ifeq ($$(strip $$(OS_VERSION)),MSWin32)
+	@tools\warp.exe $$(COMPVIA_DIR)\$$(basename $$(notdir $$@))_det.via
+endif
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+  ifndef CCACHE_DIR
+		$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+else
+  ifndef CCACHE_DIR
+		$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+    ifneq ($(filter $(1),$(strip $(CCACHE_EXCLUDE_FILE))),)
+			$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+    else
+      ifneq ($$(strip $$(CUSTOM_RELEASE)),FALSE)
+				$$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      else
+				$(CCACHE) $$(CC) $$(VIA)$$(COMPVIA_DIR)/$$(basename $$(notdir $$@))_det.via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(ASM_CPPFLAGS) $$(AFLAGS) -E $$< -MT '$$(COMPOBJS_DIR)/$$(notdir $$@)' $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+      endif
+    endif
+  endif
+endif
+	@echo Compiling $$< ... >>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+  ifeq ($$(strip $$(COMPILER)),GCC)
+	$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) -mapcs-32 $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+	@$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) -32 $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  endif
+else
+  ifeq ($$(strip $$(COMPILER)),GCC)
+		$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) -mapcs-32 $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  else
+		@$$(ASM) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via $$(AFLAGS) $$(EXTRA_AFLAGS) $$(ADEFS) -32 $$(COMPOBJS_DIR)/$$(basename $$(notdir $$@)).s -o $$(COMPOBJS_DIR)/$$(notdir $$@) 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+  endif
+	@$$(ECHO) "$(1):" >> "$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+endif
+
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.obj: %.c (MoDIS Clang)
+define modis_clang_compile_c_obj
+ifneq ($(filter update_lib,$(MAKECMDGOALS)),)
+include $$(wildcard $$(COMPDETS_DIR)/$$(basename $$(notdir $(1))).d)
+endif
+ifeq ($$(strip $$(SMART_CHECK)),TRUE)
+$(2): $$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via
+endif
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+ifeq ($$(strip $$(SMART_CHECK)),TRUE)
+	@echo [SMART LOG] $$@ target is triggered by: $$?
+endif
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+ifeq ($$(filter remake_modis,$$(strip $$(ACTION))),)
+	@echo "$$(strip $$(ClangDir))/bin/clang $$(CFLAGS_CLANG_MODIS_DEP_OPTS) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -MM -MP -MT $$(COMPOBJS_DIR)/$$(notdir $$@) $$< -MF $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+	@$$(strip $$(ClangDir))/bin/clang $$(CFLAGS_CLANG_MODIS_DEP_OPTS) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -MM -MP -MT $$(COMPOBJS_DIR)/$$(notdir $$@) $$< -MF $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d
+	@$$(ECHO) "$(1):" >> "$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+endif
+	@if [[ "$$(LLVM_COVERAGE)" == "" || "$$<" == */ut/* || $$< == */it/* || $$< == */_BUILD_XGEN/* || $$< == *gtest* ]]; then \
+		echo "$(3) $$(strip $$(CLANG_FOR_DETERMINISTIC)) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via /c $$(CFLAGS) /Fo$$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log" &&\
+		$(3) $$(strip $$(CLANG_FOR_DETERMINISTIC)) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via /c $$(CFLAGS) /Fo$$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log; \
+	else \
+		echo "$(3) $$(strip $$(CLANG_FOR_DETERMINISTIC)) -fprofile-instr-generate -Xclang -fcoverage-mapping $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via /c $$(CFLAGS) /Fo$$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log" &&\
+		$(3) $$(strip $$(CLANG_FOR_DETERMINISTIC)) -fprofile-instr-generate -Xclang -fcoverage-mapping $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via /c $$(CFLAGS) /Fo$$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log; \
+	fi
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+
+
+# %.det: %.c (MoDIS Clang)
+define modis_clang_scan_c_det
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Pre-compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+	@$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -M $$< >$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+# %.obj: %.c (MoDIS)
+define modis_compile_c_obj
+include $$(wildcard $$(COMPDETS_DIR)/$$(basename $$(notdir $(1))).d)
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+ifeq ($$(strip $$(ACTION)),remake)
+	$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$(CFLAGS) -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+else
+	$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -c $$(CFLAGS) $$(depend) $$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d -o $$(COMPOBJS_DIR)/$$(notdir $$@) $$< 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(ECHO) "$(1):" >> "$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d"
+endif
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+
+# %.det: %.c (MoDIS)
+define modis_scan_c_det
+$(2): $(1)
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_S,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+	@echo Pre-compiling $$< ... >$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+	@$$(IF_EXIST) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(THEN) $$(DEL_FILE) $$(COMPOBJS_DIR)/$$(notdir $$@) $$(CMD_END)
+	@$(3) $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT)).via $$(VIA)$$(COMPVIA_DIR)/$$(strip $$(COMPONENT))_inc.via -M $$< >$$(COMPDETS_DIR)/$$(basename $$(notdir $$@)).d 2>>$$(strip $$(COMPLOGDIR))/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@)).log
+   # mbis time probe
+ifeq ($$(strip $$(MBIS_EN_OBJ_LOG)),TRUE)
+	@$$(ECHO) -n -t "T_E,$$(@F),O," >> $$(strip $$(COMPLOGDIR))/mbis/$$(strip $$(COMPONENT))/$$(basename $$(notdir $$@))".mbis"
+endif
+endef
+
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(filter __L1_KW_SCAN__,$(DEFINES)),)
+  ifdef SRC_RULE_ADT_CODEGEN
+    $(foreach argu,$(SRC_RULE_ADT_CODEGEN), \
+      $(eval $(call target_adt_codegen,$(TARGET_ADT_CODEGEN_LIST), $(strip $(ADT_RULESDIR))/$(strip $(COMPONENT))/$(argu).c,$(SRC_PERL_ADT_CODEGEN),$(argu))) \
+    )
+  endif
+  endif
+
+$(foreach argu,$(CSRCS_AMMS_DRDI), \
+  $(eval COBJ_AMMS_DRDI := $(patsubst %.C,%, $(patsubst %.c,%, $(patsubst %.cpp,%, $(notdir $(argu)))))) \
+  $(eval $(call target_compile_c_obj_amms_drdi,$(argu),$(strip $(COMPOBJS_DIR))/$(COBJ_AMMS_DRDI).obj,$(CC),$(if $(filter %.cpp,$(argu)),CPLUSFLAGS,CFLAGS))) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(COBJ_AMMS_DRDI).obj) \
+)
+
+$(foreach argu,$(CSRCS), \
+  $(eval COBJ := $(patsubst %.C,%, $(patsubst %.c,%, $(patsubst %.cpp,%, $(notdir $(argu)))))) \
+  $(eval $(call target_compile_c_obj,$(argu),$(strip $(COMPOBJS_DIR))/$(COBJ).obj,$(CC),$(if $(filter %.cpp,$(argu)),CPLUSFLAGS,CFLAGS))) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(COBJ).obj) \
+)
+
+$(foreach argu,$(CSRCS1), \
+  $(eval COBJ1 := $(patsubst %.C,%, $(patsubst %.c,%, $(patsubst %.cpp,%, $(notdir $(argu)))))) \
+  $(eval $(call target_compile1_c_obj,$(argu),$(strip $(COMPOBJS_DIR))/$(COBJ1).obj,$(CC),$(if $(filter %.cpp,$(argu)),CPLUSFLAGS,CFLAGS))) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(COBJ1).obj) \
+)
+
+$(foreach argu,$(CSRCS5), \
+  $(eval COBJ5 := $(patsubst %.C,%, $(patsubst %.c,%, $(patsubst %.cpp,%, $(notdir $(argu)))))) \
+  $(eval $(call target_compile_c_obj,$(argu),$(strip $(COMPOBJS_DIR))/$(COBJ5).obj,$(CC32),$(if $(filter %.cpp,$(argu)),CPLUSFLAGS,CFLAGS))) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(COBJ5).obj) \
+)
+
+$(foreach argu,$(CSRCS6), \
+  $(eval COBJ6 := $(patsubst %.C,%, $(patsubst %.c,%, $(patsubst %.cpp,%, $(notdir $(argu)))))) \
+  $(eval $(call target_compile1_c_obj,$(argu),$(strip $(COMPOBJS_DIR))/$(COBJ6).obj,$(CC32),$(if $(filter %.cpp,$(argu)),CPLUSFLAGS,CFLAGS))) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(COBJ6).obj) \
+)
+
+$(foreach argu,$(ASRCS), \
+  $(eval AOBJ := $(patsubst %.S,%, $(patsubst %.s,%, $(patsubst %.arm,%, $(notdir $(argu)))))) \
+  $(eval $(call target_compile2_asm_obj,$(argu),$(strip $(COMPOBJS_DIR))/$(AOBJ).obj)) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(AOBJ).obj) \
+)
+
+$(foreach argu,$(ASRCS1), \
+  $(eval AOBJ1 := $(patsubst %.S,%, $(patsubst %.s,%, $(notdir $(argu))))) \
+  $(eval $(call target_compile3_asm_obj,$(argu),$(strip $(COMPOBJS_DIR))/$(AOBJ1).obj)) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(AOBJ1).obj) \
+)
+
+$(foreach argu,$(ASRCS2), \
+  $(eval AOBJ2 := $(patsubst %.S,%, $(patsubst %.s,%, $(notdir $(argu))))) \
+  $(eval $(call target_compile2_asm_obj,$(argu),$(strip $(COMPOBJS_DIR))/$(AOBJ2).obj)) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(AOBJ2).obj) \
+)
+
+else
+
+ifeq ($(strip $(MODIS_COMPILER)),CLANG)
+$(foreach argu,$(filter %.c %.cpp,$(SRC_LIST)), \
+  $(eval COBJ := $(patsubst %.c,%, $(patsubst %.cpp,%, $(notdir $(argu))))) \
+  $(eval $(call modis_clang_compile_c_obj,$(argu),$(strip $(COMPOBJS_DIR))/$(COBJ).obj,$(CC_MODIS))) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(COBJ).obj) \
+)
+
+else
+$(foreach argu,$(filter %.c %.cpp,$(SRC_LIST)), \
+  $(eval COBJ0 := $(patsubst %.c,%, $(patsubst %.cpp,%, $(notdir $(argu))))) \
+  $(eval $(call modis_compile_c_obj,$(argu),$(strip $(COMPOBJS_DIR))/$(COBJ0).obj,$(CC_MODIS))) \
+  $(eval $(TARGLIB): $(strip $(COMPOBJS_DIR))/$(COBJ0).obj) \
+)
+endif
+
+endif
diff --git a/mcu/make/common/compiler.mak b/mcu/make/common/compiler.mak
new file mode 100644
index 0000000..c4942d4
--- /dev/null
+++ b/mcu/make/common/compiler.mak
@@ -0,0 +1,279 @@
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2015
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+# *****************************
+# Environment and Tools
+# *****************************
+ifndef COMPILER_VER
+  COMPILER_VER = MIPS_GCCV4
+endif
+
+ifeq ($(strip $(LTO_BUILD)),TRUE)
+  LINK_BY_GCC = TRUE
+else
+  LINK_BY_GCC = FALSE
+  LTO_BUILD = FALSE
+endif
+    
+ifdef COMPILER
+  ifeq ($(strip $(COMPILER)),GCC)
+    ifeq ($(strip $(COMPILER_VER)),MIPS_GCCV6)
+      ifneq ($(strip $(COMPILER_ISA)),NANOMIPS)
+      GCC_TOOL_CHAIN := ./tools/GCC/MIPS/6.3.0/linux
+      else
+      GCC_TOOL_CHAIN := ./tools/GCC/NANOMIPS/6.3.0/linux
+      endif
+    else ifeq ($(strip $(COMPILER_VER)),MIPS_GCCV4)
+      GCC_TOOL_CHAIN := ./tools/GCC/MIPS/4.9.2/linux
+    endif
+    ifeq ($(strip $(COMPILER_ARCH)),ARM)
+      VIA = @
+      DEPEND = -MMD  -MF
+      BIN_FORMAT     = -O binary
+      DIR_TOOL       = $(strip $(DIR_TOOL))
+      ifeq ($(strip $(OS_VERSION)),MSWin32)
+        CROSS = .\mtk_tools\GCC\ARM\bin\arm-none-eabi-
+        CPL             = $(CROSS)gcc.exe               # compiler
+        CC             = $(CROSS)gcc.exe  -mthumb       # compiler
+        CC32           = $(CROSS)gcc.exe  -marm         # compiler
+        CPPC           = $(CROSS)g++.exe                # C++ compiler
+        CPPC32         = $(CROSS)g++.exe -marm          # compiler
+        LINK           = $(CROSS)ld.exe                 # Linker
+        DUMP           = $(CROSS)objdump.exe            # Linker
+        ASM            = $(CROSS)as                     # ARM assembler
+        LIB            = $(CROSS)ar.exe                 # Library tool
+        BIN_CREATE     = $(CROSS)objcopy                # Binary tool
+        CPLUSFLAGS     = $(CFLAGS)
+        MD             = ""
+      endif
+    else
+      VIA = @
+      DEPEND = -MMD -MP -MF
+      BIN_FORMAT     = -O binary
+      DIR_TOOL       = $(strip $(DIR_TOOL))
+      ifeq ($(strip $(OS_VERSION)),MSWin32)
+        CROSS = .\mtk_tools\GCC\ARM\bin\arm-none-eabi-
+        CPL            = $(CROSS)gcc.exe                # compiler
+        CC             = $(CROSS)gcc.exe  -mthumb       # compiler
+        CC32           = $(CROSS)gcc.exe  -marm         # compiler
+        CPPC           = $(CROSS)g++.exe                # C++ compiler
+        CPPC32         = $(CROSS)g++.exe -marm          # compiler
+        LINK           = $(CROSS)ld.exe                 # Linker
+        DUMP           = $(CROSS)objdump.exe            # Linker
+        ASM            = $(CROSS)as                     # ARM assembler
+        LIB            = $(CROSS)ar.exe                 # Library tool
+        BIN_CREATE     = $(CROSS)objcopy                # Binary tool
+        CPLUSFLAGS     = $(CFLAGS)
+        MD             = ""
+      else
+        ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+        CROSS          = $(strip $(GCC_TOOL_CHAIN))/bin/nanomips-elf-
+        else
+        CROSS          = $(strip $(GCC_TOOL_CHAIN))/bin/mips-mti-elf-
+        endif
+        CPL            = $(CROSS)gcc                    # compiler
+        CC             = $(CROSS)gcc                    # compiler
+        CC32           = $(CROSS)gcc                    # compiler
+        CPPC           = $(CROSS)g++                    # C++ compiler
+        CPPC32         = $(CROSS)g++                    # compiler
+        LINK           = $(CROSS)ld                     # Linker
+        DUMP           = $(CROSS)objdump                # Linker
+        ASM            = $(CROSS)as                     # ARM assembler
+        LIB            = $(CROSS)ar                     # Library tool
+        BIN_CREATE     = $(CROSS)objcopy                # Binary tool
+        GDB_CREATE     = $(CROSS)gdb                    # Gdb tool
+        CPLUSFLAGS     = $(CFLAGS)
+        MD             = ""
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(LINK_BY_GCC)),TRUE)
+    LINK := $(CROSS)gcc          
+    LIB  := $(CROSS)gcc-ar
+endif
+
+# *****************************
+# C options COPTION16 for thumb mode and COPTION32 for arm mode
+# *****************************
+ifeq ($(strip $(COMPILER)),GCC)
+  CFLAGS          := -Wno-attributes -Wno-pragmas -fstrict-volatile-bitfields
+  ifeq ($(strip $(GCC_WARN_AS_ERROR)),TRUE)
+    ifeq ($(strip $(NO_WARNING_AS_ERROR)),FALSE)
+      CFLAGS          += -Werror
+    endif
+  endif
+endif
+
+ifneq ($(filter $(strip $(SUPPORT_PLATFORM)), $(strip $(PLATFORM))),)
+ ifeq ($(strip $(COMPILER)),GCC)
+  ifeq ($(strip $(COMPILER_ARCH)),ARM)
+     DWARF_FLAGS     := -gdwarf-4
+     PLATFORM_FLAGS  := -march=armv7-r -mcpu=cortex-r4 -mlittle-endian -Wa,-mimplicit-it=always -mabi=aapcs
+     PLATFORM_AFLAGS := -march=armv7-r -mcpu=cortex-r4 -mlittle-endian -mimplicit-it=always -mapcs-32
+     OFLAGS          := -Os -fno-strict-aliasing -fno-common -fno-exceptions -ffunction-sections -fdata-sections
+     OAFLAGS         := $(DWARF_FLAGS)
+     CFLAGS          += $(PLATFORM_FLAGS) $(OFLAGS) -fno-delete-null-pointer-checks -Wall -c -mno-unaligned-access -fshort-wchar
+   ifeq ($(strip $(OS_VERSION)),MSWin32)
+     LINK_SEARCH_PATH = -L "./tools/GCC/ARM/4.9.3/win/arm-none-eabi/lib/armv7-ar/thumb" \
+                        -L "./tools/GCC/ARM/4.9.3/win/lib/gcc/arm-none-eabi/4.9.3/armv7-ar/thumb"
+   endif
+  else
+   ifneq ($(strip $(OS_VERSION)),MSWin32)
+     DWARF_FLAGS     := -gdwarf-4
+     ifeq ($(strip $(COMPILER_ISA)),MIPS16)
+       PLATFORM_FLAGS   := -march=interAptiv-mr2 -mips16 -mmips16e2 -EL -mabi=32 -msoft-float -mno-dsp -mmt -mno-gpopt -mno-long-calls -G0 -minterlink-mips16 -mdead-loads -mblockmov-limit=0
+       PLATFORM_AFLAGS  := -march=interAptiv-mr2 -mips16 -mmips16e2 -EL -msoft-float -mno-dsp -mmt -G0
+     else ifeq ($(strip $(COMPILER_ISA)),MIPS32)
+       PLATFORM_FLAGS   := -march=interAptiv-mr2 -EL -mabi=32 -msoft-float -mno-dsp -mmt -mno-gpopt -mno-long-calls -G0 -minterlink-compressed -mdead-loads -mblockmov-limit=0
+       PLATFORM_AFLAGS  := -march=interAptiv-mr2 -EL -msoft-float -mno-dsp -mmt -G0
+     else #nanomips
+       PLATFORM_FLAGS   := -std=c11 -march=i7200 -EL -msoft-float -mmt -mno-gpopt -mno-long-calls -G0 -mblockmov-limit=0 -mno-dsp
+       PLATFORM_AFLAGS  := -march=i7200 -EL -msoft-float -mmt -G0 -mno-dsp
+       EXTRA_AFLAGS     := 
+     endif
+     OFLAGS          := -Os -fno-builtin-printf -fstrict-aliasing -fno-common -fno-exceptions -ffunction-sections -fdata-sections
+     OAFLAGS         := $(DWARF_FLAGS)
+     ifeq ($(strip $(COMPILER_VER)),MIPS_GCCV6)
+       CFLAGS          += $(PLATFORM_FLAGS) $(OFLAGS) -fno-delete-null-pointer-checks -Wall -c -fshort-wchar -fshort-enums -std=c11 -D_GNU_SOURCE 
+       ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+         LINK_SEARCH_PATH = -L "./tools/GCC/NANOMIPS/6.3.0/linux/nanomips-elf/lib/nanomips-r6-soft-newlib/lib" \
+                            -L "./tools/GCC/NANOMIPS/6.3.0/linux/lib/gcc/nanomips-elf/6.3.0/nanomips-r6-soft-newlib/lib"
+       else
+         LINK_SEARCH_PATH = -L "./tools/GCC/MIPS/6.3.0/linux/mips-mti-elf/lib/mipsel-r2-soft-newlib/lib" \
+                            -L "./tools/GCC/MIPS/6.3.0/linux/lib/gcc/mips-mti-elf/6.3.0/mipsel-r2-soft-newlib/lib"
+       endif
+     else ifeq ($(strip $(COMPILER_VER)),MIPS_GCCV4)
+       CFLAGS          += $(PLATFORM_FLAGS) $(OFLAGS) -fno-delete-null-pointer-checks -Wall -c -fshort-wchar -fshort-enums
+       LINK_SEARCH_PATH = -L "./tools/GCC/MIPS/4.9.2/linux/mips-mti-elf/lib/mipsel-r2-soft-newlib/lib" \
+                          -L "./tools/GCC/MIPS/4.9.2/linux/lib/gcc/mips-mti-elf/4.9.2/mipsel-r2-soft-newlib/lib"
+     endif
+   endif
+  endif
+ endif
+endif
+
+CPLUSFLAGS := $(filter-out -fgnu89-inline -std=c11,$(CFLAGS))
+
+CFLAGS     +=  $(CUSTOM_CFLAGS)
+CPLUSFLAGS +=  $(CUSTOM_CFLAGS)
+
+BUILD_WARNING_CFLAGS :=
+-include make/common/build_warning_def.mak
+ifeq ($(strip $(NO_WARNING_AS_ERROR)),FALSE)
+  ifneq ($(strip $(BUILD_WARNING_CFLAGS)),)
+    ifeq ($(filter $(strip $(PROJECT_NAME))_$(strip $(FLAVOR)),$(CLOSE_WARNING_AS_ERROR_PROJECT)),)
+      CFLAGS     +=  $(BUILD_WARNING_CFLAGS)
+      CPLUSFLAGS +=  $(BUILD_WARNING_CFLAGS)
+    endif
+  endif
+endif
+
+# *****************************
+# assembly option AOPTION16 for Thumb mode and AOPTION32 for Arm mode
+# *****************************
+ifeq ($(strip $(COMPILER)),GCC)
+  AFLAGS := $(PLATFORM_AFLAGS) $(OAFLAGS) -g
+endif # end of " COMPILER == GCC "
+
+ifeq ($(strip $(LINK_BY_GCC)),TRUE)
+    LINK_OPTION_PREFIX := -Wl,
+else
+    LINK_OPTION_PREFIX :=
+endif
+
+# *****************************
+# Macros definition for GCC
+# *****************************
+ifeq ($(strip $(COMPILER)),GCC)
+  ifeq ($(strip $(COMPILER_ARCH)),ARM)
+    WRAP_LIST = --wrap=memcpy --wrap=memset --wrap=memclr --wrap=strcmp --wrap=sprintf  --wrap=vsprintf --wrap=snprintf --wrap=vsnprintf --wrap=sscanf --wrap=vsscanf \
+    --wrap=raise --wrap=__aeabi_div0 --wrap=setlocale --wrap=on_exit --wrap=getenv --wrap=clock --wrap=puts \
+    --wrap=putchar --wrap=printf --wrap=vprintf --wrap=malloc --wrap=_malloc_r --wrap=calloc --wrap=_calloc_r --wrap=realloc --wrap=_realloc_r \
+    --wrap=free --wrap=_free_r --wrap=qsort --wrap=fprintf --wrap=fflush --wrap=_fflush_r --wrap=setbuf --wrap=setvbuf --wrap=fscanf \
+    --wrap=scanf --wrap=vfscanf --wrap=vscanf --wrap=vfprintf --wrap=fgetc --wrap=fgets --wrap=getc --wrap=getchar --wrap=gets \
+    --wrap=putc  --wrap=ungetc --wrap=_ungetc_r --wrap=fgetpos --wrap=fseek --wrap=fsetpos --wrap=ftell --wrap=rewind --wrap=clearerr \
+    --wrap=feof --wrap=ferror --wrap=fopen --wrap=freopen --wrap=_fclose_r --wrap=fclose --wrap=fprintf --wrap=fread --wrap=fwrite \
+    --wrap=fputc --wrap=fputs --wrap=perror
+  else
+    WRAP_LIST = $(strip $(LINK_OPTION_PREFIX))--wrap=memset $(strip $(LINK_OPTION_PREFIX))--wrap=memcpy $(strip $(LINK_OPTION_PREFIX))--wrap=setlocale $(strip $(LINK_OPTION_PREFIX))--wrap=clock $(strip $(LINK_OPTION_PREFIX))--wrap=__cxa_atexit $(strip $(LINK_OPTION_PREFIX))--wrap=rand $(strip $(LINK_OPTION_PREFIX))--wrap=srand \
+    $(strip $(LINK_OPTION_PREFIX))--wrap=malloc $(strip $(LINK_OPTION_PREFIX))--wrap=_malloc_r $(strip $(LINK_OPTION_PREFIX))--wrap=calloc $(strip $(LINK_OPTION_PREFIX))--wrap=_calloc_r $(strip $(LINK_OPTION_PREFIX))--wrap=realloc $(strip $(LINK_OPTION_PREFIX))--wrap=_realloc_r $(strip $(LINK_OPTION_PREFIX))--wrap=free $(strip $(LINK_OPTION_PREFIX))--wrap=_free_r $(strip $(LINK_OPTION_PREFIX))--wrap=printf $(strip $(LINK_OPTION_PREFIX))--wrap=vprintf $(strip $(LINK_OPTION_PREFIX))--wrap=sprintf $(strip $(LINK_OPTION_PREFIX))--wrap=snprintf $(strip $(LINK_OPTION_PREFIX))--wrap=vsprintf $(strip $(LINK_OPTION_PREFIX))--wrap=vsnprintf
+  endif
+
+# *************************
+#  Settings for TARGET
+# *************************
+  ifeq ($(strip $(COMPILER_ARCH)),ARM)
+    LNKOPT = $(strip $(WRAP_LIST)) -Bstatic --cref --warn-common --gc-sections --nmagic --emit-relocs \
+           -o $(strip $(TARGDIR))\$(IMG_FILE) \
+           -Map $(strip $(TARGDIR))\$(MAP_FILE) \
+           -dT $(strip $(SCATTERFILE)) \
+           $(strip $(LINK_SEARCH_PATH))
+  else
+    LNKOPT = $(strip $(WRAP_LIST)) -EL $(strip $(LINK_OPTION_PREFIX))-Bstatic $(strip $(LINK_OPTION_PREFIX))--cref \
+             $(strip $(LINK_OPTION_PREFIX))--warn-common $(strip $(LINK_OPTION_PREFIX))--gc-sections \
+             $(strip $(LINK_OPTION_PREFIX))--nmagic \
+             $(strip $(LINK_OPTION_PREFIX))--threads \
+             $(strip $(LINK_OPTION_PREFIX))--thread-count-initial $(strip $(LINK_OPTION_PREFIX))10 \
+             $(strip $(LINK_OPTION_PREFIX))--thread-count-middle $(strip $(LINK_OPTION_PREFIX))1 \
+             $(strip $(LINK_OPTION_PREFIX))--thread-count-final $(strip $(LINK_OPTION_PREFIX))5 \
+             $(strip $(LINK_OPTION_PREFIX))--preread-archive-symbols \
+             -o $(strip $(TARGDIR))\$(IMG_FILE) \
+             $(strip $(LINK_SEARCH_PATH))
+    ifeq ($(strip $(LINK_BY_GCC)),TRUE)
+      LNKOPT += $(strip $(LINK_SEARCH_PATH)) $(filter-out -c,$(CFLAGS)) \
+                $(strip $(LINK_OPTION_PREFIX))-Map,$(strip $(TARGDIR))\$(MAP_FILE) \
+                $(strip $(LINK_OPTION_PREFIX))-dT,$(strip $(SCATTERFILE)) \
+                -nostartfiles
+    else
+      LNKOPT += $(strip $(LINK_OPTION_PREFIX))-Map $(strip $(TARGDIR))\$(MAP_FILE) \
+                $(strip $(LINK_OPTION_PREFIX))-dT $(strip $(SCATTERFILE))
+    endif
+  endif
+
+  ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+    LNKOPT += $(strip $(LINK_OPTION_PREFIX))--discard-locals $(strip $(LINK_OPTION_PREFIX))--no-print-map-discarded
+  endif
+
+  ifeq ($(strip $(LTO_BUILD)),TRUE) 
+    LNKOPT += -flto -fno-fat-lto-objects
+  endif
+
+  ifneq ($(filter $(strip $(SUPPORT_PLATFORM)), $(strip $(PLATFORM))),)
+    ifeq ($(strip $(COMPILER_ARCH)),ARM)
+      LNKOPT += --thumb-entry=INT_Vectors
+    else
+      LNKOPT += --entry=INT_Vectors
+    endif
+  endif
+endif #ifeq ($(strip $(COMPILER)),GCC)
diff --git a/mcu/make/common/extra_dep.mak b/mcu/make/common/extra_dep.mak
new file mode 100644
index 0000000..ab39e5b
--- /dev/null
+++ b/mcu/make/common/extra_dep.mak
@@ -0,0 +1,56 @@
+Upper = $(subst z,Z,$(subst y,Y,$(subst x,X,$(subst w,W,$(subst v,V,$(subst u,U,$(subst t,T,$(subst s,S,$(subst r,R,$(subst q,Q,$(subst p,P,$(subst o,O,$(subst n,N,$(subst m,M,$(subst l,L,$(subst k,K,$(subst j,J,$(subst i,I,$(subst h,H,$(subst g,G,$(subst f,F,$(subst e,E,$(subst d,D,$(subst c,C,$(subst b,B,$(subst a,A,$(1)))))))))))))))))))))))))))
+
+# *************************************************************************
+# Feature Removing / Can't be enabled in custom projects.
+# *************************************************************************
+
+# *************************************************************************
+# Feature Removing / non-MP
+# *************************************************************************
+
+# *************************************************************************
+# Feature Dependency
+# *************************************************************************
+
+ifeq ($(strip $(PRODUCTION_RELEASE)),TRUE)
+  ifdef CUSTOM_CFLAGS
+    ifneq ($(strip $(CUSTOM_CFLAGS)),)
+      $(warning ERROR: Customer projects can not define CUSTOM_CFLAGS such as --debug --no_debug_macros.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifeq ($(strip $(PRODUCTION_RELEASE)),TRUE)
+ifneq ($(filter REL_CR_%,$(strip $(RELEASE_PACKAGE))),)
+  ifdef SCC_SIB_SUPPORT
+    ifeq ($(strip $(SCC_SIB_SUPPORT)),TRUE)
+      $(warning ERROR: SCC_SIB_SUPPORT cannot be enabled in customer projects.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+endif
+
+ifeq ($(strip $(PRODUCTION_RELEASE)),TRUE)
+ifneq ($(filter REL_CR_%,$(strip $(RELEASE_PACKAGE))),)
+  ifdef FCS_SUPPORT
+    ifeq ($(strip $(FCS_SUPPORT)),TRUE)
+      $(warning ERROR: Customer projects can not define FCS_SUPPORT. Internal use only!)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+endif
+
+ifeq ($(filter REL_CR_%,$(strip $(RELEASE_PACKAGE))),)
+  ifeq ($(filter __MTK_INTERNAL_ENG_USER__,$(COM_DEFS)),)
+    $(warning ERROR: __MTK_INTERNAL_ENG_USER__ should be enabled in MTK_INTERNAL(eng/user) projects.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+else #neq REL_CR_xxx
+  ifneq ($(filter __MTK_INTERNAL_ENG_USER__,$(COM_DEFS)),)
+    $(warning ERROR: __MTK_INTERNAL_ENG_USER__ cannot be enabled in customer projects.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
diff --git a/mcu/make/common/get_makefile_var.mak b/mcu/make/common/get_makefile_var.mak
new file mode 100755
index 0000000..915b5ac
--- /dev/null
+++ b/mcu/make/common/get_makefile_var.mak
@@ -0,0 +1,48 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+MAK_VAR ?=
+INC_EXTRA_MAKEFILE_LIST ?=
+
+define IncludeExtraMakefile
+include $(strip $(1))
+endef
+$(foreach INC_EXTRA_MAKEFILE, $(INC_EXTRA_MAKEFILE_LIST), $(eval $(call IncludeExtraMakefile,$(INC_EXTRA_MAKEFILE))))
+
+get_mak_var:
+ifneq ($(MAK_VAR),)
+	@perl -e "print \"$(strip $($(MAK_VAR)))\""
+else
+	@echo "Usage: make -f ./get_makefile_var.mak -f <your_makefile> get_mak_var MAK_VAR=<var_name_in_your_makefile> <other make definition> INC_EXTRA_MAKEFILE_LIST=<include extra makefile list>"
+	@echo "Ex:    make -f ./get_makefile_var.mak -f XXX.mak get_mak_var MAK_VAR=COM_DEFS PROJECT_NAME=MT6297 FLAVOR=DEFAULT_ASIC INC_EXTRA_MAKEFILE_LIST=\"A.mak B.mak\""
+endif
\ No newline at end of file
diff --git a/mcu/make/common/modem_spec/MTK_MODEM_LWCTG.mak b/mcu/make/common/modem_spec/MTK_MODEM_LWCTG.mak
new file mode 100644
index 0000000..f0da2df
--- /dev/null
+++ b/mcu/make/common/modem_spec/MTK_MODEM_LWCTG.mak
@@ -0,0 +1,175 @@
+#
+#  Copyright Statement:
+#  ---------------------------
+#  This software/firmware and related documentation ("MediaTek Software") are
+#  protected under relevant copyright laws. The information contained herein 
+#  is confidential and proprietary to MediaTek Inc. and/or its licensors.  
+#  Without the prior written permission of MediaTek inc. and/or its licensors,
+#  any reproduction,modification, use or disclosure of MediaTek Software, and
+#  information contained herein, in whole or in part, shall be strictly prohibited.
+#   
+#  MediaTek Inc.(C)2015.All rights reserved.
+#
+#  BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
+#  AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK 
+#  SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED 
+#  TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL 
+#  WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 
+#  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 
+#  NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER 
+#  WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, 
+#  INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER 
+#  AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING 
+#  THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE 
+#  RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 
+#  CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR 
+#  ANY MEDIATEK SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO 
+#  CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND 
+#  EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT 
+#  TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,AT MEDIATEK'S OPTION, 
+#  TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,OR REFUND ANY SOFTWARE 
+#  LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK 
+#  SOFTWARE AT ISSUE. 
+#
+# *************************************************************************
+
+FIVEG_MODE_SUPPORT = NONE
+  # Description:
+  #   Specify 5G modem capability
+  # Option Values:
+  #   FIVEG_MODE: 5G is supported
+  #   NONE: 5G is not supported
+  # Switch-ability:
+  #   Non-switchable
+  
+C2K_MODE_SUPPORT = C2K_SRLTE
+  # Description:
+  #   Specify if CDMA2000 RAT is supported
+  # Option Values:
+  #   C2K_SRLTE: CDMA2000 RAT is supported, LTE SRLTE is enabled
+  #   C2K_ONLY:  CDMA2000 RAT is supported, LTE SRLTE is disabled
+  #   NONE:      CDMA2000 RAT is not supported, LTE SRLTE is disabled
+  # Switch-ability:
+  #   Non-switchable
+
+EUTRAN_MODE_SUPPORT = EUTRAN_MODE
+  # Description:
+  #   4G modem capability
+  # Option Values:
+  #   EUTRAN_MODE: Support EUTRAN mode
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+FDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   FDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support FDD-LTE
+  #   FALSE: Do NOT support FDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+GERAN_MODE_SUPPORT = GERAN_EGPRS_MODE
+  # Description:
+  #   2G modem capability
+  # Option Values:
+  #   GERAN_GSM_MODE: Support GSM only
+  #   GERAN_GPRS_MODE: Support GPRS
+  #   GERAN_EGPRS_MODE: Support EGPRS
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+L1_EGPRS = TRUE
+  # Description:
+  #   this compile option is only used for L1 Stand alone to turn on/off EDGE function
+  # Option Values:
+  #   TRUE: EGPRS enable
+  #   FALSE: EGPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_GPRS = TRUE
+  # Description:
+  #   Turn on the GPRS support of Layer 1
+  #   This is used for internal test
+  # Option Values:
+  #   TRUE: GPRS enable
+  #   FALSE: GPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_TDD128 = TRUE
+  # Description:
+  #   Modem Capability
+  # Option Values:
+  #   TRUE: L1 support TDD modem
+  #   FALSE: L1 not support TDD modem
+  # Switch-ability:
+  #   Non-switchable
+
+L1_WCDMA = TRUE
+  # Description:
+  #   Add an option to enable WCDMA L1 support
+  # Option Values:
+  #   TRUE: Support UMTS L1
+  #   FALSE: Not support UMTS L1
+  # Switch-ability:
+  #   Non-switchable
+
+TDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   TDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support TDD-LTE
+  #   Support TDD-LTE: Support TDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_FDD_SUPPORT = UMTS_FDD_MODE_SUPPORT
+  # Description:
+  #   Feature option for 3G FDD Modem Mode 
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G Modem in FDD Mode
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_MODE_SUPPORT = UMTS_FDD_TDD_SUPPORT
+  # Description:
+  #   The option is to switch the FDD or TDD mode for 3G modem
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G modem in FDD mode
+  #   UMTS_TDD128_MODE_SUPPORT: 3G modem in TDD mode
+  #   NONE: None of 3G modem mode is supported.
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_RELEASE_SUPPORT = UMTS_R11_SUPPORT
+  # Description:
+  #   The option is to switch different version of release for 3G modem
+  # Option Values:
+  #   UMTS_R6_SUPPORT: 3G modem supports Rel6
+  #   UMTS_R4_SUPPORT: 3G modem supports Rel4
+  #   UMTS_R5_SUPPORT: 3G modem supports Rel5
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_TDD_SUPPORT = UMTS_TDD128_MODE_SUPPORT
+  # Description:
+  #   3G modem in TDD mode
+  # Option Values:
+  #   UMTS_TDD128_MODE_SUPPORT: 3g modem in TDD mode
+  # Switch-ability:
+  #   Non-switchable
+
+UTRAN_MODE_SUPPORT = UTRAN_FDD_TDD_SUPPORT
+  # Description:
+  #   3G modem capability
+  # Option Values:
+  #   UTRAN_FDD_MODE: Support 3G FDD
+  #   UTRAN_TDD128_MODE: Support 3G TDD128
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
diff --git a/mcu/make/common/modem_spec/MTK_MODEM_LWG.mak b/mcu/make/common/modem_spec/MTK_MODEM_LWG.mak
new file mode 100644
index 0000000..02c3faa
--- /dev/null
+++ b/mcu/make/common/modem_spec/MTK_MODEM_LWG.mak
@@ -0,0 +1,175 @@
+#

+#  Copyright Statement:

+#  ---------------------------

+#  This software/firmware and related documentation ("MediaTek Software") are

+#  protected under relevant copyright laws. The information contained herein 

+#  is confidential and proprietary to MediaTek Inc. and/or its licensors.  

+#  Without the prior written permission of MediaTek inc. and/or its licensors,

+#  any reproduction,modification, use or disclosure of MediaTek Software, and

+#  information contained herein, in whole or in part, shall be strictly prohibited.

+#   

+#  MediaTek Inc.(C)2015.All rights reserved.

+#

+#  BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND

+#  AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK 

+#  SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED 

+#  TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL 

+#  WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 

+#  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 

+#  NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER 

+#  WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, 

+#  INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER 

+#  AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING 

+#  THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE 

+#  RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 

+#  CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR 

+#  ANY MEDIATEK SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO 

+#  CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND 

+#  EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT 

+#  TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,AT MEDIATEK'S OPTION, 

+#  TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,OR REFUND ANY SOFTWARE 

+#  LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK 

+#  SOFTWARE AT ISSUE. 

+#

+# *************************************************************************

+

+FIVEG_MODE_SUPPORT = NONE

+  # Description:

+  #   Specify 5G modem capability

+  # Option Values:

+  #   FIVEG_MODE: 5G is supported

+  #   NONE: 5G is not supported

+  # Switch-ability:

+  #   Non-switchable

+  

+C2K_MODE_SUPPORT = NONE

+  # Description:

+  #   Specify if CDMA2000 RAT is supported

+  # Option Values:

+  #   C2K_SRLTE: CDMA2000 RAT is supported, LTE SRLTE is enabled

+  #   C2K_ONLY:  CDMA2000 RAT is supported, LTE SRLTE is disabled

+  #   NONE:      CDMA2000 RAT is not supported, LTE SRLTE is disabled

+  # Switch-ability:

+  #   Non-switchable

+

+EUTRAN_MODE_SUPPORT = EUTRAN_MODE

+  # Description:

+  #   4G modem capability

+  # Option Values:

+  #   EUTRAN_MODE: Support EUTRAN mode

+  #   NONE: NONE

+  # Switch-ability:

+  #   Non-switchable

+

+FDD_LTE_SUPPORT = TRUE

+  # Description:

+  #   FDD_LTE support capability

+  # Option Values:

+  #   TRUE: Support FDD-LTE

+  #   FALSE: Do NOT support FDD-LTE

+  # Switch-ability:

+  #   Non-switchable

+

+GERAN_MODE_SUPPORT = GERAN_EGPRS_MODE

+  # Description:

+  #   2G modem capability

+  # Option Values:

+  #   GERAN_GSM_MODE: Support GSM only

+  #   GERAN_GPRS_MODE: Support GPRS

+  #   GERAN_EGPRS_MODE: Support EGPRS

+  #   NONE: NONE

+  # Switch-ability:

+  #   Non-switchable

+

+L1_EGPRS = TRUE

+  # Description:

+  #   this compile option is only used for L1 Stand alone to turn on/off EDGE function

+  # Option Values:

+  #   TRUE: EGPRS enable

+  #   FALSE: EGPRS disable

+  # Switch-ability:

+  #   Non-switchable

+

+L1_GPRS = TRUE

+  # Description:

+  #   Turn on the GPRS support of Layer 1

+  #   This is used for internal test

+  # Option Values:

+  #   TRUE: GPRS enable

+  #   FALSE: GPRS disable

+  # Switch-ability:

+  #   Non-switchable

+

+L1_TDD128 = FALSE

+  # Description:

+  #   Modem Capability

+  # Option Values:

+  #   TRUE: L1 support TDD modem

+  #   FALSE: L1 not support TDD modem

+  # Switch-ability:

+  #   Non-switchable

+

+L1_WCDMA = TRUE

+  # Description:

+  #   Add an option to enable WCDMA L1 support

+  # Option Values:

+  #   TRUE: Support UMTS L1

+  #   FALSE: Not support UMTS L1

+  # Switch-ability:

+  #   Non-switchable

+

+TDD_LTE_SUPPORT = TRUE

+  # Description:

+  #   TDD_LTE support capability

+  # Option Values:

+  #   TRUE: Support TDD-LTE

+  #   Support TDD-LTE: Support TDD-LTE

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_FDD_SUPPORT = UMTS_FDD_MODE_SUPPORT

+  # Description:

+  #   Feature option for 3G FDD Modem Mode 

+  # Option Values:

+  #   UMTS_FDD_MODE_SUPPORT: 3G Modem in FDD Mode

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_MODE_SUPPORT = UMTS_FDD_TDD_SUPPORT

+  # Description:

+  #   The option is to switch the FDD or TDD mode for 3G modem

+  # Option Values:

+  #   UMTS_FDD_MODE_SUPPORT: 3G modem in FDD mode

+  #   UMTS_TDD128_MODE_SUPPORT: 3G modem in TDD mode

+  #   NONE: None of 3G modem mode is supported.

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_RELEASE_SUPPORT = UMTS_R11_SUPPORT

+  # Description:

+  #   The option is to switch different version of release for 3G modem

+  # Option Values:

+  #   UMTS_R6_SUPPORT: 3G modem supports Rel6

+  #   UMTS_R4_SUPPORT: 3G modem supports Rel4

+  #   UMTS_R5_SUPPORT: 3G modem supports Rel5

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_TDD_SUPPORT = NONE

+  # Description:

+  #   3G modem in TDD mode

+  # Option Values:

+  #   UMTS_TDD128_MODE_SUPPORT: 3g modem in TDD mode

+  # Switch-ability:

+  #   Non-switchable

+

+UTRAN_MODE_SUPPORT = UTRAN_FDD_TDD_SUPPORT

+  # Description:

+  #   3G modem capability

+  # Option Values:

+  #   UTRAN_FDD_MODE: Support 3G FDD

+  #   UTRAN_TDD128_MODE: Support 3G TDD128

+  #   NONE: NONE

+  # Switch-ability:

+  #   Non-switchable

+

diff --git a/mcu/make/common/modem_spec/MTK_MODEM_LWTG.mak b/mcu/make/common/modem_spec/MTK_MODEM_LWTG.mak
new file mode 100644
index 0000000..c09980d
--- /dev/null
+++ b/mcu/make/common/modem_spec/MTK_MODEM_LWTG.mak
@@ -0,0 +1,175 @@
+#

+#  Copyright Statement:

+#  ---------------------------

+#  This software/firmware and related documentation ("MediaTek Software") are

+#  protected under relevant copyright laws. The information contained herein 

+#  is confidential and proprietary to MediaTek Inc. and/or its licensors.  

+#  Without the prior written permission of MediaTek inc. and/or its licensors,

+#  any reproduction,modification, use or disclosure of MediaTek Software, and

+#  information contained herein, in whole or in part, shall be strictly prohibited.

+#   

+#  MediaTek Inc.(C)2015.All rights reserved.

+#

+#  BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND

+#  AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK 

+#  SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED 

+#  TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL 

+#  WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 

+#  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 

+#  NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER 

+#  WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, 

+#  INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER 

+#  AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING 

+#  THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE 

+#  RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 

+#  CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR 

+#  ANY MEDIATEK SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO 

+#  CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND 

+#  EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT 

+#  TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,AT MEDIATEK'S OPTION, 

+#  TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,OR REFUND ANY SOFTWARE 

+#  LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK 

+#  SOFTWARE AT ISSUE. 

+#

+# *************************************************************************

+

+FIVEG_MODE_SUPPORT = NONE

+  # Description:

+  #   Specify 5G modem capability

+  # Option Values:

+  #   FIVEG_MODE: 5G is supported

+  #   NONE: 5G is not supported

+  # Switch-ability:

+  #   Non-switchable

+  

+C2K_MODE_SUPPORT = NONE

+  # Description:

+  #   Specify if CDMA2000 RAT is supported

+  # Option Values:

+  #   C2K_SRLTE: CDMA2000 RAT is supported, LTE SRLTE is enabled

+  #   C2K_ONLY:  CDMA2000 RAT is supported, LTE SRLTE is disabled

+  #   NONE:      CDMA2000 RAT is not supported, LTE SRLTE is disabled

+  # Switch-ability:

+  #   Non-switchable

+

+EUTRAN_MODE_SUPPORT = EUTRAN_MODE

+  # Description:

+  #   4G modem capability

+  # Option Values:

+  #   EUTRAN_MODE: Support EUTRAN mode

+  #   NONE: NONE

+  # Switch-ability:

+  #   Non-switchable

+

+FDD_LTE_SUPPORT = TRUE

+  # Description:

+  #   FDD_LTE support capability

+  # Option Values:

+  #   TRUE: Support FDD-LTE

+  #   FALSE: Do NOT support FDD-LTE

+  # Switch-ability:

+  #   Non-switchable

+

+GERAN_MODE_SUPPORT = GERAN_EGPRS_MODE

+  # Description:

+  #   2G modem capability

+  # Option Values:

+  #   GERAN_GSM_MODE: Support GSM only

+  #   GERAN_GPRS_MODE: Support GPRS

+  #   GERAN_EGPRS_MODE: Support EGPRS

+  #   NONE: NONE

+  # Switch-ability:

+  #   Non-switchable

+

+L1_EGPRS = TRUE

+  # Description:

+  #   this compile option is only used for L1 Stand alone to turn on/off EDGE function

+  # Option Values:

+  #   TRUE: EGPRS enable

+  #   FALSE: EGPRS disable

+  # Switch-ability:

+  #   Non-switchable

+

+L1_GPRS = TRUE

+  # Description:

+  #   Turn on the GPRS support of Layer 1

+  #   This is used for internal test

+  # Option Values:

+  #   TRUE: GPRS enable

+  #   FALSE: GPRS disable

+  # Switch-ability:

+  #   Non-switchable

+

+L1_TDD128 = TRUE

+  # Description:

+  #   Modem Capability

+  # Option Values:

+  #   TRUE: L1 support TDD modem

+  #   FALSE: L1 not support TDD modem

+  # Switch-ability:

+  #   Non-switchable

+

+L1_WCDMA = TRUE

+  # Description:

+  #   Add an option to enable WCDMA L1 support

+  # Option Values:

+  #   TRUE: Support UMTS L1

+  #   FALSE: Not support UMTS L1

+  # Switch-ability:

+  #   Non-switchable

+

+TDD_LTE_SUPPORT = TRUE

+  # Description:

+  #   TDD_LTE support capability

+  # Option Values:

+  #   TRUE: Support TDD-LTE

+  #   Support TDD-LTE: Support TDD-LTE

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_FDD_SUPPORT = UMTS_FDD_MODE_SUPPORT

+  # Description:

+  #   Feature option for 3G FDD Modem Mode 

+  # Option Values:

+  #   UMTS_FDD_MODE_SUPPORT: 3G Modem in FDD Mode

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_MODE_SUPPORT = UMTS_FDD_TDD_SUPPORT

+  # Description:

+  #   The option is to switch the FDD or TDD mode for 3G modem

+  # Option Values:

+  #   UMTS_FDD_MODE_SUPPORT: 3G modem in FDD mode

+  #   UMTS_TDD128_MODE_SUPPORT: 3G modem in TDD mode

+  #   NONE: None of 3G modem mode is supported.

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_RELEASE_SUPPORT = UMTS_R11_SUPPORT

+  # Description:

+  #   The option is to switch different version of release for 3G modem

+  # Option Values:

+  #   UMTS_R6_SUPPORT: 3G modem supports Rel6

+  #   UMTS_R4_SUPPORT: 3G modem supports Rel4

+  #   UMTS_R5_SUPPORT: 3G modem supports Rel5

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_TDD_SUPPORT = UMTS_TDD128_MODE_SUPPORT

+  # Description:

+  #   3G modem in TDD mode

+  # Option Values:

+  #   UMTS_TDD128_MODE_SUPPORT: 3g modem in TDD mode

+  # Switch-ability:

+  #   Non-switchable

+

+UTRAN_MODE_SUPPORT = UTRAN_FDD_TDD_SUPPORT

+  # Description:

+  #   3G modem capability

+  # Option Values:

+  #   UTRAN_FDD_MODE: Support 3G FDD

+  #   UTRAN_TDD128_MODE: Support 3G TDD128

+  #   NONE: NONE

+  # Switch-ability:

+  #   Non-switchable

+

diff --git a/mcu/make/common/modem_spec/MTK_MODEM_NLWCG.mak b/mcu/make/common/modem_spec/MTK_MODEM_NLWCG.mak
new file mode 100644
index 0000000..8a47564
--- /dev/null
+++ b/mcu/make/common/modem_spec/MTK_MODEM_NLWCG.mak
@@ -0,0 +1,175 @@
+#
+#  Copyright Statement:
+#  ---------------------------
+#  This software/firmware and related documentation ("MediaTek Software") are
+#  protected under relevant copyright laws. The information contained herein 
+#  is confidential and proprietary to MediaTek Inc. and/or its licensors.  
+#  Without the prior written permission of MediaTek inc. and/or its licensors,
+#  any reproduction,modification, use or disclosure of MediaTek Software, and
+#  information contained herein, in whole or in part, shall be strictly prohibited.
+#   
+#  MediaTek Inc.(C)2015.All rights reserved.
+#
+#  BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
+#  AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK 
+#  SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED 
+#  TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL 
+#  WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 
+#  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 
+#  NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER 
+#  WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, 
+#  INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER 
+#  AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING 
+#  THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE 
+#  RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 
+#  CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR 
+#  ANY MEDIATEK SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO 
+#  CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND 
+#  EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT 
+#  TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,AT MEDIATEK'S OPTION, 
+#  TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,OR REFUND ANY SOFTWARE 
+#  LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK 
+#  SOFTWARE AT ISSUE. 
+#
+# *************************************************************************
+
+FIVEG_MODE_SUPPORT = FIVEG_MODE
+  # Description:
+  #   Specify 5G modem capability
+  # Option Values:
+  #   FIVEG_MODE:	5G is supported
+  #   NONE:	5G is not supported
+  # Switch-ability:
+  #   Non-switchable
+  
+C2K_MODE_SUPPORT = C2K_SRLTE
+  # Description:
+  #   Specify if CDMA2000 RAT is supported
+  # Option Values:
+  #   C2K_SRLTE: CDMA2000 RAT is supported, LTE SRLTE is enabled
+  #   C2K_ONLY:  CDMA2000 RAT is supported, LTE SRLTE is disabled
+  #   NONE:      CDMA2000 RAT is not supported, LTE SRLTE is disabled
+  # Switch-ability:
+  #   Non-switchable
+
+EUTRAN_MODE_SUPPORT = EUTRAN_MODE
+  # Description:
+  #   4G modem capability
+  # Option Values:
+  #   EUTRAN_MODE: Support EUTRAN mode
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+FDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   FDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support FDD-LTE
+  #   FALSE: Do NOT support FDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+GERAN_MODE_SUPPORT = GERAN_EGPRS_MODE
+  # Description:
+  #   2G modem capability
+  # Option Values:
+  #   GERAN_GSM_MODE: Support GSM only
+  #   GERAN_GPRS_MODE: Support GPRS
+  #   GERAN_EGPRS_MODE: Support EGPRS
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+L1_EGPRS = TRUE
+  # Description:
+  #   this compile option is only used for L1 Stand alone to turn on/off EDGE function
+  # Option Values:
+  #   TRUE: EGPRS enable
+  #   FALSE: EGPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_GPRS = TRUE
+  # Description:
+  #   Turn on the GPRS support of Layer 1
+  #   This is used for internal test
+  # Option Values:
+  #   TRUE: GPRS enable
+  #   FALSE: GPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_TDD128 = FALSE
+  # Description:
+  #   Modem Capability
+  # Option Values:
+  #   TRUE: L1 support TDD modem
+  #   FALSE: L1 not support TDD modem
+  # Switch-ability:
+  #   Non-switchable
+
+L1_WCDMA = TRUE
+  # Description:
+  #   Add an option to enable WCDMA L1 support
+  # Option Values:
+  #   TRUE: Support UMTS L1
+  #   FALSE: Not support UMTS L1
+  # Switch-ability:
+  #   Non-switchable
+
+TDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   TDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support TDD-LTE
+  #   Support TDD-LTE: Support TDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_FDD_SUPPORT = UMTS_FDD_MODE_SUPPORT
+  # Description:
+  #   Feature option for 3G FDD Modem Mode 
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G Modem in FDD Mode
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_MODE_SUPPORT = UMTS_FDD_TDD_SUPPORT
+  # Description:
+  #   The option is to switch the FDD or TDD mode for 3G modem
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G modem in FDD mode
+  #   UMTS_TDD128_MODE_SUPPORT: 3G modem in TDD mode
+  #   NONE: None of 3G modem mode is supported.
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_RELEASE_SUPPORT = UMTS_R11_SUPPORT
+  # Description:
+  #   The option is to switch different version of release for 3G modem
+  # Option Values:
+  #   UMTS_R6_SUPPORT: 3G modem supports Rel6
+  #   UMTS_R4_SUPPORT: 3G modem supports Rel4
+  #   UMTS_R5_SUPPORT: 3G modem supports Rel5
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_TDD_SUPPORT = NONE
+  # Description:
+  #   3G modem in TDD mode
+  # Option Values:
+  #   UMTS_TDD128_MODE_SUPPORT: 3g modem in TDD mode
+  # Switch-ability:
+  #   Non-switchable
+
+UTRAN_MODE_SUPPORT = UTRAN_FDD_TDD_SUPPORT
+  # Description:
+  #   3G modem capability
+  # Option Values:
+  #   UTRAN_FDD_MODE: Support 3G FDD
+  #   UTRAN_TDD128_MODE: Support 3G TDD128
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
diff --git a/mcu/make/common/modem_spec/MTK_MODEM_NLWCTG.mak b/mcu/make/common/modem_spec/MTK_MODEM_NLWCTG.mak
new file mode 100644
index 0000000..4bdd30c
--- /dev/null
+++ b/mcu/make/common/modem_spec/MTK_MODEM_NLWCTG.mak
@@ -0,0 +1,175 @@
+#
+#  Copyright Statement:
+#  ---------------------------
+#  This software/firmware and related documentation ("MediaTek Software") are
+#  protected under relevant copyright laws. The information contained herein 
+#  is confidential and proprietary to MediaTek Inc. and/or its licensors.  
+#  Without the prior written permission of MediaTek inc. and/or its licensors,
+#  any reproduction,modification, use or disclosure of MediaTek Software, and
+#  information contained herein, in whole or in part, shall be strictly prohibited.
+#   
+#  MediaTek Inc.(C)2015.All rights reserved.
+#
+#  BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
+#  AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK 
+#  SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED 
+#  TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL 
+#  WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 
+#  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 
+#  NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER 
+#  WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, 
+#  INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER 
+#  AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING 
+#  THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE 
+#  RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 
+#  CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR 
+#  ANY MEDIATEK SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO 
+#  CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND 
+#  EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT 
+#  TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,AT MEDIATEK'S OPTION, 
+#  TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,OR REFUND ANY SOFTWARE 
+#  LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK 
+#  SOFTWARE AT ISSUE. 
+#
+# *************************************************************************
+
+FIVEG_MODE_SUPPORT = FIVEG_MODE
+  # Description:
+  #   Specify 5G modem capability
+  # Option Values:
+  #   FIVEG_MODE:	5G is supported
+  #   NONE:	5G is not supported
+  # Switch-ability:
+  #   Non-switchable
+  
+C2K_MODE_SUPPORT = C2K_SRLTE
+  # Description:
+  #   Specify if CDMA2000 RAT is supported
+  # Option Values:
+  #   C2K_SRLTE: CDMA2000 RAT is supported, LTE SRLTE is enabled
+  #   C2K_ONLY:  CDMA2000 RAT is supported, LTE SRLTE is disabled
+  #   NONE:      CDMA2000 RAT is not supported, LTE SRLTE is disabled
+  # Switch-ability:
+  #   Non-switchable
+
+EUTRAN_MODE_SUPPORT = EUTRAN_MODE
+  # Description:
+  #   4G modem capability
+  # Option Values:
+  #   EUTRAN_MODE: Support EUTRAN mode
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+FDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   FDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support FDD-LTE
+  #   FALSE: Do NOT support FDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+GERAN_MODE_SUPPORT = GERAN_EGPRS_MODE
+  # Description:
+  #   2G modem capability
+  # Option Values:
+  #   GERAN_GSM_MODE: Support GSM only
+  #   GERAN_GPRS_MODE: Support GPRS
+  #   GERAN_EGPRS_MODE: Support EGPRS
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+L1_EGPRS = TRUE
+  # Description:
+  #   this compile option is only used for L1 Stand alone to turn on/off EDGE function
+  # Option Values:
+  #   TRUE: EGPRS enable
+  #   FALSE: EGPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_GPRS = TRUE
+  # Description:
+  #   Turn on the GPRS support of Layer 1
+  #   This is used for internal test
+  # Option Values:
+  #   TRUE: GPRS enable
+  #   FALSE: GPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_TDD128 = TRUE
+  # Description:
+  #   Modem Capability
+  # Option Values:
+  #   TRUE: L1 support TDD modem
+  #   FALSE: L1 not support TDD modem
+  # Switch-ability:
+  #   Non-switchable
+
+L1_WCDMA = TRUE
+  # Description:
+  #   Add an option to enable WCDMA L1 support
+  # Option Values:
+  #   TRUE: Support UMTS L1
+  #   FALSE: Not support UMTS L1
+  # Switch-ability:
+  #   Non-switchable
+
+TDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   TDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support TDD-LTE
+  #   Support TDD-LTE: Support TDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_FDD_SUPPORT = UMTS_FDD_MODE_SUPPORT
+  # Description:
+  #   Feature option for 3G FDD Modem Mode 
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G Modem in FDD Mode
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_MODE_SUPPORT = UMTS_FDD_TDD_SUPPORT
+  # Description:
+  #   The option is to switch the FDD or TDD mode for 3G modem
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G modem in FDD mode
+  #   UMTS_TDD128_MODE_SUPPORT: 3G modem in TDD mode
+  #   NONE: None of 3G modem mode is supported.
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_RELEASE_SUPPORT = UMTS_R11_SUPPORT
+  # Description:
+  #   The option is to switch different version of release for 3G modem
+  # Option Values:
+  #   UMTS_R6_SUPPORT: 3G modem supports Rel6
+  #   UMTS_R4_SUPPORT: 3G modem supports Rel4
+  #   UMTS_R5_SUPPORT: 3G modem supports Rel5
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_TDD_SUPPORT = UMTS_TDD128_MODE_SUPPORT
+  # Description:
+  #   3G modem in TDD mode
+  # Option Values:
+  #   UMTS_TDD128_MODE_SUPPORT: 3g modem in TDD mode
+  # Switch-ability:
+  #   Non-switchable
+
+UTRAN_MODE_SUPPORT = UTRAN_FDD_TDD_SUPPORT
+  # Description:
+  #   3G modem capability
+  # Option Values:
+  #   UTRAN_FDD_MODE: Support 3G FDD
+  #   UTRAN_TDD128_MODE: Support 3G TDD128
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
diff --git a/mcu/make/common/modem_spec/MTK_MODEM_NLWG.mak b/mcu/make/common/modem_spec/MTK_MODEM_NLWG.mak
new file mode 100755
index 0000000..09fb2e8
--- /dev/null
+++ b/mcu/make/common/modem_spec/MTK_MODEM_NLWG.mak
@@ -0,0 +1,175 @@
+#
+#  Copyright Statement:
+#  ---------------------------
+#  This software/firmware and related documentation ("MediaTek Software") are
+#  protected under relevant copyright laws. The information contained herein 
+#  is confidential and proprietary to MediaTek Inc. and/or its licensors.  
+#  Without the prior written permission of MediaTek inc. and/or its licensors,
+#  any reproduction,modification, use or disclosure of MediaTek Software, and
+#  information contained herein, in whole or in part, shall be strictly prohibited.
+#   
+#  MediaTek Inc.(C)2015.All rights reserved.
+#
+#  BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
+#  AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK 
+#  SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED 
+#  TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL 
+#  WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 
+#  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 
+#  NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER 
+#  WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, 
+#  INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER 
+#  AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING 
+#  THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE 
+#  RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 
+#  CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR 
+#  ANY MEDIATEK SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO 
+#  CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND 
+#  EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT 
+#  TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,AT MEDIATEK'S OPTION, 
+#  TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,OR REFUND ANY SOFTWARE 
+#  LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK 
+#  SOFTWARE AT ISSUE. 
+#
+# *************************************************************************
+
+FIVEG_MODE_SUPPORT = FIVEG_MODE
+  # Description:
+  #   Specify 5G modem capability
+  # Option Values:
+  #   FIVEG_MODE:	5G is supported
+  #   NONE:	5G is not supported
+  # Switch-ability:
+  #   Non-switchable
+  
+C2K_MODE_SUPPORT = NONE
+  # Description:
+  #   Specify if CDMA2000 RAT is supported
+  # Option Values:
+  #   C2K_SRLTE: CDMA2000 RAT is supported, LTE SRLTE is enabled
+  #   C2K_ONLY:  CDMA2000 RAT is supported, LTE SRLTE is disabled
+  #   NONE:      CDMA2000 RAT is not supported, LTE SRLTE is disabled
+  # Switch-ability:
+  #   Non-switchable
+
+EUTRAN_MODE_SUPPORT = EUTRAN_MODE
+  # Description:
+  #   4G modem capability
+  # Option Values:
+  #   EUTRAN_MODE: Support EUTRAN mode
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+FDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   FDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support FDD-LTE
+  #   FALSE: Do NOT support FDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+GERAN_MODE_SUPPORT = GERAN_EGPRS_MODE
+  # Description:
+  #   2G modem capability
+  # Option Values:
+  #   GERAN_GSM_MODE: Support GSM only
+  #   GERAN_GPRS_MODE: Support GPRS
+  #   GERAN_EGPRS_MODE: Support EGPRS
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+L1_EGPRS = TRUE
+  # Description:
+  #   this compile option is only used for L1 Stand alone to turn on/off EDGE function
+  # Option Values:
+  #   TRUE: EGPRS enable
+  #   FALSE: EGPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_GPRS = TRUE
+  # Description:
+  #   Turn on the GPRS support of Layer 1
+  #   This is used for internal test
+  # Option Values:
+  #   TRUE: GPRS enable
+  #   FALSE: GPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_TDD128 = FALSE
+  # Description:
+  #   Modem Capability
+  # Option Values:
+  #   TRUE: L1 support TDD modem
+  #   FALSE: L1 not support TDD modem
+  # Switch-ability:
+  #   Non-switchable
+
+L1_WCDMA = TRUE
+  # Description:
+  #   Add an option to enable WCDMA L1 support
+  # Option Values:
+  #   TRUE: Support UMTS L1
+  #   FALSE: Not support UMTS L1
+  # Switch-ability:
+  #   Non-switchable
+
+TDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   TDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support TDD-LTE
+  #   Support TDD-LTE: Support TDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_FDD_SUPPORT = UMTS_FDD_MODE_SUPPORT
+  # Description:
+  #   Feature option for 3G FDD Modem Mode 
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G Modem in FDD Mode
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_MODE_SUPPORT = UMTS_FDD_TDD_SUPPORT
+  # Description:
+  #   The option is to switch the FDD or TDD mode for 3G modem
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G modem in FDD mode
+  #   UMTS_TDD128_MODE_SUPPORT: 3G modem in TDD mode
+  #   NONE: None of 3G modem mode is supported.
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_RELEASE_SUPPORT = UMTS_R11_SUPPORT
+  # Description:
+  #   The option is to switch different version of release for 3G modem
+  # Option Values:
+  #   UMTS_R6_SUPPORT: 3G modem supports Rel6
+  #   UMTS_R4_SUPPORT: 3G modem supports Rel4
+  #   UMTS_R5_SUPPORT: 3G modem supports Rel5
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_TDD_SUPPORT = NONE
+  # Description:
+  #   3G modem in TDD mode
+  # Option Values:
+  #   UMTS_TDD128_MODE_SUPPORT: 3g modem in TDD mode
+  # Switch-ability:
+  #   Non-switchable
+
+UTRAN_MODE_SUPPORT = UTRAN_FDD_TDD_SUPPORT
+  # Description:
+  #   3G modem capability
+  # Option Values:
+  #   UTRAN_FDD_MODE: Support 3G FDD
+  #   UTRAN_TDD128_MODE: Support 3G TDD128
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
diff --git a/mcu/make/common/modem_spec/MTK_MODEM_NLWTG.mak b/mcu/make/common/modem_spec/MTK_MODEM_NLWTG.mak
new file mode 100644
index 0000000..cc883e9
--- /dev/null
+++ b/mcu/make/common/modem_spec/MTK_MODEM_NLWTG.mak
@@ -0,0 +1,175 @@
+#
+#  Copyright Statement:
+#  ---------------------------
+#  This software/firmware and related documentation ("MediaTek Software") are
+#  protected under relevant copyright laws. The information contained herein 
+#  is confidential and proprietary to MediaTek Inc. and/or its licensors.  
+#  Without the prior written permission of MediaTek inc. and/or its licensors,
+#  any reproduction,modification, use or disclosure of MediaTek Software, and
+#  information contained herein, in whole or in part, shall be strictly prohibited.
+#   
+#  MediaTek Inc.(C)2015.All rights reserved.
+#
+#  BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
+#  AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK 
+#  SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED 
+#  TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL 
+#  WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 
+#  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 
+#  NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER 
+#  WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, 
+#  INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER 
+#  AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING 
+#  THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE 
+#  RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 
+#  CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR 
+#  ANY MEDIATEK SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO 
+#  CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND 
+#  EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT 
+#  TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,AT MEDIATEK'S OPTION, 
+#  TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,OR REFUND ANY SOFTWARE 
+#  LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK 
+#  SOFTWARE AT ISSUE. 
+#
+# *************************************************************************
+
+FIVEG_MODE_SUPPORT = FIVEG_MODE
+  # Description:
+  #   Specify 5G modem capability
+  # Option Values:
+  #   FIVEG_MODE:	5G is supported
+  #   NONE:	5G is not supported
+  # Switch-ability:
+  #   Non-switchable
+  
+C2K_MODE_SUPPORT = NONE
+  # Description:
+  #   Specify if CDMA2000 RAT is supported
+  # Option Values:
+  #   C2K_SRLTE: CDMA2000 RAT is supported, LTE SRLTE is enabled
+  #   C2K_ONLY:  CDMA2000 RAT is supported, LTE SRLTE is disabled
+  #   NONE:      CDMA2000 RAT is not supported, LTE SRLTE is disabled
+  # Switch-ability:
+  #   Non-switchable
+
+EUTRAN_MODE_SUPPORT = EUTRAN_MODE
+  # Description:
+  #   4G modem capability
+  # Option Values:
+  #   EUTRAN_MODE: Support EUTRAN mode
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+FDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   FDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support FDD-LTE
+  #   FALSE: Do NOT support FDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+GERAN_MODE_SUPPORT = GERAN_EGPRS_MODE
+  # Description:
+  #   2G modem capability
+  # Option Values:
+  #   GERAN_GSM_MODE: Support GSM only
+  #   GERAN_GPRS_MODE: Support GPRS
+  #   GERAN_EGPRS_MODE: Support EGPRS
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
+L1_EGPRS = TRUE
+  # Description:
+  #   this compile option is only used for L1 Stand alone to turn on/off EDGE function
+  # Option Values:
+  #   TRUE: EGPRS enable
+  #   FALSE: EGPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_GPRS = TRUE
+  # Description:
+  #   Turn on the GPRS support of Layer 1
+  #   This is used for internal test
+  # Option Values:
+  #   TRUE: GPRS enable
+  #   FALSE: GPRS disable
+  # Switch-ability:
+  #   Non-switchable
+
+L1_TDD128 = TRUE
+  # Description:
+  #   Modem Capability
+  # Option Values:
+  #   TRUE: L1 support TDD modem
+  #   FALSE: L1 not support TDD modem
+  # Switch-ability:
+  #   Non-switchable
+
+L1_WCDMA = TRUE
+  # Description:
+  #   Add an option to enable WCDMA L1 support
+  # Option Values:
+  #   TRUE: Support UMTS L1
+  #   FALSE: Not support UMTS L1
+  # Switch-ability:
+  #   Non-switchable
+
+TDD_LTE_SUPPORT = TRUE
+  # Description:
+  #   TDD_LTE support capability
+  # Option Values:
+  #   TRUE: Support TDD-LTE
+  #   Support TDD-LTE: Support TDD-LTE
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_FDD_SUPPORT = UMTS_FDD_MODE_SUPPORT
+  # Description:
+  #   Feature option for 3G FDD Modem Mode 
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G Modem in FDD Mode
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_MODE_SUPPORT = UMTS_FDD_TDD_SUPPORT
+  # Description:
+  #   The option is to switch the FDD or TDD mode for 3G modem
+  # Option Values:
+  #   UMTS_FDD_MODE_SUPPORT: 3G modem in FDD mode
+  #   UMTS_TDD128_MODE_SUPPORT: 3G modem in TDD mode
+  #   NONE: None of 3G modem mode is supported.
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_RELEASE_SUPPORT = UMTS_R11_SUPPORT
+  # Description:
+  #   The option is to switch different version of release for 3G modem
+  # Option Values:
+  #   UMTS_R6_SUPPORT: 3G modem supports Rel6
+  #   UMTS_R4_SUPPORT: 3G modem supports Rel4
+  #   UMTS_R5_SUPPORT: 3G modem supports Rel5
+  # Switch-ability:
+  #   Non-switchable
+
+UMTS_TDD_SUPPORT = UMTS_TDD128_MODE_SUPPORT
+  # Description:
+  #   3G modem in TDD mode
+  # Option Values:
+  #   UMTS_TDD128_MODE_SUPPORT: 3g modem in TDD mode
+  # Switch-ability:
+  #   Non-switchable
+
+UTRAN_MODE_SUPPORT = UTRAN_FDD_TDD_SUPPORT
+  # Description:
+  #   3G modem capability
+  # Option Values:
+  #   UTRAN_FDD_MODE: Support 3G FDD
+  #   UTRAN_TDD128_MODE: Support 3G TDD128
+  #   NONE: NONE
+  # Switch-ability:
+  #   Non-switchable
+
diff --git a/mcu/make/common/modem_spec/MTK_MODEM_NONE.mak b/mcu/make/common/modem_spec/MTK_MODEM_NONE.mak
new file mode 100644
index 0000000..18ceaa3
--- /dev/null
+++ b/mcu/make/common/modem_spec/MTK_MODEM_NONE.mak
@@ -0,0 +1,167 @@
+#

+#  Copyright Statement:

+#  ---------------------------

+#  This software/firmware and related documentation ("MediaTek Software") are

+#  protected under relevant copyright laws. The information contained herein 

+#  is confidential and proprietary to MediaTek Inc. and/or its licensors.  

+#  Without the prior written permission of MediaTek inc. and/or its licensors,

+#  any reproduction,modification, use or disclosure of MediaTek Software, and

+#  information contained herein, in whole or in part, shall be strictly prohibited.

+#   

+#  MediaTek Inc.(C)2015.All rights reserved.

+#

+#  BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND

+#  AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK 

+#  SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED 

+#  TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL 

+#  WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 

+#  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 

+#  NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER 

+#  WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, 

+#  INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER 

+#  AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING 

+#  THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE 

+#  RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 

+#  CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR 

+#  ANY MEDIATEK SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO 

+#  CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND 

+#  EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT 

+#  TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,AT MEDIATEK'S OPTION, 

+#  TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,OR REFUND ANY SOFTWARE 

+#  LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK 

+#  SOFTWARE AT ISSUE. 

+#

+# *************************************************************************

+

+FIVEG_MODE_SUPPORT = NONE

+  # Description:

+  #   Specify 5G modem capability

+  # Option Values:

+  #   FIVEG_MODE: 5G is supported

+  #   NONE: 5G is not supported

+  # Switch-ability:

+  #   Non-switchable

+  

+C2K_MODE_SUPPORT = NONE

+  # Description:

+  #   Specify if CDMA2000 RAT is supported

+  # Option Values:

+  #   C2K_SRLTE: CDMA2000 RAT is supported, LTE SRLTE is enabled

+  #   C2K_ONLY:  CDMA2000 RAT is supported, LTE SRLTE is disabled

+  #   NONE:      CDMA2000 RAT is not supported, LTE SRLTE is disabled

+  # Switch-ability:

+  #   Non-switchable

+

+EUTRAN_MODE_SUPPORT = NONE

+  # Description:

+  #   4G modem capability

+  # Option Values:

+  #   EUTRAN_MODE: Support EUTRAN mode

+  #   NONE: NONE

+  # Switch-ability:

+  #   Non-switchable

+

+FDD_LTE_SUPPORT = FALSE

+  # Description:

+  #   FDD_LTE support capability

+  # Option Values:

+  #   TRUE: Support FDD-LTE

+  #   FALSE: Do NOT support FDD-LTE

+  # Switch-ability:

+  #   Non-switchable

+

+GERAN_MODE_SUPPORT = NONE

+  # Description:

+  #   2G modem capability

+  # Option Values:

+  #   GERAN_GSM_MODE: Support GSM only

+  #   GERAN_GPRS_MODE: Support GPRS

+  #   GERAN_EGPRS_MODE: Support EGPRS

+  #   NONE: NONE

+  # Switch-ability:

+  #   Non-switchable

+

+L1_EGPRS = FALSE

+  # Description:

+  #   this compile option is only used for L1 Stand alone to turn on/off EDGE function

+  # Option Values:

+  #   TRUE: EGPRS enable

+  #   FALSE: EGPRS disable

+  # Switch-ability:

+  #   Non-switchable

+

+L1_GPRS = TRUE

+  # Description:

+  #   Turn on the GPRS support of Layer 1

+  #   This is used for internal test

+  # Option Values:

+  #   TRUE: GPRS enable

+  #   FALSE: GPRS disable

+  # Switch-ability:

+  #   Non-switchable

+

+L1_TDD128 = FALSE

+  # Description:

+  #   Modem Capability

+  # Option Values:

+  #   TRUE: L1 support TDD modem

+  #   FALSE: L1 not support TDD modem

+  # Switch-ability:

+  #   Non-switchable

+

+L1_WCDMA = FALSE

+  # Description:

+  #   Add an option to enable WCDMA L1 support

+  # Option Values:

+  #   TRUE: Support UMTS L1

+  #   FALSE: Not support UMTS L1

+  # Switch-ability:

+  #   Non-switchable

+

+TDD_LTE_SUPPORT = FALSE

+  # Description:

+  #   TDD_LTE support capability

+  # Option Values:

+  #   TRUE: Support TDD-LTE

+  #   Support TDD-LTE: Support TDD-LTE

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_MODE_SUPPORT = NONE

+  # Description:

+  #   The option is to switch the FDD or TDD mode for 3G modem

+  # Option Values:

+  #   UMTS_FDD_MODE_SUPPORT: 3G modem in FDD mode

+  #   UMTS_TDD128_MODE_SUPPORT: 3G modem in TDD mode

+  #   NONE: None of 3G modem mode is supported.

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_RELEASE_SUPPORT = FALSE

+  # Description:

+  #   The option is to switch different version of release for 3G modem

+  # Option Values:

+  #   UMTS_R6_SUPPORT: 3G modem supports Rel6

+  #   UMTS_R4_SUPPORT: 3G modem supports Rel4

+  #   UMTS_R5_SUPPORT: 3G modem supports Rel5

+  # Switch-ability:

+  #   Non-switchable

+

+UMTS_TDD_SUPPORT = NONE

+  # Description:

+  #   3G modem in TDD mode

+  # Option Values:

+  #   UMTS_TDD128_MODE_SUPPORT: 3g modem in TDD mode

+  # Switch-ability:

+  #   Non-switchable

+

+UTRAN_MODE_SUPPORT = NONE

+  # Description:

+  #   3G modem capability

+  # Option Values:

+  #   UTRAN_FDD_MODE: Support 3G FDD

+  #   UTRAN_TDD128_MODE: Support 3G TDD128

+  #   NONE: NONE

+  # Switch-ability:

+  #   Non-switchable

+

diff --git a/mcu/make/common/old_features.mak b/mcu/make/common/old_features.mak
new file mode 100644
index 0000000..97d1925
--- /dev/null
+++ b/mcu/make/common/old_features.mak
@@ -0,0 +1,6 @@
+#################################################################
+# Use this file to keep removed or renamed features' reminders
+# Use this file to keep value-changed features' reminders
+#################################################################
+
+# Removed feature
\ No newline at end of file
diff --git a/mcu/make/common/option.mak b/mcu/make/common/option.mak
new file mode 100644
index 0000000..f1d8a39
--- /dev/null
+++ b/mcu/make/common/option.mak
@@ -0,0 +1,792 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+# *************************************************************************
+# Include GNU Make Standard Library (GMSL)
+# *************************************************************************
+include ./tools/GMSL/gmsl
+Upper = $(subst z,Z,$(subst y,Y,$(subst x,X,$(subst w,W,$(subst v,V,$(subst u,U,$(subst t,T,$(subst s,S,$(subst r,R,$(subst q,Q,$(subst p,P,$(subst o,O,$(subst n,N,$(subst m,M,$(subst l,L,$(subst k,K,$(subst j,J,$(subst i,I,$(subst h,H,$(subst g,G,$(subst f,F,$(subst e,E,$(subst d,D,$(subst c,C,$(subst b,B,$(subst a,A,$(1)))))))))))))))))))))))))))
+
+
+CUSTOM_FLD_MAPPING = $(if $($(subst /,_,$(patsubst %/,%,$(subst //,/,$(subst \,/,$(call lc, $(1))))))), \
+                     $($(subst /,_,$(patsubst %/,%,$(subst //,/,$(subst \,/,$(call lc, $(1))))))),\
+                     $(if $(wildcard $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/$(strip $(CUSTOM_FLAVOR))),\
+                     $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/$(strip $(CUSTOM_FLAVOR)),\
+                     $(if $(wildcard $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/DEFAULT), \
+                     $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/DEFAULT,)))
+
+                      
+AUTO_MERGE_FILE_CHECK = $(if $(shell $(LIST_DIR) "$(call CUSTOM_FLD_MAPPING,$(1))/$(2)"  2>$(DEV_NUL)), $(call CUSTOM_FLD_MAPPING,$(1))/$(2), \
+                        $(if $(shell $(LIST_DIR) "$(1)/_Default_BB/$(strip $(PLATFORM))/$(2)"  2>$(DEV_NUL)), $(1)/_Default_BB/$(strip $(PLATFORM))/$(2),))
+# *************************************************************************
+# Set defaul value to Ckmake flag
+# *************************************************************************
+DEPENDENCY_CONFLICT = FALSE
+# *************************************************************************
+# Dependency Check error message Interfaces
+# *************************************************************************
+# ------------------------------------------------------------------------
+# Usage:        $(call DEP_ERR_SETA_OR_SETB,OptA,ValA,OptB,ValB)
+#               $(call DEP_ERR_SETA_OR_SETB,OptA,ValA,OptB,ValB1/ValB2/.../ValBn)
+#               $(call DEP_ERR_SETA_OR_SETB,OptA,ValA,OptB,non ValB)
+# Output:       PLEASE set OptA as ValA or set OptB as ValB
+#               PLEASE set OptA as ValA or set OptB as ValB1/ValB2/.../ValBn
+#               PLEASE set OptA as ValA or set OptB as non ValB
+#
+# Example:      $(call DEP_ERR_SETA_OR_SETB,BROWSER_SUPPORT,OBIGO_Q05A,UNIFIED_MESSAGE_MARK_SEVERAL_SUPPORT,non OBIGO_Q05A)
+#               PLEASE set BROWSER_SUPPORT as OBIGO_Q05A or set UNIFIED_MESSAGE_MARK_SEVERAL_SUPPORT as non OBIGO_Q05A
+# ------------------------------------------------------------------------
+DEP_ERR_SETA_OR_SETB = $(warning ERROR: PLEASE set $1 as $2 or set $3 as $4)
+# ------------------------------------------------------------------------
+# Usage:        $(call DEP_ERR_ONA_OR_OFFB,OptA,OptB)
+#               $(call DEP_ERR_ONA_OR_OFFB,OptA,OptB$OptC&...&OptN)
+# Output:       PLEASE turn on OptA or turn off OptB
+#
+# Example:      $(call DEP_ERR_ONA_OR_OFFB,NAND_SUPPORT,NAND_FLASH_BOOTING)
+#               PLEASE turn on NAND_SUPPORT or turn off NAND_FLASH_BOOTING
+# ------------------------------------------------------------------------
+DEP_ERR_ONA_OR_OFFB = $(warning ERROR: PLEASE turn on $1 or turn off $2)
+# ------------------------------------------------------------------------
+# Usage:        $(call DEP_ERR_SETA_OR_OFFB,OptA,ValA,OptB)
+#               $(call DEP_ERR_SETA_OR_OFFB,OptA,ValA1/ValA2/.../ValAn,OptB)
+#               $(call DEP_ERR_SETA_OR_OFFB,OptA,non ValA,OptB)
+# Output:       PLEASE set OptA as ValA or turn off OptB
+#               PLEASE set OptA as ValA1/ValA2/.../ValAn or turn off OptB
+#               PLEASE set OptA as non ValA or turn off OptB
+#
+# Example:      $(call DEP_ERR_SETA_OR_OFFB,MELODY_VER,DSP_WT_SYN,J2ME_SUPPORT)
+#               PLEASE set MELODY_VER as DSP_WT_SYN or turn off J2ME_SUPPORT
+# ------------------------------------------------------------------------
+DEP_ERR_SETA_OR_OFFB = $(warning ERROR: PLEASE set $1 as $2 or turn off $3)
+# ------------------------------------------------------------------------
+# Usage:        $(call DEP_ERR_SETA_OR_ONB,OptA,ValA,OptB)
+#               $(call DEP_ERR_SETA_OR_ONB,OptA,ValA1/ValA2/.../ValAn,OptB)
+#               $(call DEP_ERR_SETA_OR_ONB,OptA,non ValA,OptB)
+# Output:       PLEASE set OptA as ValA or turn on OptB
+#               PLEASE set OptA as ValA1/ValA2/.../ValAn or turn on OptB
+#               PLEASE set OptA as non ValA or turn on OptB
+#
+# Example:      $(call DEP_ERR_SETA_OR_ONB,MMS_SUPPORT,non OBIGO_Q05A,UNIFIED_MESSAGE_FOLDER)
+#               PLEASE set MMS_SUPPORT as non OBIGO_Q05A or turn on UNIFIED_MESSAGE_FOLDER
+# ------------------------------------------------------------------------
+DEP_ERR_SETA_OR_ONB = $(warning ERROR: PLEASE set $1 as $2 or turn on $3)
+# ------------------------------------------------------------------------
+# Usage:        $(call DEP_ERR_OFFA_OR_OFFB,OptA,OptB)
+# Output:       PLEASE turn off OptA or turn off OptB
+#
+# Example:      $(call DEP_ERR_OFFA_OR_OFFB,CMUX_SUPPORT,BLUETOOTH_SUPPORT)
+#               PLEASE turn off CMUX_SUPPORT or turn off BLUETOOTH_SUPPORT
+# ------------------------------------------------------------------------
+DEP_ERR_OFFA_OR_OFFB = $(warning ERROR: PLEASE turn off $1 or turn off $2)
+# ------------------------------------------------------------------------
+# Usage:        $(call DEP_ERR_ONA_OR_ONB,OptA,OptB)
+# Output:       PLEASE turn on OptA or turn on OptB
+#
+# Example:      $(call DEP_ERR_ONA_OR_ONB,UCM_SUPPORT,VOIP_SUPPORT)
+#               PLEASE turn on UCM_SUPPORT or turn on VOIP_SUPPORT
+# ------------------------------------------------------------------------
+DEP_ERR_ONA_OR_ONB = $(warning ERROR: PLEASE turn on $1 or turn on $2)
+# *************************************************************************
+# Set defaul value to eliminate "option not define" warning
+# *************************************************************************
+BM_NEW      = FALSE
+COMPOBJS =
+
+SUPPORT_PLATFORM = TK6291 ELBRUS MT6763 MT6295M MT6739 MT6771 MT3967 MT6779 MT6297 MT6885 MERCURY MT6873 MT6853 MT6893 MT6833  MT6880 MT6890 MT6877 MT2735
+
+ifndef PROJECT_NAME
+$(error PROJECT_NAME is not defined)
+endif
+ifndef PROJECT_MAKEFILE
+$(error PROJECT_MAKEFILE is not defined)
+endif
+ifndef FLAVOR
+$(error FLAVOR is not defined)
+endif
+
+# *************************************************************************
+# Include temporary build script
+# *************************************************************************
+
+# default cmd setting
+include make/common/cmd_cfg.mak
+
+-include make/common/Verno.bld
+ifneq ($(wildcard make/common/Verno.bld),)
+ifdef VERNO
+MTK_INTERNAL_VERNO := $(strip $(VERNO))
+endif
+endif
+
+HW_VER := $(call Upper,$(strip $(PROJECT_NAME)))_HW
+
+
+include $(PROJECT_MAKEFILE)
+include make/common/buildconfig.mak
+-include make/common/build_warning_def.mak
+-include $(strip $(TMPDIR))/~buildinfo.tmp
+-include $(strip $(TMPDIR))/~net_path.tmp
+-include $(strip $(TMPDIR))/cus_folder.tmp
+include $(strip $(MAKE_COMMON))/compiler.mak
+
+VERNO := $(call Upper,$(strip $(VERNO)))
+
+ifndef CUSTOM_FLAVOR
+$(error CUSTOM_FLAVOR is not defined)
+endif
+
+
+# *************************************************************************
+# Determine to build in which domain
+# *************************************************************************
+# Default MPD 5G release
+MPD_SOURCE_FULL_BUILD = FALSE
+ifneq ($(wildcard make/common/rel/mpd/5g),)
+  MPD_SOURCE_FULL_BUILD = TRUE
+endif
+
+# Default MPD 4G release
+MPD_SOURCE_4G_BUILD = FALSE
+ifneq ($(wildcard make/common/rel/mpd/4g),)
+  MPD_SOURCE_4G_BUILD = TRUE
+endif
+
+# Default SWRD release
+MTK_SW_DOMAIN = FALSE
+ifneq ($(wildcard make/common/rel/hq/USR.txt),)
+  ifeq ($(wildcard make/common/rel/mpd),)
+    MTK_SW_DOMAIN = TRUE
+  endif
+endif
+
+# Default custom release
+ifndef CUSTOM_RELEASE
+  CUSTOM_RELEASE = FALSE
+endif
+
+# *************************************************************************
+# Common definitions
+# *************************************************************************
+
+COMMINCDIRS    += $(CUSTOM_COMMINC)
+COM_DEFS       += $(CUSTOM_OPTION)
+
+NEED_BUILD_BOOTLOADER = FALSE
+
+# MD OFFLOAD COPRO Setting
+MD_COPRO_CONFIG := FALSE
+FORCE_GEN       := FALSE
+
+# always off
+DHL_MALMO_SUPPORT  = FALSE
+CSD_SUPPORT        = NONE
+FEATURE_OVERLOAD   = FALSE
+HIF_SDIO_SUPPORT   = FALSE
+MDSYS              = NONE
+NVRAM_PSEUDO_MERGE = OFF
+OP01_2G_ONLY       = FALSE
+
+# always on
+AEC_ENABLE = TRUE
+DRV_DEBUG_MEMORY_TRACE_SUPPORT = TRUE
+
+COM_DEFS += __HW_PFC_SUPPORT__
+COM_DEFS += __USB_COMPORT_SUPPORT_MTK_DRIVER__
+COM_DEFS += __DISABLE_A5_2__
+COM_DEFS += PMIC_INIT_PHONE_ON_EVB
+COM_DEFS += __IPV6__ __IPV4V6__
+COM_DEFS += __VAMOS_1__ __VAMOS_2__
+COM_DEFS += __R99__
+COM_DEFS += __CENTRALIZED_SLEEP_MANAGER__
+COM_DEFS += __L1_GPS_CO_CLOCK_SUPPORT__
+COM_DEFS += __L1_LOCK_AFCDAC_AT_STARTUP_SUPPORT__
+COM_DEFS += __L1_CRYSTAL_ON_PMIC_SUPPORT__
+COM_DEFS += __MMRF_BSIBPIRS_DYNAMIC_ALLOCATION_SUPPORT__
+COM_DEFS += __CGLA__ __UICC_CHANNEL_SUPPORT__
+COM_DEFS += __SIM_RECOVERY_ENHANCEMENT__
+COM_DEFS += __USIM_SUPPORT__ __EF_NETPAR_SUPPORT__ __PHB_USIM_SUPPORT__
+COM_DEFS += __SLIM_MODEM_EM_MODE__ __MODEM_EM_MODE__
+ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+  COM_DEFS += __TAS_SUPPORT__
+endif
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  COM_DEFS += __3G_NEW_DATA_PLANE_ARCH__ __RATDM_UL_SHAQ__ __RATDM_SHAQ_HAS_PRIORITY_QUEUE__ __CSHSPA_SUPPORT__
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+    COM_DEFS += __UMTS_TDD128_BAND_A__
+    COM_DEFS += __UMTS_TDD128_BAND_F__
+  endif
+  COM_DEFS += __UL2_HSPA_PLUS_RX_COPRO__
+  COM_DEFS += __UL2_HSPA_PLUS_TX_COPRO__
+  COM_DEFS += __AOC_SUPPORT__
+  COM_DEFS += __ECC_RETRY_ENHANCEMENT__
+  COM_DEFS += __REL4__ __GERAN_R4__
+  COM_DEFS += __REL5__ __GERAN_R5__
+  COM_DEFS += __2G_RF_CUSTOM_TOOL_SUPPORT__
+  ifneq ($(strip $(UE_SIMULATOR)), TRUE)
+    COM_DEFS += MTK_SLEEP_ENABLE
+  endif
+endif
+ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+  COM_DEFS += __IS_BYTECOPY_SUPPORT__
+  COM_DEFS += __RFC2507_SUPPORT__
+endif
+ifeq ($(strip $(TEST_LOAD_TYPE)),NONE)
+  COM_DEFS += __RLC_HSDPA_COPRO__ __MAC_HSDPA_COPRO__
+  COM_DEFS += __L2_HSUPA_COPRO__
+  COM_DEFS += __CTM_SUPPORT__
+endif
+# custom option
+COM_DEFS += __MANUAL_MODE_NW_SEL__
+COM_DEFS += __AT_ESWM_SUPPORT__
+COM_DEFS += __CHECK_SYMBOL_MULTIPLE_DEFINITION__
+COM_DEFS += __DRV_NO_USB_CHARGER__
+COM_DEFS += DRV_USB_FORCE_TRIGGER_ONE_EINT
+COM_DEFS += MSDC_MMC40_SUPPORT
+COM_DEFS += __R6_OOS__
+COM_DEFS += __SMP_ARCH__
+COM_DEFS += __USB_HIGH_SPEED_COM_PORT_ENABLE__
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  COM_DEFS += __DYNAMIC_HSPA_PREFERENCE__
+  COM_DEFS += __KAL_CROSS_CORE_SUPPORT__
+  COM_DEFS += __NBR_CELL_INFO__
+  COM_DEFS += TK6268_FPGA1
+  COM_DEFS += __UMTS_NEW_ARCH__
+endif
+ifeq ($(strip $(TEST_LOAD_TYPE)),BASIC)
+  COM_DEFS += MRS_NOT_PRESENT
+endif
+ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  COM_DEFS += UL1_PHASE4_TEST
+endif
+ifeq ($(strip $(TEST_LOAD_TYPE)),NONE)
+  ifdef MODEM_SPEC
+    ifneq ($(strip $(MODEM_SPEC)),MTK_MODEM_C2K)
+      COM_DEFS += __CHANNEL_LOCK__
+    endif
+  endif
+endif
+ifeq ($(filter __FPGA__,$(strip $(COM_DEFS))),)
+  ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+    COM_DEFS += __SATCC__  __SATCE__  __SATCL__
+    COM_DEFS += __SATCZ__  __SATCAA__
+  endif
+endif
+
+#Custom Option for SE3 UT
+ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+  ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+      COM_DEFS += __L4C_GPRS_UT__ __L4BPDN_UT__
+      COM_DEFS += __EM_MODE__ __MODEM_EM_MODE__ UNIT_TEST __TCM_UT__ __TCM_UGTCM_UT__
+      COM_DEFS += __IPV6__ __IPV4V6__ __REL7__ __REL8__
+      COM_DEFS += __SP_GEMINI_3G_SWITCH__ __NRSPCA__
+      COM_DEFS += __SM_UT__ __IPV6_8960_RD_INTERNAL_TEST__ __SM_PRESERVE_RT_PDP_SEVERAL_SECONDS__
+      COM_DEFS += __TCM_RAT_TCM_UT__
+      COM_DEFS += __PAM_UT__
+
+      #RATDM UT
+      COM_DEFS += __RATDM_UT__
+
+      #PDCP/RABM UT
+      COM_DEFS += __PDCP_UT__ __PDCP_LOOPBACK_UT__
+
+      #LLC UT
+      COM_DEFS += __LLC_UT__
+
+      #SNDCP UT
+      COM_DEFS += __SNDCP_UT__ SND_UT_FLC
+
+      ifeq ($(strip $(IMS_SUPPORT)),TRUE)
+        COM_DEFS += __IMS_SUPPORT__
+      endif
+
+      #CSD UT
+      #CSD support is removed from Project Make
+
+      #Removed due to PS1 request (Hope UT logic is same with real target)
+      #COM_DEFS += __MULTI_CARRIER_HSDPA__=3
+      #COM_DEFS += __DCHSUPA_ADJ_FREQ_SUPPORT__
+  endif
+endif
+
+# *************************************************************************
+# COM_DEFS_FOR_xxx defined
+# *************************************************************************
+# Platform Options
+COM_DEFS_FOR_FPGA = FPGA
+COM_DEFS_FOR_$(strip $(PLATFORM)) = $(strip $(PLATFORM)) $(strip $(PLATFORM))_$(strip $(CHIP_VER))
+
+ifeq ($(strip $(PLATFORM)),MT6893)
+  COM_DEFS_FOR_MT6893 += MT6885 MT6885_$(strip $(CHIP_VER))
+endif
+
+COM_DEFS_FOR_PLATFORM =  COM_DEFS_FOR_$(strip $(PLATFORM))
+
+# RF Module Options
+#add for UESIM project
+COM_DEFS_FOR_MT6176_UMTS_FDD = MT6176_RF MT6176_UMTS_FDD
+COM_DEFS_FOR_MT6176_LTE      = MT6176_RF MT6176_LTE_RF
+COM_DEFS_FOR_MT6179_LTE      = MT6179_RF MT6179_LTE_RF
+
+COM_DEFS_FOR_RF_MODULE       =  COM_DEFS_FOR_$(strip $(RF_MODULE))
+
+ifdef UMTS_RF_MODULE
+ifneq ($(strip $(UMTS_RF_MODULE)),NONE)
+  COM_DEFS_FOR_RF_MODULE =  COM_DEFS_FOR_$(strip $(UMTS_RF_MODULE))
+endif
+endif
+
+ifdef UMTS_TDD128_RF_MODULE
+ifneq ($(strip $(UMTS_TDD128_RF_MODULE)),NONE)
+  COM_DEFS_FOR_RF_MODULE =  COM_DEFS_FOR_$(strip $(UMTS_TDD128_RF_MODULE))
+endif
+endif
+
+ifdef LTE_RF_MODULE
+ifneq ($(strip $(LTE_RF_MODULE)),NONE)
+  COM_DEFS_FOR_RF_MODULE =  COM_DEFS_FOR_$(strip $(LTE_RF_MODULE))
+endif
+endif
+
+# BAND_SUPPORT Options
+COM_DEFS_FOR_PGSM900   = __PGSM900__
+COM_DEFS_FOR_EGSM900   = __EGSM900__
+COM_DEFS_FOR_RGSM900   = __RGSM900__
+COM_DEFS_FOR_DCS1800   = __DCS1800__
+COM_DEFS_FOR_PCS1900   = __PCS1900__
+COM_DEFS_FOR_GSM850    = __GSM850__
+COM_DEFS_FOR_GSM450    = __GSM450__
+COM_DEFS_FOR_DUAL900   = __EGSM900__ __DCS1800__
+COM_DEFS_FOR_TRIPLE    = __EGSM900__ __DCS1800__ __PCS1900__
+COM_DEFS_FOR_QUAD      = __EGSM900__ __DCS1800__ __PCS1900__  __GSM850__
+COM_DEFS_FOR_DUAL850   = __GSM850__ __PCS1900__
+COM_DEFS_FOR_TRIPLE850 = __GSM850__ __DCS1800__ __PCS1900__  TRIPLE850
+
+COM_DEFS_FOR_BAND_SUPPORT =  COM_DEFS_FOR_$(strip $(BAND_SUPPORT))
+# BAND_SUPPORT Options end
+
+# AFC_VCXO_TYPE Options
+COM_DEFS_FOR_VCXO       = AFC_VCXO
+COM_DEFS_FOR_VCXO_SC    = AFC_VCXO AFC_SC
+COM_DEFS_FOR_VCXO_TC    = AFC_VCXO AFC_TC
+COM_DEFS_FOR_VCXO_SC_TC = AFC_VCXO AFC_SC AFC_TC
+COM_DEFS_FOR_VCXO_2G    = AFC_VCXO_2G
+
+COM_DEFS_FOR_AFC_VCXO_TYPE =  COM_DEFS_FOR_$(strip $(AFC_VCXO_TYPE))
+# AFC_VCXO_TYPE Options end
+
+# *************************************************************************
+# parameter config in para_def.mak
+# *************************************************************************
+include $(strip $(MAKE_COMMON))/rule_def/para_def.mak
+
+# *************************************************************************
+# Component Compile Options
+# *************************************************************************
+include $(strip $(MAKE_COMMON))/rule_def/common_def.mak
+
+# *************************************************************************
+# Components list
+# *************************************************************************
+include $(strip $(MAKE_COMMON))/rule_def/complist_def.mak
+
+# *************************************************************************
+# Common include path
+# *************************************************************************
+include $(strip $(MAKE_COMMON))/rule_def/commincdirs_def.mak
+
+# *************************************************************************
+# L1 TMD Files
+# *************************************************************************
+include $(strip $(MAKE_COMMON))/rule_def/tmd_def.mak
+
+# *************************************************************************
+# Component trace definition header files
+# *************************************************************************
+include $(strip $(MAKE_COMMON))/rule_def/trace_def.mak
+
+# *************************************************************************
+# Include checkvalue.mak to check invalid feature values.
+# *************************************************************************
+-include make/common/checkvalue.mak
+-include make/common/old_features.mak
+
+# *************************************************************************
+# Include MPD specail compile settings.
+# *************************************************************************
+include $(strip $(MAKE_COMMON))/rule_def/mpd_sp_def.mak
+
+
+# *************************************************************************
+# Check rel setting and decide for REL_SRC_COMP(_SW)/REL_MTK_COMP(_SW) 
+# *************************************************************************
+
+#For custom UCR package
+ifneq ($(strip $(RELEASE_PACKAGE)), REL_INTERNAL)
+  include make/common/rel/$(strip $(RELEASE_PACKAGE)).mak
+endif
+CUS_REL_SRC_COMP_CUST := $(filter $(REL_SRC_COMP),$(COMPLIST))
+CUS_REL_MTK_COMP_CUST := $(filter $(REL_MTK_COMP),$(COMPLIST))
+
+ifneq ($(strip $(CUSTOM_RELEASE)),TRUE)
+  #Check internal(MPD/SWRD) rel setting
+  include make/common/rel/REL_SUB_MPD_5G.mak
+  
+  ifneq ($(NO_PCIBT),TRUE)
+    #Check if module is not defined in internal domain
+    ifneq ($(filter-out $(REL_SUB_COMP), $(FIVEG_COMP) $(FOURG_COMP) $(COMPLIST)),)
+      $(warning ERROR: $(filter-out $(REL_SUB_COMP), $(FIVEG_COMP) $(FOURG_COMP) $(COMPLIST)) is NOT defined in MTK internal domain, please add module to REL_SUB_xxx.mak)
+      $(warning Please refer http://wiki/display/MOLY/How+to+add+a+new+module for internal rel setting.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+
+    #Check if module is not defined in custom domain
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+     ifneq ($(filter-out $(REL_CR_COMP), $(FIVEG_COMP) $(FOURG_COMP) $(COMPLIST)),)
+      $(warning ERROR: $(filter-out $(REL_CR_COMP), $(FIVEG_COMP) $(FOURG_COMP) $(COMPLIST)) is NOT defined in custom domain, please add module to REL_CR_xxx.mak)
+      $(warning Please refer http://wiki/display/MOLY/How+to+add+a+new+module for custom rel setting.)
+      DEPENDENCY_CONFLICT = TRUE
+     endif
+    endif
+
+    #For MPD 5G check
+    REL_FIVEG_SRC_COMP  := $(REL_SRC_COMP_SUB_MPD_5G)
+    ifneq ($(filter-out $(REL_FIVEG_SRC_COMP),$(FIVEG_COMP)),)
+      $(warning ERROR: $(filter-out $(REL_FIVEG_SRC_COMP),$(FIVEG_COMP)) is added to FIVEG_COMP and should be defined as REL_SRC_COMP_MPD_5G in REL_SUB_MPD_5G.mak)
+      $(warning Please refer http://wiki/display/MOLY/How+to+add+a+new+module for MPD srel etting.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+
+    #For MPD 4G check
+    REL_FOURG_SRC_COMP  := $(REL_SRC_COMP_SUB_MPD_4G)
+    ifneq ($(filter-out $(REL_FOURG_SRC_COMP),$(FOURG_COMP)),)
+      $(warning ERROR:$(filter-out $(REL_FOURG_SRC_COMP),$(FOURG_COMP)) is added to FIVEG_COMP and should be defined as REL_SRC_COMP_MPD_4G in REL_SUB_MPD_4G.mak)
+      $(warning Please refer http://wiki/display/MOLY/How+to+add+a+new+module for MPD rel setting.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+
+    #For MPD common/ SWRD check
+    REL_COMMON_SRC_COMP := $(REL_SRC_COMP_SUB_MPD_COMMON) $(REL_SRC_COMP_SUB_SW)
+    ifneq ($(filter-out $(REL_COMMON_SRC_COMP),$(filter-out $(FIVEG_COMP)$(FOURG_COMP),$(COMPLIST))),)
+      $(warning ERROR:$(filter-out $(REL_COMMON_SRC_COMP),$(filter-out $(FIVEG_COMP)$(FOURG_COMP),$(COMPLIST))) is added to COMPLIST and should be defined in REL_SUB_MPD_COMMON.mak or REL_SUB_SW.mak)
+      $(warning Please refer http://wiki/display/MOLY/How+to+add+a+new+module for other MPD setting.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+
+  ifeq ($(MPD_SOURCE_FULL_BUILD), TRUE)
+    #For SWRD USR package
+    CUS_REL_SRC_COMP_SW := $(filter $(REL_SRC_COMP_SW),$(COMPLIST))
+    CUS_REL_MTK_COMP_SW := $(filter $(REL_MTK_COMP_SW),$(COMPLIST))
+
+  # Dedide for REL_SRC_COMP/REL_MTK_COMP in each domain
+  else ifeq ($(strip $(MPD_SOURCE_4G_BUILD)),TRUE)
+    include make/common/rel/REL_SUB_MPD_4G.mak
+  else ifeq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+    include make/common/rel/REL_SUB_SW.mak
+  else
+    include make/common/rel/REL_SUB_MPD_COMMON.mak
+  endif
+endif 
+
+# *************************************************************************
+# EXTRA_LTE settings.
+# *************************************************************************
+SP_LTE_COMP += emm esm etc eval
+
+ifneq ($(wildcard $(LTE_SRC_FDR)),)
+COMPLIST += $(SP_LTE_COMP)
+endif
+
+AUTO_MERGE_FLR = ./custom/driver/audio ./custom/driver/drv/misc_drv
+AUTO_MERGE_PTH = $(foreach DIR,$(AUTO_MERGE_FLR),$(call CUSTOM_FLD_MAPPING,$(DIR)) $(DIR)/_Default_BB/$(strip $(PLATFORM)))
+COMMINCDIRS := $(AUTO_MERGE_PTH) $(COMMINCDIRS)
+
+# *************************************************************************
+# COMPOBJS compile settings.
+# *************************************************************************
+
+CUST_REL_LIB := $(wildcard ./cust_rel_lib/lib*.a)
+ifneq ($(strip $(CUST_REL_LIB)),)
+  COMPOBJS += $(strip $(CUST_REL_LIB))
+endif
+
+ifeq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+  ifdef MTK_BT_CHIP
+    ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+      COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libcvsd_codec.a
+      COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libmsbc_codec.a
+    else
+      COMPOBJS += driver/audio/lib/MTKGCC/libcvsd_codec.a
+      COMPOBJS += driver/audio/lib/MTKGCC/libmsbc_codec.a
+    endif
+  else
+    ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+      COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libcvsd_codec.a
+      COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libmsbc_codec.a
+    else
+      COMPOBJS += driver/audio/lib/MTKGCC/libcvsd_codec.a
+      COMPOBJS += driver/audio/lib/MTKGCC/libmsbc_codec.a
+    endif
+  endif
+    
+  ifeq ($(strip $(VOLTE_SUPPORT)),TRUE)
+    ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+	    #COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libdtmf.a
+	    COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libg711.a
+	    COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libg711plc.a
+	    COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libg722.a
+	    COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libg726.a
+	    COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libg729.a
+	    COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libg7231.a
+    else
+	    COMPOBJS += driver/audio/lib/MTKGCC/libdtmf.a
+	    COMPOBJS += driver/audio/lib/MTKGCC/libg711.a
+	    COMPOBJS += driver/audio/lib/MTKGCC/libg711plc.a
+	    COMPOBJS += driver/audio/lib/MTKGCC/libg722.a
+	    COMPOBJS += driver/audio/lib/MTKGCC/libg726.a
+	    COMPOBJS += driver/audio/lib/MTKGCC/libg729.a
+	    COMPOBJS += driver/audio/lib/MTKGCC/libg7231.a
+    endif
+  endif
+ 
+  ifdef TEST_LOAD_TYPE
+    ifeq ($(strip $(TEST_LOAD_TYPE)),NONE)
+      ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)    
+         COMPOBJS += driver/audio/lib/MTKGCC_SHAOLIN/libblisrc.a
+         CUS_REL_OBJ_LIST += driver/audio/lib/MTKGCC_SHAOLIN/libblisrc.a
+      else
+         COMPOBJS += driver/audio/lib/MTKGCC/libblisrc.a
+         CUS_REL_OBJ_LIST += driver/audio/lib/MTKGCC/libblisrc.a
+      endif
+    endif
+  endif
+endif
+
+ifdef SSS_SUPPORT
+  ifeq ($(strip $(SSS_SUPPORT)),SSS_LIB)
+    ifeq ($(strip $(COMPILER)),GCC)
+      ifneq ($(filter MIPS32 MIPS16 NANOMIPS,$(strip $(COMPILER_ISA))),)
+        ifneq ($(filter MIPS32 MIPS16,$(strip $(COMPILER_ISA))),)
+          COMPOBJS += service/sss/lib/libsss_gcc_sv5.a
+        endif
+        ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+          COMPOBJS += service/sss/lib/libsss_gcc_NANOMIPS.a
+        endif
+      else
+        $(warning ERROR: sss can not support compiler $(strip $(COMPILER_ISA), please check!)
+        DEPENDENCY_CONFLICT = TRUE
+      endif
+        CUS_REL_OBJ_LIST += ./service/sss/lib/sss_gcc_sv5.lib
+    else
+       $(warning ERROR: sss can not support compiler $(strip $(COMPILER), please check!)
+       DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+  ifeq ($(strip $(SSS_SUPPORT)),SSS_SOURCE)
+    ifeq ($(strip $(COMPILER)),GCC)
+      ifneq ($(filter MIPS32 MIPS16,$(strip $(COMPILER_ISA))),)      
+        SSS_SOURCE_COPY_DST := service/sss/lib/libsss_gcc_sv5.a
+      endif
+      ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+        SSS_SOURCE_COPY_DST := service/sss/lib/libsss_gcc_NANOMIPS.a
+      endif
+    endif
+  endif
+endif
+
+# BASIC projects do not need L1_UTMD_FILES
+ifeq ($(strip $(TEST_LOAD_TYPE)),BASIC)
+  L1_UTMD_FILES :=
+endif
+
+# catcher_filter config file
+include interface/service/logging_database/XDD/Catcher_filters_Setting.mak
+
+#####################################################################
+# No whole archive lib (the libs list in below will not check symbol multiple definition)
+#####################################################################
+NO_WHOLE_ARCHIVE_LIB := custom
+
+#####################################################################
+# DSP ASE MODULES define
+#####################################################################
+# lib release, SMP in all core
+DSP_ASE_MODULES := audio
+
+# *************************************************************************
+# Dependency rule
+# *************************************************************************
+include $(strip $(MAKE_COMMON))/rule_def/dep_def.mak
+
+COMP_TRACE_DEFS = $(COMP_TRACE_DEFS_MODEM)
+
+# *************************************************************************
+# Include extra dependency check.
+# *************************************************************************
+-include make/common/extra_dep.mak
+
+ALL_COMPLIST := $(sort $(FIVEG_COMP) $(FOURG_COMP) $(COMPLIST))
+# Generate CUS_REL_SRC_COMP/REL_MTK_COMP
+CUS_REL_SRC_COMP_TEMP := $(filter $(REL_SRC_COMP),$(ALL_COMPLIST))
+CUS_REL_SRC_COMP += $(CUS_REL_SRC_COMP_TEMP)
+
+CUS_REL_MTK_COMP_TEMP := $(filter $(REL_MTK_COMP),$(ALL_COMPLIST))
+CUS_REL_MTK_COMP += $(CUS_REL_MTK_COMP_TEMP)
+
+# Remove the REMOVE_CUSTOM_OPTION specified in project makefile from COM_DEFS
+COM_DEFS  := $(filter-out $(REMOVE_CUSTOM_OPTION),$(COM_DEFS))
+
+###########################################
+
+ifeq ($(strip $(ATEST_SYS_ENABLE)),TRUE)
+include make/module/middleware/internal/atest_sys.mak
+endif
+
+ifdef VARIATION_PROJ
+  ifneq ($(strip $(VARIATION_PROJ)),)
+    include make/common/variation/$(strip $(VARIATION_PROJ)).mak
+    ALL_COMPLIST := $(sort $(FIVEG_COMP) $(FOURG_COMP) $(COMPLIST))
+    CUS_REL_SRC_COMP_TEMP := $(filter $(REL_SRC_COMP) $(CUS_REL_SRC_COMP),$(ALL_COMPLIST))
+    CUS_REL_SRC_COMP := $(CUS_REL_SRC_COMP_TEMP)
+    CUS_REL_MTK_COMP_TEMP := $(filter $(REL_MTK_COMP) $(CUS_REL_MTK_COMP),$(ALL_COMPLIST))
+    CUS_REL_MTK_COMP := $(CUS_REL_MTK_COMP_TEMP)
+  endif
+endif
+
+# consistency check for ALL_COMPLIST & CUS_REL_XXX_COMP
+# check each comp in $(CUS_REL_XXX_COMP) if it has been put in $(ALL_COMPLIST)
+CREL_COMP_NOT_COMPLIST  = $(filter-out $(ALL_COMPLIST),$(CUS_REL_SRC_COMP) $(CUS_REL_PAR_SRC_COMP) $(CUS_REL_MTK_COMP))
+# CREL_COMP_NOT_COMPLIST := $(filter-out fota,$(CREL_COMP_NOT_COMPLIST))
+ifneq ($(words $(CREL_COMP_NOT_COMPLIST)),0)
+  $(warning ERROR: $(foreach comp,$(CREL_COMP_NOT_COMPLIST),"$(comp)") in CUS_REL_XXX_COMP but NOT in COMPLIST)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+# check no module define in $(CUS_REL_SRC_COMP) and $(CUS_REL_MTK_COMP) both
+COMP_BOTH_IN_SRC_MTK = $(filter $(CUS_REL_SRC_COMP),$(CUS_REL_MTK_COMP))
+ifneq ($(words $(COMP_BOTH_IN_SRC_MTK)),0)
+  $(warning ERROR: $(foreach comp,$(COMP_BOTH_IN_SRC_MTK),"$(comp)") in CUS_REL_SRC_COMP but also in CUS_REL_MTK_COMP)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+# COMPLIST(during CUSTOM_RELEASE)      = CUS_REL_SRC_COMP + CUS_REL_PAR_SRC_COMP
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+  COMPLIST = $(strip $(CUS_REL_SRC_COMP))
+else
+  ifeq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+    COMPLIST = $(strip $(CUS_REL_SRC_COMP))
+  endif
+endif
+
+# *************************************************************************
+# Check whether module is source code build in sub
+# *************************************************************************
+
+# check the COM_DEFS value
+COM_DEFS_INVALID_LIST := TRUE FALSE ENABLE DISABLE FULL SLIM NONE
+ifdef COM_DEFS
+  COM_DEFS_INVALID_VALUE := $(filter $(strip $(COM_DEFS)),$(COM_DEFS_INVALID_LIST))
+  ifneq ($(COM_DEFS_INVALID_VALUE),)
+    $(warning ERROR: COM_DEFS value ($(strip $(COM_DEFS_INVALID_VALUE))) is NOT allowable, please do Not assign COM_DEFS value as : ($(strip $(COM_DEFS_INVALID_LIST)))) 
+    DEPENDENCY_CONFLICT = TRUE 
+  endif
+endif
+
+# L1_UTMD_FILES check: the LTE security files can NOT be added to L1_UTMD_FILES.
+ifdef L1_UTMD_FILES
+L1_UTMD_FILES_TEMP := $(filter protocol/lte_sec/% ,$(L1_UTMD_FILES))
+L1_UTMD_FILES_TEMP := $(filter l1/lte_sec/% ,$(L1_UTMD_FILES_TEMP))
+  ifneq ($(strip $(L1_UTMD_FILES_TEMP)),)
+    $(warning ERROR: L1_UTMD_FILES value $(foreach comp,$(L1_UTMD_FILES_TEMP),"$(comp)") is NOT allowable,)
+    $(warning ERROR: the LTE security files can NOT be added to L1_UTMD_FILES.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+# COMP_TRACE_DEFS_MODEM check: the LTE security files can NOT be added to COMP_TRACE_DEFS_MODEM
+ifdef COMP_TRACE_DEFS_MODEM
+COMP_TRACE_DEFS_MODEM_TEMP := $(filter protocol/lte_sec/% ,$(COMP_TRACE_DEFS_MODEM))
+COMP_TRACE_DEFS_MODEM_TEMP := $(filter l1/lte_sec/% ,$(COMP_TRACE_DEFS_MODEM_TEMP))
+  ifneq ($(strip $(COMP_TRACE_DEFS_MODEM_TEMP)),)
+    $(warning ERROR: COMP_TRACE_DEFS_MODEM value $(foreach comp,$(COMP_TRACE_DEFS_MODEM_TEMP),"$(comp)") is NOT allowable,)
+    $(warning ERROR: the LTE security files can NOT be added to COMP_TRACE_DEFS_MODEM.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+# L1_UTMD_FILES_LTE_SEC check: only the LTE security files can be added.
+ifdef L1_UTMD_FILES_LTE_SEC
+L1_UTMD_FILES_LTE_SEC_TEMP := $(filter-out protocol/lte_sec/% ,$(L1_UTMD_FILES_LTE_SEC))
+L1_UTMD_FILES_LTE_SEC_TEMP := $(filter-out l1/lte_sec/% ,$(L1_UTMD_FILES_LTE_SEC_TEMP))
+  ifneq ($(strip $(L1_UTMD_FILES_LTE_SEC_TEMP)),)
+    #$(warning ERROR: L1_UTMD_FILES_LTE_SEC value $(foreach comp,$(L1_UTMD_FILES_LTE_SEC_TEMP),"$(comp)") is NOT allowable,)
+    #$(warning ERROR: only the LTE security files can be added to L1_UTMD_FILES_LTE_SEC.)
+    #DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+# COMP_TRACE_DEFS_MODEM_LTE_SEC check: only the LTE security files can be added.
+ifdef COMP_TRACE_DEFS_MODEM_LTE_SEC
+COMP_TRACE_DEFS_MODEM_LTE_SEC_TEMP := $(filter-out protocol/lte_sec/% ,$(COMP_TRACE_DEFS_MODEM_LTE_SEC))
+COMP_TRACE_DEFS_MODEM_LTE_SEC_TEMP := $(filter-out l1/lte_sec/% ,$(COMP_TRACE_DEFS_MODEM_LTE_SEC_TEMP))
+  ifneq ($(strip $(COMP_TRACE_DEFS_MODEM_LTE_SEC_TEMP)),)
+    #$(warning ERROR: COMP_TRACE_DEFS_MODEM_LTE_SEC value $(foreach comp,$(COMP_TRACE_DEFS_MODEM_LTE_SEC_TEMP),"$(comp)") is NOT allowable,)
+    #$(warning ERROR: only the LTE security files can be added to COMP_TRACE_DEFS_MODEM_LTE_SEC.)
+    #DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+  ifneq ($(strip $(FLAVOR)), $(strip $(ORIGINAL_FLAVOR)))
+   $(warning ERROR: ORIGINAL_FLAVOR value should be $(FLAVOR))
+   DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(strip $(CUSTOM_RELEASE)),FALSE)
+  ifneq ($(strip $(PROJECT_NAME)), $(strip $(ORIGINAL_PROJECT_NAME)))
+   $(warning ERROR: ORIGINAL_PROJECT_NAME value should be $(PROJECT_NAME))
+   DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+# temp add
+UNIVERSAL_DATABASE_SUPPORT = TRUE
+
+COMMINCDIRS := $(sort $(COMMINCDIRS))
+
+ifdef DEPENDENCY_CONFLICT
+  ifeq ($(strip $(DEPENDENCY_CONFLICT)),TRUE)
+    $(error PLEASE check above dependency errors!)
+  endif
+endif
diff --git a/mcu/make/common/rel/REL_CR_BASIC.mak b/mcu/make/common/rel/REL_CR_BASIC.mak
new file mode 100644
index 0000000..87ec06e
--- /dev/null
+++ b/mcu/make/common/rel/REL_CR_BASIC.mak
@@ -0,0 +1,539 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+#
+
+# *************************************************************************
+# Custom Release Component Configuration
+# *************************************************************************
+# Be sure the following:
+#    1. COMPLIST(for CUSTOM_RELEASE)      = CUS_REL_SRC_COMP + CUS_REL_PAR_SRC_COMP
+#    2. CUS_REL_SRC_COMP + CUS_REL_PAR_SRC_COMP + CUS_REL_MTK_COMP = COMPLIST(CUSTOM_RELEASE = False)
+
+# reset for UCR
+ifneq ($(strip $(IS_OVERLAY_PACKAGE)),TRUE)
+  CUS_REL_BASE_COMP :=
+  CUS_REL_FILES_LIST :=
+  NON_REL_DIRS_LIST :=
+  NON_REL_FILES_LIST :=
+  REL_SRC_COMP :=
+  REL_MTK_COMP :=
+  CHANGE_LIB_TO_SRC_COMP :=
+endif
+
+include make/common/rel/REL_CR_LIB.mak
+
+# Common library release modules
+REL_SRC_COMP_CR_BASIC += asn1_common
+REL_SRC_COMP_CR_BASIC += audio
+REL_SRC_COMP_CR_BASIC += bmt
+REL_SRC_COMP_CR_BASIC += comm
+REL_SRC_COMP_CR_BASIC += config
+REL_SRC_COMP_CR_BASIC += custom
+REL_SRC_COMP_CR_BASIC += custom_driver
+REL_SRC_COMP_CR_BASIC += custom_l1
+REL_SRC_COMP_CR_BASIC += custom_middleware
+REL_SRC_COMP_CR_BASIC += custom_protocol
+REL_SRC_COMP_CR_BASIC += custom_service
+REL_SRC_COMP_CR_BASIC += dbinfo
+REL_SRC_COMP_CR_BASIC += devdrv
+REL_SRC_COMP_CR_BASIC += dispatcher
+REL_SRC_COMP_CR_BASIC += drv
+REL_SRC_COMP_CR_BASIC += drv_sim
+REL_SRC_COMP_CR_BASIC += drvtest
+REL_SRC_COMP_CR_BASIC += el1d_ext
+REL_SRC_COMP_CR_BASIC += fs
+REL_SRC_COMP_CR_BASIC += ft
+REL_SRC_COMP_CR_BASIC += ftc
+REL_SRC_COMP_CR_BASIC += hmu
+REL_SRC_COMP_CR_BASIC += ipc_fragment
+REL_SRC_COMP_CR_BASIC += ipcore
+REL_SRC_COMP_CR_BASIC += kpalv
+REL_SRC_COMP_CR_BASIC += ktest
+REL_SRC_COMP_CR_BASIC += l1_ext
+REL_SRC_COMP_CR_BASIC += l1_ext_pcore
+REL_SRC_COMP_CR_BASIC += l4misc
+REL_SRC_COMP_CR_BASIC += mc
+REL_SRC_COMP_CR_BASIC += mcf
+REL_SRC_COMP_CR_BASIC += media
+REL_SRC_COMP_CR_BASIC += mertos_config
+REL_SRC_COMP_CR_BASIC += meut
+REL_SRC_COMP_CR_BASIC += mml1_rf_ext
+REL_SRC_COMP_CR_BASIC += mml1_rf_ext_pcore
+REL_SRC_COMP_CR_BASIC += modis
+REL_SRC_COMP_CR_BASIC += mtd
+REL_SRC_COMP_CR_BASIC += mtf
+REL_SRC_COMP_CR_BASIC += nl1_ext
+REL_SRC_COMP_CR_BASIC += nvram
+REL_SRC_COMP_CR_BASIC += oscar
+REL_SRC_COMP_CR_BASIC += pciedev
+REL_SRC_COMP_CR_BASIC += peripheral
+REL_SRC_COMP_CR_BASIC += rfd_ext
+REL_SRC_COMP_CR_BASIC += sbp
+REL_SRC_COMP_CR_BASIC += sdio_device
+REL_SRC_COMP_CR_BASIC += sim_driver
+REL_SRC_COMP_CR_BASIC += sss
+REL_SRC_COMP_CR_BASIC += sys_drv
+REL_SRC_COMP_CR_BASIC += sys_svc
+REL_SRC_COMP_CR_BASIC += tty
+REL_SRC_COMP_CR_BASIC += uartcore
+REL_SRC_COMP_CR_BASIC += ubm
+REL_SRC_COMP_CR_BASIC += ul1_ext
+REL_SRC_COMP_CR_BASIC += usb
+REL_SRC_COMP_CR_BASIC += usb_driver
+REL_SRC_COMP_CR_BASIC += usim_hw
+REL_SRC_COMP_CR_BASIC += usim_nw
+REL_SRC_COMP_CR_BASIC += usbcore
+REL_SRC_COMP_CR_BASIC += usbidle
+REL_SRC_COMP_CR_BASIC += verno
+
+CHANGE_LIB_TO_SRC_COMP  += $(REL_SRC_COMP_CR_BASIC)
+
+#REL_CR_COMP is from bin/all_mod_rel.mak
+REL_SRC_COMP := $(CHANGE_LIB_TO_SRC_COMP)
+REL_MTK_COMP := $(filter-out $(CHANGE_LIB_TO_SRC_COMP),$(REL_CR_COMP))
+
+#Common release folder
+#from universal common
+CUS_REL_BASE_COMP += ../common/interface/driver/sys_drv/csif
+CUS_REL_BASE_COMP += ../common/interface/driver/sys_drv/cuif
+CUS_REL_BASE_COMP += ../common/interface/driver/sys_drv/cmif
+CUS_REL_BASE_COMP += ../common/interface/driver/sys_drv/config
+CUS_REL_BASE_COMP += ../common/interface/modem/public
+CUS_REL_BASE_COMP += ../common/interface/modem/mt6297/common/nr/external/5g
+CUS_REL_BASE_COMP += ../common/interface/modem/mt6297/common/nr/external/custom
+CUS_REL_BASE_COMP += ../common/interface/modem/external
+CUS_REL_BASE_COMP += ../common/interface/service/dsp_control
+CUS_REL_BASE_COMP += ../common/oss/zlib/v1.2.11/notice
+CUS_REL_BASE_COMP += ../common/oss/libroxml/3.0.2/notice
+CUS_REL_BASE_COMP += ../common/oss/openssl/OpenSSL_1_0_2d/notice
+CUS_REL_BASE_COMP += ../common/oss/ezxml/master_6741f78500/notice
+
+#from mcu 
+CUS_REL_BASE_COMP += interface/layout/L2CacheLockSection
+CUS_REL_BASE_COMP += interface/layout/InputSection
+CUS_REL_BASE_COMP += interface/service/logging_database
+CUS_REL_BASE_COMP += interface/driver/devdrv/digrf_platform
+CUS_REL_BASE_COMP += custom/driver/common
+CUS_REL_BASE_COMP += custom/driver/drv/Drv_Tool
+CUS_REL_BASE_COMP += custom/middleware/common
+CUS_REL_BASE_COMP += custom/modem/common
+CUS_REL_BASE_COMP += custom/protocol/common/atci/include
+CUS_REL_BASE_COMP += custom/protocol/common/atci/src
+CUS_REL_BASE_COMP += custom/protocol/common/ps
+CUS_REL_BASE_COMP += custom/service/apncfg
+CUS_REL_BASE_COMP += custom/service/plmn
+CUS_REL_BASE_COMP += custom/service/flc2
+CUS_REL_BASE_COMP += custom/service/fs
+CUS_REL_BASE_COMP += custom/service/nvram
+CUS_REL_BASE_COMP += custom/service/sbp
+CUS_REL_BASE_COMP += custom/service/tst
+CUS_REL_BASE_COMP += custom/service/mcf
+CUS_REL_BASE_COMP += custom/service/cacerts
+CUS_REL_BASE_COMP += interface/service/crypto
+CUS_REL_BASE_COMP += interface/service/mcf
+CUS_REL_BASE_COMP += custom/system/Template
+CUS_REL_BASE_COMP += driver/audio/lib/MTKGCC
+CUS_REL_BASE_COMP += driver/audio/lib/MTKINC
+CUS_REL_BASE_COMP += driver/audio/lib/MTKGCC_SHAOLIN
+CUS_REL_BASE_COMP += driver/audio/src
+CUS_REL_BASE_COMP += driver/audio/src/v1
+CUS_REL_BASE_COMP += driver/audio/src/v1/afes
+CUS_REL_BASE_COMP += driver/audio/src/v1/inc
+CUS_REL_BASE_COMP += driver/audio/src32_inc
+CUS_REL_BASE_COMP += driver/audio/med
+CUS_REL_BASE_COMP += driver/btmt/rf_desense
+CUS_REL_BASE_COMP += driver/che/include
+CUS_REL_BASE_COMP += driver/cipher/include
+CUS_REL_BASE_COMP += driver/connectivity/sdio_device_boot/inc
+CUS_REL_BASE_COMP += driver/connectivity/usb_class/include
+CUS_REL_BASE_COMP += driver/connectivity/usb_driver/inc
+CUS_REL_BASE_COMP += driver/connectivity/usb_driver/src
+CUS_REL_BASE_COMP += driver/devdrv
+CUS_REL_BASE_COMP += driver/devdrv/asm/inc
+CUS_REL_BASE_COMP += driver/devdrv/asm/src
+CUS_REL_BASE_COMP += driver/devdrv/ect/src
+CUS_REL_BASE_COMP += driver/devdrv/gpt/inc
+CUS_REL_BASE_COMP += driver/devdrv/gpt/src
+CUS_REL_BASE_COMP += driver/devdrv/iomux/inc
+CUS_REL_BASE_COMP += driver/devdrv/mdap_interface/src
+CUS_REL_BASE_COMP += driver/devdrv/pcmon/inc
+CUS_REL_BASE_COMP += driver/devdrv/pcmon/src
+CUS_REL_BASE_COMP += driver/devdrv/us_counter/src
+CUS_REL_BASE_COMP += driver/devdrv/l3cache/inc
+CUS_REL_BASE_COMP += driver/devdrv/l3cache/src
+CUS_REL_BASE_COMP += driver/drv/include
+CUS_REL_BASE_COMP += driver/drv/src
+CUS_REL_BASE_COMP += driver/dvfs_drv/internal/inc
+CUS_REL_BASE_COMP += driver/hif/inc/hif_pciedev
+CUS_REL_BASE_COMP += driver/hif/src/hif_pciedev
+CUS_REL_BASE_COMP += driver/peripheral/inc
+CUS_REL_BASE_COMP += driver/sib_drv/mtad/inc
+CUS_REL_BASE_COMP += driver/sleep_drv/internal/inc
+CUS_REL_BASE_COMP += driver/sleep_drv/public/inc
+CUS_REL_BASE_COMP += driver/storage/flash/fdm/inc
+CUS_REL_BASE_COMP += driver/storage/flash/mtd/inc
+CUS_REL_BASE_COMP += driver/storage/flash/mtd/src
+CUS_REL_BASE_COMP += driver/storage/mc/inc
+CUS_REL_BASE_COMP += driver/storage/mc/src
+CUS_REL_BASE_COMP += driver/sys_drv/cache/inc
+CUS_REL_BASE_COMP += driver/sys_drv/cache/src
+CUS_REL_BASE_COMP += driver/sys_drv/dormant/inc
+CUS_REL_BASE_COMP += driver/sys_drv/dormant/src
+CUS_REL_BASE_COMP += driver/sys_drv/hw_itc
+CUS_REL_BASE_COMP += driver/sys_drv/init/inc
+CUS_REL_BASE_COMP += driver/sys_drv/init/src
+CUS_REL_BASE_COMP += driver/sys_drv/mmu
+CUS_REL_BASE_COMP += driver/sys_drv/mpu/inc
+CUS_REL_BASE_COMP += driver/sys_drv/mpu/src
+CUS_REL_BASE_COMP += driver/sys_drv/pmu/inc
+CUS_REL_BASE_COMP += driver/sys_drv/pmu/src
+CUS_REL_BASE_COMP += driver/sys_drv/sfu/inc
+CUS_REL_BASE_COMP += driver/sys_drv/sfu/src
+CUS_REL_BASE_COMP += driver/sys_drv/spu/inc
+CUS_REL_BASE_COMP += driver/sys_drv/spu/src
+CUS_REL_BASE_COMP += driver/sys_drv/task_agent
+CUS_REL_BASE_COMP += driver/sys_drv/task_agent/src
+CUS_REL_BASE_COMP += driver/tty/inc
+CUS_REL_BASE_COMP += driver/tty/src
+CUS_REL_BASE_COMP += interface/common
+CUS_REL_BASE_COMP += interface/driver/audio
+CUS_REL_BASE_COMP += interface/driver/ccismcore
+CUS_REL_BASE_COMP += interface/driver/ccismcore_scp
+CUS_REL_BASE_COMP += interface/driver/cldmacore
+CUS_REL_BASE_COMP += interface/driver/che
+CUS_REL_BASE_COMP += interface/driver/cipher/include
+CUS_REL_BASE_COMP += interface/driver/cmux
+CUS_REL_BASE_COMP += interface/driver/connectivity/sdio_device
+CUS_REL_BASE_COMP += interface/driver/connectivity/usb_driver
+CUS_REL_BASE_COMP += interface/driver/devdrv/asm
+CUS_REL_BASE_COMP += interface/driver/devdrv/btdma
+CUS_REL_BASE_COMP += interface/driver/devdrv/busmon
+CUS_REL_BASE_COMP += interface/driver/devdrv/busmpu
+CUS_REL_BASE_COMP += interface/driver/devdrv/cirq
+CUS_REL_BASE_COMP += interface/driver/devdrv/cmif/inc
+CUS_REL_BASE_COMP += interface/driver/devdrv/cpu
+CUS_REL_BASE_COMP += interface/driver/devdrv/cs_sram_ctrl
+CUS_REL_BASE_COMP += interface/driver/devdrv/csif
+CUS_REL_BASE_COMP += interface/driver/devdrv/cuif/inc
+CUS_REL_BASE_COMP += interface/driver/devdrv/d2d/inc
+CUS_REL_BASE_COMP += interface/driver/devdrv/dcm
+CUS_REL_BASE_COMP += interface/driver/devdrv/ect
+CUS_REL_BASE_COMP += interface/driver/devdrv/eint
+CUS_REL_BASE_COMP += interface/driver/devdrv/emi
+CUS_REL_BASE_COMP += interface/driver/devdrv/gdma
+CUS_REL_BASE_COMP += interface/driver/devdrv/log_seq
+CUS_REL_BASE_COMP += interface/driver/devdrv/mdap_interface
+CUS_REL_BASE_COMP += interface/driver/devdrv/mdipc
+CUS_REL_BASE_COMP += interface/driver/devdrv/mdl_ebc
+CUS_REL_BASE_COMP += interface/driver/devdrv/pcmon
+CUS_REL_BASE_COMP += interface/driver/devdrv/pcie
+CUS_REL_BASE_COMP += interface/driver/devdrv/pdn
+CUS_REL_BASE_COMP += interface/driver/devdrv/pll
+CUS_REL_BASE_COMP += interface/driver/devdrv/rstctl
+CUS_REL_BASE_COMP += interface/driver/devdrv/thermal
+CUS_REL_BASE_COMP += interface/driver/devdrv/tia
+CUS_REL_BASE_COMP += interface/driver/devdrv/us_counter
+CUS_REL_BASE_COMP += interface/driver/drv_def
+CUS_REL_BASE_COMP += interface/driver/drv_sw_def
+CUS_REL_BASE_COMP += interface/driver/drvtest
+CUS_REL_BASE_COMP += interface/driver/dvfs_drv
+CUS_REL_BASE_COMP += interface/driver/hif
+CUS_REL_BASE_COMP += interface/driver/hif/hif_usbdev
+CUS_REL_BASE_COMP += interface/driver/hwdrv
+CUS_REL_BASE_COMP += interface/driver/lhifcore
+CUS_REL_BASE_COMP += interface/driver/md_drv
+CUS_REL_BASE_COMP += interface/driver/peripheral
+CUS_REL_BASE_COMP += interface/driver/regbase
+CUS_REL_BASE_COMP += interface/driver/sdiocore
+CUS_REL_BASE_COMP += interface/driver/sib_drv/scc
+CUS_REL_BASE_COMP += interface/driver/sleep_drv
+CUS_REL_BASE_COMP += interface/driver/storage
+CUS_REL_BASE_COMP += interface/driver/storage/mc
+CUS_REL_BASE_COMP += interface/driver/storage/sim
+CUS_REL_BASE_COMP += interface/driver/sys_drv
+CUS_REL_BASE_COMP += interface/driver/dpcopro/custom
+CUS_REL_BASE_COMP += interface/driver/tfwk_drv
+CUS_REL_BASE_COMP += interface/l1/cl1/common
+CUS_REL_BASE_COMP += interface/l1/el1/external
+CUS_REL_BASE_COMP += interface/l1/gl1/external
+CUS_REL_BASE_COMP += interface/l1/gl1/internal
+CUS_REL_BASE_COMP += interface/l1/mml1/external
+CUS_REL_BASE_COMP += interface/l1/nl1/external
+CUS_REL_BASE_COMP += interface/l1/tl1
+CUS_REL_BASE_COMP += interface/l1/ul1
+CUS_REL_BASE_COMP += interface/l1/ul1/external
+CUS_REL_BASE_COMP += interface/middleware/general
+CUS_REL_BASE_COMP += interface/middleware/hif
+CUS_REL_BASE_COMP += interface/middleware/media
+CUS_REL_BASE_COMP += interface/middleware/meta
+CUS_REL_BASE_COMP += interface/protocol/agps
+CUS_REL_BASE_COMP += interface/protocol/as_c2k
+CUS_REL_BASE_COMP += interface/protocol/as_c2k/common
+CUS_REL_BASE_COMP += interface/protocol/bip
+CUS_REL_BASE_COMP += interface/protocol/xcap
+CUS_REL_BASE_COMP += interface/protocol/sase
+CUS_REL_BASE_COMP += interface/protocol/general
+CUS_REL_BASE_COMP += interface/protocol/l2_c2k
+CUS_REL_BASE_COMP += interface/protocol/l2_utility/flc2_v2
+CUS_REL_BASE_COMP += interface/protocol/l4
+CUS_REL_BASE_COMP += interface/protocol/l5/mipc/common
+CUS_REL_BASE_COMP += interface/protocol/l5/mipc/msg
+CUS_REL_BASE_COMP += interface/protocol/l1misc
+CUS_REL_BASE_COMP += interface/protocol/lte
+CUS_REL_BASE_COMP += interface/protocol/mcd
+CUS_REL_BASE_COMP += interface/protocol/nas_c2k
+CUS_REL_BASE_COMP += interface/protocol/nas_multimode/upcm
+CUS_REL_BASE_COMP += interface/protocol/dispatcher
+CUS_REL_BASE_COMP += interface/protocol/sim
+CUS_REL_BASE_COMP += interface/protocol/enl2
+CUS_REL_BASE_COMP += interface/protocol/3g/csr
+CUS_REL_BASE_COMP += interface/protocol/inet_protocols/http_tls/http/include
+CUS_REL_BASE_COMP += interface/protocol/inet_protocols/http_tls/security
+CUS_REL_BASE_COMP += interface/sap
+CUS_REL_BASE_COMP += interface/sap/drv
+CUS_REL_BASE_COMP += interface/sap/md
+CUS_REL_BASE_COMP += interface/sap/mw
+CUS_REL_BASE_COMP += interface/sap/svc
+CUS_REL_BASE_COMP += interface/service/icd
+CUS_REL_BASE_COMP += interface/service/asn1_common
+CUS_REL_BASE_COMP += interface/service/config
+CUS_REL_BASE_COMP += interface/service/dhl/v1
+CUS_REL_BASE_COMP += interface/service/dhl/v2
+CUS_REL_BASE_COMP += interface/service/em
+CUS_REL_BASE_COMP += interface/service/ethsvc
+CUS_REL_BASE_COMP += interface/service/event_info
+CUS_REL_BASE_COMP += interface/service/fcs
+CUS_REL_BASE_COMP += interface/service/fota
+CUS_REL_BASE_COMP += interface/service/fs
+CUS_REL_BASE_COMP += interface/service/fsm
+CUS_REL_BASE_COMP += interface/service/hif
+CUS_REL_BASE_COMP += interface/service/ipsec
+CUS_REL_BASE_COMP += interface/service/kal
+CUS_REL_BASE_COMP += interface/service/maif
+CUS_REL_BASE_COMP += interface/service/mtf
+CUS_REL_BASE_COMP += interface/service/nal
+CUS_REL_BASE_COMP += interface/service/nvram
+CUS_REL_BASE_COMP += interface/service/prbm
+CUS_REL_BASE_COMP += interface/service/pmc/icd_v1
+CUS_REL_BASE_COMP += interface/service/pmc/icd_v2
+CUS_REL_BASE_COMP += interface/service/qmu_bm
+CUS_REL_BASE_COMP += interface/service/rsra
+CUS_REL_BASE_COMP += interface/service/sbp
+CUS_REL_BASE_COMP += interface/service/sst
+CUS_REL_BASE_COMP += interface/service/stacklib
+CUS_REL_BASE_COMP += interface/service/sys_svc
+CUS_REL_BASE_COMP += interface/service/tcpip
+CUS_REL_BASE_COMP += interface/service/libroxml
+CUS_REL_BASE_COMP += interface/service/wlc
+CUS_REL_BASE_COMP += interface/service/dns
+CUS_REL_BASE_COMP += l1/gl1/l1d_ext
+CUS_REL_BASE_COMP += l1/interface/gl1
+CUS_REL_BASE_COMP += l1/interface/mml1
+CUS_REL_BASE_COMP += middleware/hif/interface
+CUS_REL_BASE_COMP += middleware/hif/ipcore/include
+CUS_REL_BASE_COMP += middleware/hif/ipcore/src
+CUS_REL_BASE_COMP += middleware/hif/ipcore/src/ipc_fragment
+CUS_REL_BASE_COMP += middleware/kpalv/include
+CUS_REL_BASE_COMP += middleware/kpalv/src
+CUS_REL_BASE_COMP += interface/middleware/kpalv
+CUS_REL_BASE_COMP += middleware/hif/uartcore/src
+CUS_REL_BASE_COMP += middleware/hif/usbclass/msd/include
+CUS_REL_BASE_COMP += middleware/hif/usbcore/include
+CUS_REL_BASE_COMP += middleware/hif/usbcore/src
+CUS_REL_BASE_COMP += middleware/hif/usbidle/include
+CUS_REL_BASE_COMP += middleware/hif/usbidle/src
+CUS_REL_BASE_COMP += middleware/media/audio/src
+CUS_REL_BASE_COMP += middleware/media/common/src
+CUS_REL_BASE_COMP += middleware/meta/ft/inc
+CUS_REL_BASE_COMP += middleware/meta/ft/src
+CUS_REL_BASE_COMP += middleware/meta/ftc
+CUS_REL_BASE_COMP += protocol/dispatcher/include
+CUS_REL_BASE_COMP += protocol/dispatcher/src
+CUS_REL_BASE_COMP += protocol/interface/agps
+CUS_REL_BASE_COMP += protocol/interface/asn/asn1lib/include
+CUS_REL_BASE_COMP += protocol/interface/asn/rr/include
+CUS_REL_BASE_COMP += protocol/interface/ddm
+CUS_REL_BASE_COMP += protocol/interface/el2
+CUS_REL_BASE_COMP += protocol/interface/enl2/el2
+CUS_REL_BASE_COMP += protocol/interface/enl2/en_common
+CUS_REL_BASE_COMP += protocol/interface/errc
+CUS_REL_BASE_COMP += protocol/interface/general
+CUS_REL_BASE_COMP += protocol/interface/ims
+CUS_REL_BASE_COMP += protocol/interface/iwlan
+CUS_REL_BASE_COMP += protocol/interface/l4
+CUS_REL_BASE_COMP += protocol/interface/l4misc
+CUS_REL_BASE_COMP += protocol/interface/lte
+CUS_REL_BASE_COMP += protocol/interface/mcd/include
+CUS_REL_BASE_COMP += protocol/interface/nas_multimode/upcm
+CUS_REL_BASE_COMP += protocol/layer4/l4/atci/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/csm/cc/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/csm/ss/asn1/gen/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/csm/ss/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/l4c/include/common
+CUS_REL_BASE_COMP += protocol/layer4/l4/l4c/include/proc
+CUS_REL_BASE_COMP += protocol/layer4/l4/mbci/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/phb/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/phb/src
+CUS_REL_BASE_COMP += protocol/layer4/l4/rac/common/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/rac/erac/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/rac/ugrac/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/smsal/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/smslib/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/smu/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/tcm/etcm/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/tcm/rat_tcm/inc
+CUS_REL_BASE_COMP += protocol/layer4/l4/uem/include
+CUS_REL_BASE_COMP += interface/protocol/uem/include
+CUS_REL_BASE_COMP += protocol/layer4/l4/uem/src
+CUS_REL_BASE_COMP += protocol/layer4/sim/include
+CUS_REL_BASE_COMP += protocol/nas_utility/kdf/lib
+CUS_REL_BASE_COMP += service/config/src/hal
+CUS_REL_BASE_COMP += service/dhl/database
+CUS_REL_BASE_COMP += service/fs/ccci_fs/src
+CUS_REL_BASE_COMP += service/fs/common/include
+CUS_REL_BASE_COMP += service/hif/hmu/include
+CUS_REL_BASE_COMP += service/hif/hmu/src
+CUS_REL_BASE_COMP += service/hif/interface
+CUS_REL_BASE_COMP += service/hif/ubm/include
+CUS_REL_BASE_COMP += service/hif/ubm/src
+CUS_REL_BASE_COMP += service/kal/common/include
+CUS_REL_BASE_COMP += service/kal/lib/mlib/include
+CUS_REL_BASE_COMP += service/kal/os/mertos/include
+CUS_REL_BASE_COMP += service/mtf/translate_elements
+CUS_REL_BASE_COMP += service/mtf/formatter
+CUS_REL_BASE_COMP += service/mtf/inc
+CUS_REL_BASE_COMP += service/mtf/base
+CUS_REL_BASE_COMP += service/mertos/include
+CUS_REL_BASE_COMP += service/mertos_config/include
+CUS_REL_BASE_COMP += service/mertos_config/src
+CUS_REL_BASE_COMP += service/nvram/include
+CUS_REL_BASE_COMP += service/nvram/src
+CUS_REL_BASE_COMP += service/ssf/inc
+CUS_REL_BASE_COMP += service/sss/interface/inc
+CUS_REL_BASE_COMP += service/sss/lib
+CUS_REL_BASE_COMP += service/sst/include
+CUS_REL_BASE_COMP += service/sys_svc/brom_ext/inc
+CUS_REL_BASE_COMP += service/sys_svc/brom_ext/src
+CUS_REL_BASE_COMP += service/sys_svc/dsp_loader/src
+CUS_REL_BASE_COMP += service/sys_svc/dspfm_lte/inc
+CUS_REL_BASE_COMP += service/sys_svc/dspfm_lte/src
+CUS_REL_BASE_COMP += service/sys_svc/excep_hdlr/inc
+CUS_REL_BASE_COMP += service/sys_svc/excep_hdlr/src
+CUS_REL_BASE_COMP += service/sys_svc/ftl/src
+CUS_REL_BASE_COMP += service/sys_svc/gfh/public
+CUS_REL_BASE_COMP += service/sys_svc/profile/inc
+CUS_REL_BASE_COMP += service/sys_svc/region/inc
+CUS_REL_BASE_COMP += service/sys_svc/region/src
+CUS_REL_BASE_COMP += tools
+CUS_REL_BASE_COMP += interface/l1/nl1/external/md97/rf_custom
+CUS_REL_BASE_COMP += interface/l1/idc
+CUS_REL_BASE_COMP += interface/service/mdmp
+CUS_REL_BASE_COMP += service/mdmp
+CUS_REL_BASE_COMP += service/mcf/include
+CUS_REL_BASE_COMP += service/mcf/src
+CUS_REL_BASE_COMP += custom/protocol/common/atp
+ifneq ($(wildcard custom/l1/nl1),)
+CUS_REL_BASE_COMP += custom/l1/nl1
+endif
+
+#C2K
+CUS_REL_BASE_COMP += interface/protocol/l4_c2k
+CUS_REL_BASE_COMP += interface/l1/cl1/rfd
+CUS_REL_BASE_COMP += protocol/interface/as_c2k
+
+# For ESL simulation
+CUS_REL_BASE_COMP += driver/sys_drv/esl/src
+CUS_REL_BASE_COMP += driver/sys_drv/esl/inc
+CUS_REL_BASE_COMP += service/esl_debug/inc
+
+# .
+CUS_REL_FILES_LIST += m
+CUS_REL_FILES_LIST += make.pl
+#CUS_REL_FILES_LIST += make.sh
+CUS_REL_FILES_LIST += make/common/build.mak
+CUS_REL_FILES_LIST += make/common/build_warning_def.mak
+CUS_REL_FILES_LIST += make/common/buildconfig.mak
+CUS_REL_FILES_LIST += make/common/cmd_cfg.mak
+CUS_REL_FILES_LIST += make/common/codegen.mak
+CUS_REL_FILES_LIST += make/common/comp.mak
+CUS_REL_FILES_LIST += make/common/compiler.mak
+CUS_REL_FILES_LIST += make/common/Custom.bld
+CUS_REL_FILES_LIST += make/common/extra_dep.mak
+CUS_REL_FILES_LIST += make/common/old_features.mak
+CUS_REL_FILES_LIST += make/common/option.mak
+CUS_REL_FILES_LIST += make/common/standalone_action.mak
+CUS_REL_FILES_LIST += make/common/user_specific.mak
+CUS_REL_FILES_LIST += make/common/xgeninc.mak
+CUS_REL_FILES_LIST += make/common/get_makefile_var.mak
+CUS_REL_FILES_LIST += make/module/driver/driver_config.mak
+CUS_REL_FILES_LIST += make/module/middleware/middleware_config.mak
+CUS_REL_FILES_LIST += make/module/l1/l1_config.mak
+CUS_REL_FILES_LIST += make/module/protocol/protocol_config.mak
+CUS_REL_FILES_LIST += make/module/service/service_config.mak
+CUS_REL_FILES_LIST += make/module/custom/custom_config.mak
+CUS_REL_FILES_LIST += make/common/rel/REL_CR_BASIC.mak
+CUS_REL_BASE_COMP  += make/common/rule_def
+CUS_REL_BASE_COMP  += make/module/driver/peripheral/extern/devdrv
+CUS_REL_BASE_COMP  += make/common/modem_spec
+
+# special case
+CUS_REL_CUSTOM_FEATURE := BOARD_VER_FLAVOR RF_MODULE UMTS_RF_MODULE UMTS_TDD128_RF_MODULE LTE_RF_MODULE MM_RF_MODULE PLATFORM C2K_RF_MODULE NR_RF_MODULE MM_DEVICE
+CUS_REL_CUSTOM_BOARD_VER_FLAVOR := custom/driver/audio
+CUS_REL_CUSTOM_BOARD_VER_FLAVOR += custom/driver/drv/gps
+CUS_REL_CUSTOM_BOARD_VER_FLAVOR += custom/driver/drv/misc_drv
+CUS_REL_CUSTOM_BOARD_VER_FLAVOR += custom/driver/drv_gen
+CUS_REL_CUSTOM_BOARD_VER_FLAVOR += custom/middleware/meta
+CUS_REL_CUSTOM_BOARD_VER_FLAVOR += custom/modem/ps
+CUS_REL_CUSTOM_BOARD_VER_FLAVOR += custom/system
+CUS_REL_CUSTOM_RF_MODULE := custom/l1/gl1_rf
+CUS_REL_CUSTOM_UMTS_RF_MODULE := custom/l1/ul1_rf
+CUS_REL_CUSTOM_UMTS_TDD128_RF_MODULE := custom/l1/tl1_rf
+CUS_REL_CUSTOM_LTE_RF_MODULE := custom/l1/el1_rf
+CUS_REL_CUSTOM_MM_RF_MODULE := custom/l1/mml1_rf
+CUS_REL_CUSTOM_C2K_RF_MODULE := custom/l1/cl1_rf
+CUS_REL_CUSTOM_NR_RF_MODULE := custom/l1/nl1_rf
+CUS_REL_CUSTOM_PLATFORM := custom/driver/audio/_Default_BB
+CUS_REL_CUSTOM_PLATFORM += custom/driver/drv/misc_drv/_Default_BB
+CUS_REL_CUSTOM_MM_DEVICE := custom/l1/mml1_devices
+
+NON_REL_DIRS_LIST += tools/MSYS
+NON_REL_DIRS_LIST += tools/MinGW
+NON_REL_DIRS_LIST += tools/GCC
+NON_REL_DIRS_LIST += tools/DwarfUtility
+NON_REL_DIRS_LIST += tools/xl1sim
+NON_REL_DIRS_LIST += tools/NVRAMStatistic/lid
+NON_REL_DIRS_LIST += tools/NVRAMStatistic/include/openssl
+
+NON_REL_FILES_LIST += tools/MemoryDeviceList/MemoryDeviceList_*Internal.xls
+
diff --git a/mcu/make/common/rel/REL_CR_LIB.mak b/mcu/make/common/rel/REL_CR_LIB.mak
new file mode 100644
index 0000000..3224701
--- /dev/null
+++ b/mcu/make/common/rel/REL_CR_LIB.mak
@@ -0,0 +1,305 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+# *************************************************************************
+# Custom Release Component Configuration
+# *************************************************************************
+# Be sure the following:
+#    1. COMPLIST(for CUSTOM_RELEASE)      = CUS_REL_SRC_COMP + CUS_REL_PAR_SRC_COMP
+#    2. CUS_REL_SRC_COMP + CUS_REL_PAR_SRC_COMP + CUS_REL_MTK_COMP = COMPLIST(CUSTOM_RELEASE = False)
+
+-include $(strip $(ALL_MOD_DIR))/all_mod_rel.mak
+
+#lib release modules
+REL_MTK_COMP_CR_LIB += psdm
+REL_MTK_COMP_CR_LIB += 3g324m_tvt
+REL_MTK_COMP_CR_LIB += aomgr
+REL_MTK_COMP_CR_LIB += arm7wdt
+REL_MTK_COMP_CR_LIB += as_semaphore_utility
+REL_MTK_COMP_CR_LIB += asinterfaces
+REL_MTK_COMP_CR_LIB += atp_sec
+REL_MTK_COMP_CR_LIB += l5_sec
+REL_MTK_COMP_CR_LIB += l1misc
+REL_MTK_COMP_CR_LIB += bip
+REL_MTK_COMP_CR_LIB += btt_agent
+REL_MTK_COMP_CR_LIB += bytecopy
+REL_MTK_COMP_CR_LIB += c2k_dma_model
+REL_MTK_COMP_CR_LIB += ccci
+REL_MTK_COMP_CR_LIB += cccidev
+REL_MTK_COMP_CR_LIB += cccisrv
+REL_MTK_COMP_CR_LIB += ccifcore
+REL_MTK_COMP_CR_LIB += ccifdev
+REL_MTK_COMP_CR_LIB += ccismcore
+REL_MTK_COMP_CR_LIB += cert
+REL_MTK_COMP_CR_LIB += che
+REL_MTK_COMP_CR_LIB += cipher
+REL_MTK_COMP_CR_LIB += cirq
+REL_MTK_COMP_CR_LIB += cl1
+REL_MTK_COMP_CR_LIB += cl1_public
+REL_MTK_COMP_CR_LIB += cl1tst
+REL_MTK_COMP_CR_LIB += cl2_sec
+REL_MTK_COMP_CR_LIB += cldmacore
+REL_MTK_COMP_CR_LIB += cldmadev
+REL_MTK_COMP_CR_LIB += con10
+REL_MTK_COMP_CR_LIB += coresight
+REL_MTK_COMP_CR_LIB += cph
+REL_MTK_COMP_CR_LIB += cpueval
+REL_MTK_COMP_CR_LIB += crypto
+REL_MTK_COMP_CR_LIB += cscdcore
+REL_MTK_COMP_CR_LIB += cscdev
+REL_MTK_COMP_CR_LIB += cxif_check
+REL_MTK_COMP_CR_LIB += ddm
+REL_MTK_COMP_CR_LIB += dem
+REL_MTK_COMP_CR_LIB += devdrv_fakeapi
+REL_MTK_COMP_CR_LIB += devdrv_sec
+REL_MTK_COMP_CR_LIB += dhl
+REL_MTK_COMP_CR_LIB += dhl_ext
+REL_MTK_COMP_CR_LIB += dhl_sub
+REL_MTK_COMP_CR_LIB += dmf
+REL_MTK_COMP_CR_LIB += dp_engine
+REL_MTK_COMP_CR_LIB += dpcopro
+REL_MTK_COMP_CR_LIB += dpfm
+REL_MTK_COMP_CR_LIB += dpmaifdev
+REL_MTK_COMP_CR_LIB += dpmaifdrv_dp
+REL_MTK_COMP_CR_LIB += drv_hif
+REL_MTK_COMP_CR_LIB += drv_pfc
+REL_MTK_COMP_CR_LIB += dsmgr
+REL_MTK_COMP_CR_LIB += dsp_ram
+REL_MTK_COMP_CR_LIB += dummyps
+REL_MTK_COMP_CR_LIB += dummyups
+REL_MTK_COMP_CR_LIB += dvfs_drv
+REL_MTK_COMP_CR_LIB += eap
+REL_MTK_COMP_CR_LIB += edsphwram
+REL_MTK_COMP_CR_LIB += edyn
+REL_MTK_COMP_CR_LIB += eint
+REL_MTK_COMP_CR_LIB += el1
+REL_MTK_COMP_CR_LIB += el1b
+REL_MTK_COMP_CR_LIB += el1d
+REL_MTK_COMP_CR_LIB += el1d_agc
+REL_MTK_COMP_CR_LIB += el1d_fec
+REL_MTK_COMP_CR_LIB += el1d_pub
+REL_MTK_COMP_CR_LIB += el1d_tpc
+REL_MTK_COMP_CR_LIB += el1el2errc_it
+REL_MTK_COMP_CR_LIB += el2_emac_protect_v2
+REL_MTK_COMP_CR_LIB += el2_emac_sec
+REL_MTK_COMP_CR_LIB += el2_protect_v2
+REL_MTK_COMP_CR_LIB += el2_sec
+REL_MTK_COMP_CR_LIB += emi
+REL_MTK_COMP_CR_LIB += emm_sec
+REL_MTK_COMP_CR_LIB += ephysim_w32
+REL_MTK_COMP_CR_LIB += erac
+REL_MTK_COMP_CR_LIB += errc_sec
+REL_MTK_COMP_CR_LIB += esim_phy
+REL_MTK_COMP_CR_LIB += esl_debug
+REL_MTK_COMP_CR_LIB += ethercore
+REL_MTK_COMP_CR_LIB += ethsvc
+REL_MTK_COMP_CR_LIB += etmr
+REL_MTK_COMP_CR_LIB += eutest
+REL_MTK_COMP_CR_LIB += event_info
+REL_MTK_COMP_CR_LIB += evl1
+REL_MTK_COMP_CR_LIB += fcs
+REL_MTK_COMP_CR_LIB += fdm
+REL_MTK_COMP_CR_LIB += flc2_v2_sec
+REL_MTK_COMP_CR_LIB += fs_internal
+REL_MTK_COMP_CR_LIB += fsm
+REL_MTK_COMP_CR_LIB += gas_fdd_sec
+REL_MTK_COMP_CR_LIB += gas_tdd_sec
+REL_MTK_COMP_CR_LIB += gl1
+REL_MTK_COMP_CR_LIB += gl1_pcore
+REL_MTK_COMP_CR_LIB += gmmgr
+REL_MTK_COMP_CR_LIB += gmss_sec
+REL_MTK_COMP_CR_LIB += gpio
+REL_MTK_COMP_CR_LIB += gps
+REL_MTK_COMP_CR_LIB += gpt
+REL_MTK_COMP_CR_LIB += hif
+REL_MTK_COMP_CR_LIB += hmu_sec
+REL_MTK_COMP_CR_LIB += hsc
+REL_MTK_COMP_CR_LIB += http_tls
+REL_MTK_COMP_CR_LIB += imc
+REL_MTK_COMP_CR_LIB += imcsms
+REL_MTK_COMP_CR_LIB += ims
+REL_MTK_COMP_CR_LIB += imsm
+REL_MTK_COMP_CR_LIB += ipfcore
+REL_MTK_COMP_CR_LIB += ipsec
+REL_MTK_COMP_CR_LIB += iwlan
+REL_MTK_COMP_CR_LIB += kal
+REL_MTK_COMP_CR_LIB += keygen
+REL_MTK_COMP_CR_LIB += l1d
+REL_MTK_COMP_CR_LIB += l1edps
+REL_MTK_COMP_CR_LIB += l2_lte_copro
+REL_MTK_COMP_CR_LIB += l2_sec_utility
+REL_MTK_COMP_CR_LIB += l2tps
+REL_MTK_COMP_CR_LIB += lbs
+REL_MTK_COMP_CR_LIB += lhifcore
+REL_MTK_COMP_CR_LIB += lhifdev
+REL_MTK_COMP_CR_LIB += libroxml
+REL_MTK_COMP_CR_LIB += ll1
+REL_MTK_COMP_CR_LIB += llc_sec
+REL_MTK_COMP_CR_LIB += lpp
+REL_MTK_COMP_CR_LIB += ltecsr
+REL_MTK_COMP_CR_LIB += ltm_sim
+REL_MTK_COMP_CR_LIB += ltt
+REL_MTK_COMP_CR_LIB += maif
+REL_MTK_COMP_CR_LIB += mase
+REL_MTK_COMP_CR_LIB += mase_hw_models
+REL_MTK_COMP_CR_LIB += mcd
+REL_MTK_COMP_CR_LIB += mcif
+REL_MTK_COMP_CR_LIB += mcif_drv
+REL_MTK_COMP_CR_LIB += md_drv
+REL_MTK_COMP_CR_LIB += md_idc
+REL_MTK_COMP_CR_LIB += md_sm
+REL_MTK_COMP_CR_LIB += mdfpm
+REL_MTK_COMP_CR_LIB += mertos
+REL_MTK_COMP_CR_LIB += mhccifdev
+REL_MTK_COMP_CR_LIB += mml1
+REL_MTK_COMP_CR_LIB += mml1_pcore
+REL_MTK_COMP_CR_LIB += mml1_rf
+REL_MTK_COMP_CR_LIB += mml1_rf_pcore
+REL_MTK_COMP_CR_LIB += mnwi
+REL_MTK_COMP_CR_LIB += mrs_sec
+REL_MTK_COMP_CR_LIB += mrs_nr_sec
+REL_MTK_COMP_CR_LIB += mt6306
+REL_MTK_COMP_CR_LIB += mtkdebug
+REL_MTK_COMP_CR_LIB += n3ans
+REL_MTK_COMP_CR_LIB += n3cf
+REL_MTK_COMP_CR_LIB += n3epc
+REL_MTK_COMP_CR_LIB += n3sam
+REL_MTK_COMP_CR_LIB += n3sys
+REL_MTK_COMP_CR_LIB += nal
+REL_MTK_COMP_CR_LIB += naltp
+REL_MTK_COMP_CR_LIB += nhlsim_hw
+REL_MTK_COMP_CR_LIB += nhlsim_l1
+REL_MTK_COMP_CR_LIB += nl1
+REL_MTK_COMP_CR_LIB += nl1_modis
+REL_MTK_COMP_CR_LIB += nl1_pub
+REL_MTK_COMP_CR_LIB += nl1b
+REL_MTK_COMP_CR_LIB += nl2_protect
+REL_MTK_COMP_CR_LIB += nmac_protect
+REL_MTK_COMP_CR_LIB += nmu
+REL_MTK_COMP_CR_LIB += nrrc_protect
+REL_MTK_COMP_CR_LIB += nrvrf_bridge
+REL_MTK_COMP_CR_LIB += nucleus_tcpip_v3
+REL_MTK_COMP_CR_LIB += nvram_sec
+REL_MTK_COMP_CR_LIB += pccif4dev
+REL_MTK_COMP_CR_LIB += pccif5dev
+REL_MTK_COMP_CR_LIB += pccifdev
+REL_MTK_COMP_CR_LIB += pcmon
+REL_MTK_COMP_CR_LIB += perf
+REL_MTK_COMP_CR_LIB += pfc
+REL_MTK_COMP_CR_LIB += pmc
+REL_MTK_COMP_CR_LIB += prbm
+REL_MTK_COMP_CR_LIB += qmu_bm
+REL_MTK_COMP_CR_LIB += ratdm_c2k_sec
+REL_MTK_COMP_CR_LIB += ratdm_sec
+REL_MTK_COMP_CR_LIB += rfc2507
+REL_MTK_COMP_CR_LIB += rfd
+REL_MTK_COMP_CR_LIB += rmc
+REL_MTK_COMP_CR_LIB += rohc
+REL_MTK_COMP_CR_LIB += rohc_v2
+REL_MTK_COMP_CR_LIB += rrlp
+REL_MTK_COMP_CR_LIB += rstctl
+REL_MTK_COMP_CR_LIB += rsra
+REL_MTK_COMP_CR_LIB += rsva
+REL_MTK_COMP_CR_LIB += rtp
+REL_MTK_COMP_CR_LIB += sase
+REL_MTK_COMP_CR_LIB += scpccismcore
+REL_MTK_COMP_CR_LIB += scsi
+REL_MTK_COMP_CR_LIB += sdiocore
+REL_MTK_COMP_CR_LIB += sdm
+REL_MTK_COMP_CR_LIB += secpccifdev
+REL_MTK_COMP_CR_LIB += serdes_drv
+REL_MTK_COMP_CR_LIB += sib_drv
+REL_MTK_COMP_CR_LIB += sim_enb
+REL_MTK_COMP_CR_LIB += simmngr
+REL_MTK_COMP_CR_LIB += sleep_drv
+REL_MTK_COMP_CR_LIB += slt
+REL_MTK_COMP_CR_LIB += sph_ipc
+REL_MTK_COMP_CR_LIB += spic
+REL_MTK_COMP_CR_LIB += ssds
+REL_MTK_COMP_CR_LIB += sst
+REL_MTK_COMP_CR_LIB += sst_sec
+REL_MTK_COMP_CR_LIB += stub
+REL_MTK_COMP_CR_LIB += sys_svc_sec
+REL_MTK_COMP_CR_LIB += sys_test
+REL_MTK_COMP_CR_LIB += tas
+REL_MTK_COMP_CR_LIB += tdd_drv
+REL_MTK_COMP_CR_LIB += tft_pf
+REL_MTK_COMP_CR_LIB += tfwk_drv
+REL_MTK_COMP_CR_LIB += tl1
+REL_MTK_COMP_CR_LIB += tl1d
+REL_MTK_COMP_CR_LIB += tmc
+REL_MTK_COMP_CR_LIB += tstm
+REL_MTK_COMP_CR_LIB += tstm_meta
+REL_MTK_COMP_CR_LIB += u4ghlsim_hw
+REL_MTK_COMP_CR_LIB += u4ghlsim_hw_sec
+REL_MTK_COMP_CR_LIB += u4ghlsim_l1
+REL_MTK_COMP_CR_LIB += u4ghlsim_l1_sec
+REL_MTK_COMP_CR_LIB += uart
+REL_MTK_COMP_CR_LIB += ufpm
+REL_MTK_COMP_CR_LIB += ul1
+REL_MTK_COMP_CR_LIB += ul1_fec
+REL_MTK_COMP_CR_LIB += ul1_modis
+REL_MTK_COMP_CR_LIB += ul1b
+REL_MTK_COMP_CR_LIB += ul2_secure_fdd
+REL_MTK_COMP_CR_LIB += ulcs
+REL_MTK_COMP_CR_LIB += upcm
+REL_MTK_COMP_CR_LIB += ups
+REL_MTK_COMP_CR_LIB += urr_fdd_sec
+REL_MTK_COMP_CR_LIB += us_counter
+REL_MTK_COMP_CR_LIB += usb_hif_sim
+REL_MTK_COMP_CR_LIB += usbclass
+REL_MTK_COMP_CR_LIB += usbosd
+REL_MTK_COMP_CR_LIB += usim
+REL_MTK_COMP_CR_LIB += vdm
+REL_MTK_COMP_CR_LIB += vmmi_bridge
+REL_MTK_COMP_CR_LIB += vnif
+REL_MTK_COMP_CR_LIB += volte_core
+REL_MTK_COMP_CR_LIB += wccifdev
+REL_MTK_COMP_CR_LIB += wfpm
+REL_MTK_COMP_CR_LIB += wifi_proxy
+REL_MTK_COMP_CR_LIB += wvrf_bridge
+REL_MTK_COMP_CR_LIB += whlsim_hw
+REL_MTK_COMP_CR_LIB += wlc
+REL_MTK_COMP_CR_LIB += wo
+REL_MTK_COMP_CR_LIB += wrpm
+REL_MTK_COMP_CR_LIB += wtunnel
+REL_MTK_COMP_CR_LIB += xcap
+REL_MTK_COMP_CR_LIB += xl1
+REL_MTK_COMP_CR_LIB += xl1r
+REL_MTK_COMP_CR_LIB += smic
+REL_MTK_COMP_CR_LIB += ltecsr_src
+REL_MTK_COMP_CR_LIB += lgesecurity
+REL_MTK_COMP_CR_LIB += vgmm_protect
+
+#release makefile
+CUS_REL_FILES_LIST += make/common/rel/REL_CR_LIB.mak
diff --git a/mcu/make/common/rule_def/c2k_def.mak b/mcu/make/common/rule_def/c2k_def.mak
new file mode 100644
index 0000000..ba95b45
--- /dev/null
+++ b/mcu/make/common/rule_def/c2k_def.mak
@@ -0,0 +1,1242 @@
+# 
+#  Copyright Statement:
+#  ---------------------------
+#  This software/firmware and related documentation ("MediaTek Software") are
+#  protected under relevant copyright laws. The information contained herein 
+#  is confidential and proprietary to MediaTek Inc. and/or its licensors.  
+#  Without the prior written permission of MediaTek inc. and/or its licensors,
+#  any reproduction,modification, use or disclosure of MediaTek Software, and
+#  information contained herein, in whole or in part, shall be strictly prohibited.
+#   
+#  MediaTek Inc.(C)2011.All rights reserved.
+#
+#  BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
+#  AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK 
+#  SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED 
+#  TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL 
+#  WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 
+#  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 
+#  NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER 
+#  WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, 
+#  INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER 
+#  AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING 
+#  THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE 
+#  RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 
+#  CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR 
+#  ANY MEDIATEK SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO 
+#  CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND 
+#  EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT 
+#  TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,AT MEDIATEK'S OPTION, 
+#  TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,OR REFUND ANY SOFTWARE 
+#  LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK 
+#  SOFTWARE AT ISSUE. 
+#
+# *************************************************************************
+
+# Generated at 2015-05-12 10:55:44
+
+
+# *************************************************************************
+# C2K Defines
+# *************************************************************************
+
+################################################################################
+#  
+#      Configure Options 
+#
+################################################################################
+ifeq ($(strip $(CONFIG_UI)),NONE)
+  SUPPORT_UTK=TRUE
+endif
+
+################################################################################
+#  
+#      System definitions 
+#
+################################################################################
+
+# Platform Options
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  SYS_ASIC = SA_CBP82
+  SYS_BOARD = SB_DATACARD
+else
+  SYS_ASIC = SA_ELBRUS
+  SYS_BOARD = SB_ELBRUS
+endif
+
+# RF Module Options
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  SYS_OPTION_RF_HW = SYS_RF_FCI_7790
+else
+  SYS_OPTION_RF_HW = SYS_RF_MT6176
+endif
+
+#
+# Default IMD compiler flag
+#
+#SYS_OPTION_IMD_MODULE    = $(SYS_IMD_MODULE_NOTUSED)
+SYS_OPTION_IMD_MODULE     = $(SYS_IMD_MODULE_ISUSED)
+SYS_OPTION_IMD_GAIN_TABLE = $(SYS_IMD_GAIN_TABLE_NOSWITCH)
+
+#
+# Setup IMD compiler flag if IMD module is not used
+#
+ifeq ($(strip $(USE_IMD_MODULE)),FALSE)
+  SYS_OPTION_IMD_MODULE     = $(SYS_IMD_MODULE_NOTUSED)
+endif
+
+#
+# Setup IMD compiler flag if IMD module turns gain table
+#
+ifeq ($(strip $(TURN_IMD_TABLE)),TRUE)
+  SYS_OPTION_IMD_GAIN_TABLE = $(SYS_IMD_GAIN_TABLE_SWITCH)
+endif
+
+#
+# Default FMP MMSE MRC Switch flag
+#
+SYS_OPTION_FMP_MMSE_MRC   = $(SYS_FMP_MMSE_MRC_SWITCH)
+
+#
+# Setup FMP MMSE MRC compiler flag 
+#
+ifeq ($(strip $(USE_MMSE_MRC_MODULE)),FALSE)
+  SYS_OPTION_FMP_MMSE_MRC   = $(SYS_FMP_MMSE_MRC_NOSWITCH)
+endif
+
+#
+# Default RPC High Threshold Flag
+#
+SYS_OPTION_RPC_THRESHOLD  = $(SYS_RPC_HIGH_THRESHOLD_NOTUSED)
+
+#
+# Setup RPC High Threshold Flag
+#
+ifeq ($(strip $(USE_RPC_FIX)),TRUE)
+  SYS_OPTION_RPC_THRESHOLD  = $(SYS_RPC_HIGH_THRESHOLD_USED)
+endif
+
+#
+# Default GPS RF compiler flags to SYS_GPS_RF_NONE
+#
+SYS_OPTION_GPS_RF_HW      = $(SYS_GPS_RF_NONE)
+
+#
+# Setup GPS RF compiler flags if GLONAV 1040 is used
+#
+ifeq ($(strip $(USE_GLONAV_1040_GPS_RF)),TRUE)
+  SYS_OPTION_GPS_RF_HW      = $(SYS_GPS_RF_GLONAV_1040)
+endif
+
+#
+# Default GPS path feature
+#
+SYS_OPTION_GPS_HW = $(SYS_GPS_DEFAULT)
+
+#
+# Default External GPS compiler flags to NONE
+#
+SYS_OPTION_EXTERNAL_GPS_HW = $(SYS_EXT_GPS_NONE)
+
+ifeq ($(strip $(USE_GPS_TYPE)),GPS_TYPE_INTERNAL)
+  SYS_OPTION_GPS_HW = $(SYS_GPS_LOCAL_INTERNAL)
+endif
+
+ifeq ($(strip $(USE_GPS_TYPE)),GPS_TYPE_EXTERNAL_ON_CP)
+  C2K_COM_DEFS += SYS_OPTION_GPS_EXTERNAL
+endif
+
+ifeq ($(strip $(USE_GPS_TYPE)),GPS_TYPE_EXTERNAL_ON_AP)
+  C2K_COM_DEFS += SYS_OPTION_GPS_EXTERNAL
+  SYS_OPTION_EXTERNAL_GPS_HW = $(SYS_EXT_GPS_ON_AP)
+endif
+
+C2K_COM_DEFS += SYS_OPTION_GPS_AP_CALL
+
+SYS_OPTION_AP_GPS_HW = $(SYS_EXT_GPS_ON_AP_DEV0)
+
+SYS_OPTION_AGPS_ENABLE = $(SYS_AGPS_ENABLE)
+ifeq ($(strip $(MODIS_CONFIG)),FALSE)
+  SYS_OPTION_REFERENCE_FREQ = $(SYS_REFERENCE_FREQ_26_00)
+else
+  SYS_OPTION_REFERENCE_FREQ = $(SYS_REFERENCE_FREQ_19_20)
+endif
+SYS_OPTION_32K_CLK_SOURCE = $(SYS_OPTION_32K_CLK_INT_OSC)
+SYS_OPTION_TCXO_CONFIG    = $(SYS_OPTION_TCXO_SINGLE)
+
+#
+# Default Audio path feature
+#
+SYS_OPTION_AUDIO_PATH_FEATURE = $(SYS_OPTION_AUDIO_PATH_FEATURE_DEFAULT)
+
+#
+# Audio patch feature
+#
+ifeq ($(strip $(AUDIO_PATH_FEATURE)),DEFAULT)
+  SYS_OPTION_AUDIO_PATH_FEATURE = $(SYS_OPTION_AUDIO_PATH_FEATURE_DEFAULT)
+else
+  ifeq ($(strip $(AUDIO_PATH_FEATURE)),ONE)
+    SYS_OPTION_AUDIO_PATH_FEATURE = $(SYS_OPTION_AUDIO_PATH_FEATURE_ONE)
+  else
+    ifeq ($(strip $(AUDIO_PATH_FEATURE)),TWO)
+      SYS_OPTION_AUDIO_PATH_FEATURE = $(SYS_OPTION_AUDIO_PATH_FEATURE_TWO)
+    endif
+  endif
+endif
+
+
+
+# Default flashless IPC device flags to SYS_IPC_DEV_NONE
+#
+SYS_OPTION_IPC_DEV      = $(SYS_IPC_DEV_NONE)
+
+SYS_OPTION_HDET_HW       = $(SYS_HDET_DISCRETE)
+#
+# LMV221 power detector
+#
+ifeq ($(strip $(HDET_HW)),LMV221)
+  SYS_OPTION_HDET_HW       = $(SYS_HDET_LMV221)
+endif
+
+#
+# ADL550 power detector
+#
+ifeq ($(strip $(HDET_HW)),ADL550)
+  SYS_OPTION_HDET_HW       = $(SYS_HDET_ADL550)
+endif
+
+
+# SYS_TARGET = $(ST_??)
+#
+# This define is used to select source code for the primary system target. 
+#-------------------------------------------------------------------------
+
+ST_HW  = 1
+ST_SIM = 2
+
+SYS_DEFS += ST_HW ST_SIM
+
+ifneq ($(strip $(SYS_TARGET)),)
+  SYS_DEFS += SYS_TARGET
+endif
+
+# SYS_BOARD = $(SB_??)
+#
+# This define is used to select source code for the board type used. 
+#-------------------------------------------------------------------
+
+SB_BB7      = 1
+SB_EVB7     = 2
+SB_FEATURE_PHONE = 3
+SB_DATACARD = 4
+SB_EVB8     = 5
+SB_DENALI   = 6
+SB_JADE     = 7
+SB_EVEREST  = 8
+SB_ELBRUS   = 10
+
+SYS_DEFS += SB_BB7 SB_EVB7 SB_FEATURE_PHONE SB_DATACARD SB_EVB8 SB_DENALI SB_JADE SB_EVEREST SB_ELBRUS
+
+ifneq ($(strip $(SYS_BOARD)),)
+  SYS_DEFS += SYS_BOARD
+endif
+
+# SYS_BD_VARIANT = $(SBV_??)
+#
+# This define is used to select source code for a specific variant
+# of the SB_EVB8 board.
+# (Other SB_?? boards can have their own variants, too.)
+#-------------------------------------------------------------------
+
+SBV_BASE    = 0
+SBV_FP      = 1
+
+SYS_DEFS += SBV_BASE SBV_FP
+
+ifneq ($(strip $(SYS_BD_VARIANT)),)
+  SYS_DEFS += SYS_BD_VARIANT
+endif
+
+# SYS_ASIC = $(SA_??)
+#
+# This define is used to select source code for the type of process/ASIC used.  
+# Since some code is shared between several ASICs, all of the following must be declared.
+#-----------------------------------------------------------------------------
+
+SA_FPGA     = 1
+SA_CBP70    = 2
+SA_CBP71    = 3
+SA_CBP63    = 4
+SA_CBP80    = 5
+SA_CBP82    = 6
+SA_MT6735   = 7
+SA_MT6755   = 8
+SA_MT6797   = 9
+SA_ELBRUS   = 11
+
+SYS_DEFS += SA_FPGA SA_CBP70 SA_CBP71 SA_CBP63 SA_CBP80 SA_CBP82 SA_MT6735 SA_MT6755 SA_MT6797 SA_ELBRUS
+
+ifneq ($(strip $(SYS_ASIC)),)
+  SYS_DEFS += SYS_ASIC
+endif
+
+
+# SYS_VERSION = $(SV_REV_??)
+#
+# This define is used to select source code which is specific to a particular 
+# revision of the ASIC.  
+#----------------------------------------------------------------------------
+
+SV_REV_A0   = 10
+SV_REV_A1   = 11
+SV_REV_B0   = 20
+SV_REV_C0   = 30
+SV_REV_D0   = 40
+
+SYS_VERSION    = SV_REV_A0
+SYS_DSPM_PATCH = 0
+                
+SYS_DEFS += SV_REV_A0 SV_REV_A1 SV_REV_B0 SV_REV_C0 SV_REV_D0
+
+ifneq ($(strip $(SYS_VERSION)),)
+  SYS_DEFS += SYS_VERSION
+endif
+
+ifeq "$(USE_VER)" "SV_REV_A0"
+  SO_VERSION = $(SV_REV_A0)
+else
+  ifeq "$(USE_VER)" "SV_REV_A1"
+    SO_VERSION = $(SV_REV_A1)
+  else
+    ifeq "$(USE_VER)" "SV_REV_B0"
+      SO_VERSION = $(SV_REV_B0)
+    else
+      ifeq "$(USE_VER)" "SV_REV_C0"
+        SO_VERSION = $(SV_REV_C0)
+      else
+        ifeq "$(USE_VER)" "SV_REV_D0"
+          SO_VERSION = $(SV_REV_D0)
+        else
+          SO_VERSION =
+        endif
+      endif
+    endif
+  endif
+endif
+
+# SYS_DSPM_PATCH = $(SP_??)
+# This define is used to select source code for the specific patch revision.  
+#-----------------------------------------------------------------------------
+
+SP_ALL  = 0
+SP_ONE   = 1
+SP_TWO   = 2
+SP_THREE = 3
+SP_FOUR  = 4
+
+SYS_DEFS += SP_ALL SP_ONE SP_TWO SP_THREE SP_FOUR
+
+ifneq ($(strip $(SYS_DSPM_PATCH)),)
+  SYS_DEFS += SYS_DSPM_PATCH
+endif
+
+# SYS_OPTION_RF_HW = $(SYS_RF_??)
+#
+# This define is used to set the Target RF Options
+#-----------------------------------------------------------------------------
+SYS_RF_GRF_6413     = 13
+SYS_RF_FCI_7790     = 14
+SYS_RF_MTK_ORIONC   = 15
+SYS_RF_MT6176       = 16
+
+SYS_DEFS +=      SYS_RF_GRF_6413 SYS_RF_FCI_7790 SYS_RF_MTK_ORIONC SYS_RF_MT6176
+
+ifneq ($(strip $(SYS_OPTION_RF_HW)),)
+  SYS_DEFS += SYS_OPTION_RF_HW
+endif
+
+
+# SYS_CUST_PLT = $(SYS_PLT_??)
+#
+# This define is used to set the Target custom platform Options
+# ---------------------------------
+SYS_PLT_SHAMU=0
+SYS_PLT_MT6735_EVB=1
+SYS_PLT_MT6735_PHONE=2
+SYS_PLT_MT6755_EVB=3
+SYS_PLT_MT6755_PHONE=4
+SYS_PLT_MT6797_EVB=5
+SYS_PLT_MT6797_PHONE=6
+
+SYS_DEFS += SYS_PLT_SHAMU SYS_PLT_MT6735_EVB SYS_PLT_MT6735_PHONE SYS_PLT_MT6755_EVB SYS_PLT_MT6755_PHONE SYS_PLT_MT6797_EVB SYS_PLT_MT6797_PHONE
+
+ifneq ($(strip $(SYS_CUST_PLT)),)
+  SYS_DEFS += SYS_CUST_PLT
+endif
+
+# SYS_OPTION_IMD_MODULE = $(SYS_IMD_MODULE_ISUSED/NOTUSED)
+#
+# This define is used to set to use IMD module or not.
+#-----------------------------------------------------------------------------
+# SYS_IMD_MODULE_ISUSED     Value to identify IMD module is complied, can be used if enabled
+# SYS_IMD_MODULE_NOTUSED    Value to identify IMD module is not complied, so cann not be used
+
+SYS_IMD_MODULE_ISUSED    = 0
+SYS_IMD_MODULE_NOTUSED   = 1
+
+SYS_DEFS += SYS_IMD_MODULE_ISUSED SYS_IMD_MODULE_NOTUSED
+
+ifneq ($(strip $(SYS_OPTION_IMD_MODULE)),)
+  SYS_DEFS += SYS_OPTION_IMD_MODULE
+endif
+
+# SYS_OPTION_IMD_GAIN_TABLE = $(SYS_IMD_GAIN_TABLE_SWITCH)
+#
+# This define is used to set to switch IMD table or not 
+#-----------------------------------------------------------------------------
+# SYS_IMD_GAIN_TABLE_SWITCH      Value to identify IMD module switch gain table based detection result.
+# SYS_IMD_GAIN_TABLE_NOSWITCH    Value to identify IMD module does not switch gain table no matter detection result is. 
+
+SYS_IMD_GAIN_TABLE_NOSWITCH   = 0
+SYS_IMD_GAIN_TABLE_SWITCH     = 1
+
+SYS_DEFS += SYS_IMD_GAIN_TABLE_NOSWITCH SYS_IMD_GAIN_TABLE_SWITCH
+
+ifneq ($(strip $(SYS_OPTION_IMD_GAIN_TABLE)),)
+  SYS_DEFS += SYS_OPTION_IMD_GAIN_TABLE
+endif
+
+# SYS_OPTION_FMP_MMSE_MRC = $(SYS_FMP_MMSE_MRC_??)
+#
+# This define is used to Compile FMP MMSE-MRC Switch Module or not.
+#-----------------------------------------------------------------------------
+# SYS_FMP_MMSE_MRC_SWITCH   Value to identify Compile FMP MMSE-MRC Switch Module is complied, can be used if enabled
+# SYS_FMP_MMSE_MRC_NOSWITCH Value to identify Compile FMP MMSE-MRC Switch Module is not complied
+
+SYS_FMP_MMSE_MRC_NOSWITCH    = 0
+SYS_FMP_MMSE_MRC_SWITCH      = 1
+
+SYS_DEFS += SYS_FMP_MMSE_MRC_NOSWITCH SYS_FMP_MMSE_MRC_SWITCH
+
+ifneq ($(strip $(SYS_OPTION_FMP_MMSE_MRC)),)
+  SYS_DEFS += SYS_OPTION_FMP_MMSE_MRC
+endif
+
+# SYS_OPTION_RPC_THRESHOLD = $(SYS_RPC_HIGH_THRESHOLD_??)
+#
+# This define is used to Use High value of MBP_MCD_RPC_RTH or not.
+#-----------------------------------------------------------------------------
+# SYS_RPC_HIGH_THRESHOLD_USED       
+# SYS_RPC_HIGH_THRESHOLD_NOTUSED    
+
+SYS_RPC_HIGH_THRESHOLD_USED    = 0
+SYS_RPC_HIGH_THRESHOLD_NOTUSED = 1
+
+SYS_DEFS += SYS_RPC_HIGH_THRESHOLD_USED SYS_RPC_HIGH_THRESHOLD_NOTUSED
+
+ifneq ($(strip $(SYS_OPTION_RPC_THRESHOLD)),)
+  SYS_DEFS += SYS_OPTION_RPC_THRESHOLD
+endif
+
+# SYS_OPTION_GPS_RF_HW = $(SYS_GPS_RF_??)
+#
+# This define is used to set the Target GPS RF Options
+#-----------------------------------------------------------------------------
+# SYS_GPS_RF_NONE           Value to NON GPS RF is in use
+# SYS_GPS_RF_GLONAV_1040    Value to identify GloNav 1040
+
+SYS_GPS_RF_NONE         = 0
+SYS_GPS_RF_GLONAV_1040  = 3
+
+SYS_DEFS += SYS_GPS_RF_NONE SYS_GPS_RF_GLONAV_1040
+
+ifneq ($(strip $(SYS_OPTION_GPS_RF_HW)),)
+  SYS_DEFS += SYS_OPTION_GPS_RF_HW
+endif
+
+# SYS_OPTION_EXTERNAL_GPS_HW = $(SYS_EXT_GPS_??)
+#
+# This define is used to set the Target External GPS Options
+#-----------------------------------------------------------------------------
+# SYS_EXT_GPS_NONE       Value to NON External GPS is in use
+# SYS_EXT_GPS_GNS_7560   Value to identify ST GNS7560
+# SYS_EXT_GPS_ON_AP      Value to identify GPS Device for GPS on AP (Bypass AA Msg)  
+
+SYS_EXT_GPS_NONE        = 0
+SYS_EXT_GPS_ON_AP       = 2
+SYS_EXT_GPS_ON_AP_DEV0  = 3
+
+SYS_DEFS += SYS_EXT_GPS_NONE  SYS_EXT_GPS_ON_AP  SYS_EXT_GPS_ON_AP_DEV0
+
+ifneq ($(strip $(SYS_OPTION_EXTERNAL_GPS_HW)),)
+  SYS_DEFS += SYS_OPTION_EXTERNAL_GPS_HW
+endif
+
+# Agps option
+
+SYS_AGPS_ENABLE = 1
+
+SYS_DEFS += SYS_AGPS_ENABLE
+
+ifneq ($(strip $(SYS_OPTION_AGPS_ENABLE)),)
+  SYS_DEFS += SYS_OPTION_AGPS_ENABLE
+endif
+
+ifneq ($(strip $(SYS_OPTION_AP_GPS_HW)),)
+  SYS_DEFS +=  SYS_OPTION_AP_GPS_HW
+endif 
+
+
+# SYS_OPTION_REFERENCE_FREQ = $(SYS_REFERENCE_??)
+#
+# This define is used to identify the Target Clock Reference
+#-----------------------------------------------------------------------------
+# SYS_REFERENCE_FREQ_19_20    Value to identify 19.20 MHz clock reference
+# SYS_TEST_REF_FREQ_39_32     Value to identify 39.3216 MHz clock reference (for test only)
+# SYS_REFERENCE_FREQ_26_00    Value to identify 26.00 MHz clock reference (for Denali)
+#                                    Used for PLL bypass, so never use with option SYS_OPTION_INTERNAL_PLL
+#                                    defined!!!
+
+SYS_REFERENCE_FREQ_19_20   = 0
+SYS_TEST_REF_FREQ_39_32    = 1
+SYS_REFERENCE_FREQ_26_00   = 2
+
+SYS_DEFS += SYS_REFERENCE_FREQ_19_20 SYS_TEST_REF_FREQ_39_32 SYS_REFERENCE_FREQ_26_00
+
+ifneq ($(strip $(SYS_OPTION_REFERENCE_FREQ)),)
+  SYS_DEFS += SYS_OPTION_REFERENCE_FREQ
+endif
+
+# SYS_OPTION_32K_CLK_SOURCE = $(SYS_OPTION_32K_CLK_??)
+#
+# This define is used to identify the 32K clock source
+#-----------------------------------------------------------------------------
+# SYS_OPTION_32K_CLK_INT_OSC    Value to identify internal 32K osc
+# SYS_OPTION_32K_CLK_BYPASS     Value to identify external 32K osc
+# SYS_OPTION_32K_CLK_DIV_TCXO Value to identify the usage of TCXO/512 instead of 32K osc 
+
+SYS_OPTION_32K_CLK_INT_OSC     = 0
+SYS_OPTION_32K_CLK_BYPASS      = 1
+SYS_OPTION_32K_CLK_DIV_TCXO    = 2
+
+SYS_DEFS += SYS_OPTION_32K_CLK_INT_OSC SYS_OPTION_32K_CLK_BYPASS SYS_OPTION_32K_CLK_DIV_TCXO
+
+ifneq ($(strip $(SYS_OPTION_32K_CLK_SOURCE)),)
+  SYS_DEFS += SYS_OPTION_32K_CLK_SOURCE
+endif
+
+
+# SYS_OPTION_AUDIO_PATH_FEATURE = $(SYS_OPTION_AUDIO_PATH_FEATURE_??)
+#
+# This define is used to select audio path feature
+SYS_OPTION_AUDIO_PATH_FEATURE_DEFAULT     = 0
+SYS_OPTION_AUDIO_PATH_FEATURE_ONE      = 1
+SYS_OPTION_AUDIO_PATH_FEATURE_TWO      = 2
+
+SYS_DEFS += SYS_OPTION_AUDIO_PATH_FEATURE_DEFAULT  SYS_OPTION_AUDIO_PATH_FEATURE_ONE SYS_OPTION_AUDIO_PATH_FEATURE_TWO
+
+ifneq ($(strip $(SYS_OPTION_AUDIO_PATH_FEATURE)),)
+  SYS_DEFS += SYS_OPTION_AUDIO_PATH_FEATURE
+endif
+
+
+#
+# This define is used to select gps path feature
+SYS_GPS_DEFAULT     = 0
+SYS_GPS_LOCAL_INTERNAL      = 1
+
+
+SYS_DEFS += SYS_GPS_DEFAULT  SYS_GPS_LOCAL_INTERNAL 
+
+ifneq ($(strip $(SYS_OPTION_GPS_HW)),)
+  SYS_DEFS += SYS_OPTION_GPS_HW
+endif
+
+
+
+# SYS_OPTION_USB
+#
+# Define USB used
+# SYS_USB_NONE        USB not included  
+# SYS_USB_SYNOPSYS    USB core in cbp7X and older 
+# SYS_USB_SYNOPSYS2  - Adds 8 Interface and EP0 stall capability
+# SYS_USB_GUC         USB core for cbp8X
+SYS_USB_NONE           =  99
+SYS_USB_SYNOPSYS       = 0 
+SYS_USB_SYNOPSYS2      = 1 
+SYS_USB_SYNOPSYS_LAST  = 2 
+SYS_USB_GUC            = 3
+SYS_USB_GUC_LAST       = 4
+
+SYS_DEFS += SYS_USB_NONE SYS_USB_SYNOPSYS SYS_USB_SYNOPSYS2  SYS_USB_SYNOPSYS_LAST SYS_USB_GUC SYS_USB_GUC_LAST
+
+ifneq ($(strip $(SYS_OPTION_USB)),)
+  SYS_DEFS += SYS_OPTION_USB
+endif
+
+
+# SYS_OPTION_IPC_DEV
+#
+# Define the device type of AP-CBP, use for flashless support
+# SYS_IPC_DEV_NONE   No IPC device  
+# SYS_IPC_DEV_USB    USB IPC type
+# SYS_IPC_DEV_DPRAM  DPRAM IPC type
+# SYS_IPC_DEV_SDIO   SDIO IPC type
+# SYS_IPC_DEV_SPI    SPI IPC type
+# SYS_IPC_DEV_CCIF   CCIF IPC type
+SYS_IPC_DEV_NONE     =  99
+SYS_IPC_DEV_USB      = 2 
+SYS_IPC_DEV_DPRAM    = 3 
+SYS_IPC_DEV_SDIO     = 4 
+SYS_IPC_DEV_SPI      = 5
+SYS_IPC_DEV_CCIF     = 6
+
+SYS_DEFS += SYS_IPC_DEV_NONE SYS_IPC_DEV_USB SYS_IPC_DEV_DPRAM SYS_IPC_DEV_SDIO SYS_IPC_DEV_SPI SYS_IPC_DEV_CCIF
+
+ifneq ($(strip $(SYS_OPTION_IPC_DEV)),)
+  SYS_DEFS += SYS_OPTION_IPC_DEV
+endif
+
+# SYS_OPTION_TCXO_CONFIG = $(SYS_OPTION_TCXO_??)
+#
+# This define is used to identify the TCXO configuration definition
+#-----------------------------------------------------------------------------
+# SYS_OPTION_TCXO_CONFIG                TCXO configuration definition
+#
+#      SYS_OPTION_TCXO_SINGLE              single TCXO
+#      SYS_OPTION_TCXO_DBL_MAIN            double TCXO - main OSC supplies the ARM reference clock
+#      SYS_OPTION_TCXO_DBL_AUX             double TCXO - aux OSC supplies the ARM reference clock
+
+SYS_OPTION_TCXO_SINGLE     = 0
+SYS_OPTION_TCXO_DBL_MAIN   = 1
+SYS_OPTION_TCXO_DBL_AUX    = 2
+
+SYS_DEFS += SYS_OPTION_TCXO_SINGLE SYS_OPTION_TCXO_DBL_MAIN SYS_OPTION_TCXO_DBL_AUX
+
+ifneq ($(strip $(SYS_OPTION_TCXO_CONFIG)),)
+  SYS_DEFS += SYS_OPTION_TCXO_CONFIG
+endif
+
+# SYS_OPTION_HDET_HW = $(SYS_HDET_??)
+#
+# This define is used to set the Target power detector option
+#-----------------------------------------------------------------------------
+SYS_HDET_LMV221       =  0
+SYS_HDET_ADL550       =  1
+SYS_HDET_DISCRETE     =  2
+
+SYS_DEFS += SYS_HDET_LMV221 SYS_HDET_ADL550 SYS_HDET_DISCRETE
+
+ifneq ($(strip $(SYS_OPTION_HDET_HW)),)
+  SYS_DEFS += SYS_OPTION_HDET_HW
+endif
+
+C2K_COM_DEFS += $(foreach nm, $(SYS_DEFS),$(nm)=$($(nm)))
+
+################################################################################
+#  
+#      System Options definitions 
+#
+################################################################################
+
+C2K_COM_DEFS += SYS_TARGET_HW
+C2K_COM_DEFS += SYS_INVERTER_UART1
+C2K_COM_DEFS += SYS_OPTION_INTERNAL_PLL
+C2K_COM_DEFS += SYS_OPTION_OSCEN_ACTIVE_LOW
+C2K_COM_DEFS += SYS_OPTION_SMS_ENGINE
+C2K_COM_DEFS += SYS_OPTION_OTASP
+C2K_COM_DEFS += SYS_OPTION_RLP
+C2K_COM_DEFS += SYS_OPTION_HL
+C2K_COM_DEFS += EVL1_RXAGC_HISTORY_REC_EN
+ 
+# SYS_OPTION_TX_TAS_ENABLE :Select the better antenna for TX , for JADE platform
+# MTK_DEV_C2K_TAS:Select the better antenna for c2k voice call ,  for Denali paltform
+ifeq ($(strip $(MODIS_CONFIG)),FALSE)
+  C2K_COM_DEFS += SYS_OPTION_TX_TAS_ENABLE
+endif 
+
+ifeq ($(strip $(TAS_OFF_WHEN_NO_SIM)), TRUE)
+  C2K_COM_DEFS += __TAS_OFF_WHEN_NO_SIM__
+endif
+
+ifeq ($(strip $(TAS_ANTENNA_IDX_ON_TEST_SIM)), TRUE)
+  C2K_COM_DEFS += __TAS_ANTENNA_IDX_ON_TEST_SIM__
+endif
+
+ifeq ($(strip $(GET_META_MODE_OFF)),TRUE)
+  C2K_COM_DEFS += MTK_META_MODE_OFF
+endif
+
+ifdef C2K_BC0_SUBCLASS_3_ENABLE
+  ifeq ($(strip $(C2K_BC0_SUBCLASS_3_ENABLE)), TRUE)
+    C2K_COM_DEFS += __C2K_BC0_SUBCLASS_3_ENABLE__
+  endif
+endif
+
+ifndef AGPS_SYNC
+  AGPS_SYNC = TRUE         # Default AGPS On
+endif
+
+ifeq ($(strip $(AGPS_SYNC)),TRUE)
+  C2K_COM_DEFS += MTK_GPS_SYNC_DEV
+endif
+
+ifneq "$(USE_DMU)" "FALSE"
+  C2K_COM_DEFS += SYS_OPTION_MIP
+else 
+  ifneq ($(findstring VERIZON_EXTENSIONS,$(SO_EXTRA)),)
+    C2K_COM_DEFS += SYS_OPTION_MIP
+    C2K_COM_DEFS += SYS_OPTION_MIP_DMU
+  else 
+    ifneq "$(USE_MOIP)" "FALSE"
+      C2K_COM_DEFS +=  SYS_OPTION_MIP
+    endif
+  endif
+endif
+
+ifeq "$(USE_THROTTLING)" "TRUE"
+  C2K_COM_DEFS += SYS_OPTION_HSPD_THROTTLING
+else
+  ifneq ($(findstring VERIZON_EXTENSIONS,$(SO_EXTRA)),)
+    C2K_COM_DEFS += SYS_OPTION_HSPD_THROTTLING
+  endif
+endif
+
+ifeq "$(USE_FALLBACK)" "TRUE"
+  C2K_COM_DEFS += SYS_OPTION_HSPD_FALLBACK
+else
+  ifneq ($(findstring VERIZON_EXTENSIONS,$(SO_EXTRA)),)
+    C2K_COM_DEFS += SYS_OPTION_HSPD_FALLBACK
+  endif
+endif
+
+ifeq "$(USE_IRAT_MMC)" "TRUE"
+  C2K_COM_DEFS += SYS_OPTION_IRAT_MMC
+endif
+
+C2K_COM_DEFS += SYS_OPTION_DATA_RAM_INUSE
+
+ifneq "$(NO_SCH_RAM)" "TRUE"
+  C2K_COM_DEFS += SYS_OPTION_SCH_RAM_INUSE
+endif
+
+C2K_COM_DEFS += SYS_OPTION_NTWKRMPKT_RAM_INUSE
+
+ifneq "$(NO_AUTH)" "TRUE"
+  C2K_COM_DEFS += SYS_OPTION_AUTHENTICATION
+endif
+
+C2K_COM_DEFS += SYS_OPTION_DUAL_NAM
+
+SO_UIM = SYS_OPTION_RUIM
+ifeq "$(USE_RUIM)" "TRUE"
+  ifeq "$(USE_REMOTE_UICC)" "TRUE"
+    SO_UIM += SYS_OPTION_REMOTE_UICC
+  endif
+  ifeq "$(USE_LOCAL_UICC)" "TRUE"
+    SO_UIM += SYS_OPTION_LOCAL_UICC
+  endif
+  ifeq "$(USE_UTK)" "TRUE"
+    SO_UIM += FEATURE_UTK FEATURE_CALL_CONTROL FEATURE_BIP FEATURE_EVENT_DOWNLOAD
+  endif
+  ifeq "$(USE_BIP)" "TRUE"
+    SO_UIM += FEATURE_BIP
+  endif
+
+  C2K_COM_DEFS += $(SO_UIM)
+endif
+
+C2K_COM_DEFS += SYS_OPTION_ENHANCEDAT
+
+C2K_COM_DEFS += SYS_OPTION_RPC
+C2K_COM_DEFS += SYS_OPTION_GPS_RPC
+ifeq "$(USE_IRAT_RPC)" "TRUE"
+  C2K_COM_DEFS += SYS_OPTION_RPC
+  C2K_COM_DEFS += SYS_OPTION_IRAT_RPC
+endif
+
+ifneq "$(NO_GPS)" "TRUE"
+  C2K_COM_DEFS += SYS_OPTION_GPS_SIMULTANEOUS
+endif
+
+C2K_COM_DEFS += SYS_OPTION_DIGITAL_RX_AGC
+
+C2K_COM_DEFS += SYS_OPTION_PA2_CTRL
+#
+# Setup Default Rx Hysterisis compiler option is used
+#
+ifneq "$(USE_DEFAULT_RX_HYSTERESIS)" "FALSE"
+  C2K_COM_DEFS += DEFAULT_RX_HYSTERESIS
+endif
+
+ifeq "$(USE_PC_VOICE)" "TRUE"
+  C2K_COM_DEFS += SYS_OPTION_PC_VOICE
+endif
+
+C2K_COM_DEFS += SYS_OPTION_ATCMD_CH SYS_OPTION_ATCMD_CH_2 SYS_OPTION_ATCMD_CH_3 SYS_OPTION_ATCMD_CH_4
+
+C2K_COM_DEFS += SYS_OPTION_ERI
+
+#
+#EHRPD option
+#
+C2K_COM_DEFS += CBP7_EHRPD
+
+#
+#IPV6 option
+#
+C2K_COM_DEFS += CBP7_IPV6
+
+C2K_COM_DEFS += SYS_OPTION_NO_IPV6_STACK
+
+#
+# Setup the compiler/assembler option SYS_OPTION_EVD0 (for 7.0x targets)
+# based on the USE_1X_ONLY command line option
+#
+ifeq "$(USE_1X_ONLY)" "TRUE"
+else
+  C2K_COM_DEFS += SYS_OPTION_EVDO
+endif
+
+
+C2K_COM_DEFS += SYS_OPTION_EXT_AUDIO_CODEC
+
+ifeq "$(XCO_TYPE)" "DCXO"
+  C2K_COM_DEFS += SYS_OPTION_USE_DCXO
+endif
+
+ifeq "$(NO_PPPHA_ENC_ENH)" "TRUE"
+else
+  C2K_COM_DEFS += SYS_OPTION_PPPHA_ENC_ENH
+endif
+
+C2K_COM_DEFS += SYS_OPTION_AUX_ADC_POLL
+C2K_COM_DEFS += SYS_OPTION_WAIT_FOR_BOOT_TO_LOADER
+C2K_COM_DEFS += SYS_OPTION_HWD_PROFILE
+C2K_COM_DEFS += HWD_DBG_TXDAC_DIRECT
+
+C2K_COM_DEFS += HWD_FEATURE_PA_SPDM_CTRL
+
+C2K_COM_DEFS += FEATURE_PS_NOT_TURNON_AUTO
+
+C2K_COM_DEFS += SYS_OPTION_GSM_PROTECTION
+
+C2K_COM_DEFS += $(SO_EXTRA)
+
+C2K_COM_DEFS += SYS_DEBUG_FAULT_FILE_INFO
+
+ifeq ($(strip $(TX_SWTP_ENABLE)),TRUE)
+  C2K_COM_DEFS += __TX_POWER_OFFSET_SUPPORT__
+endif
+
+
+################ UI Feature: ################
+ifeq "$(CONFIG_UI)" "NONE"
+  C2K_COM_DEFS += SYS_OPTION_NO_UI
+  C2K_COM_DEFS += FEATURE_LCD_SIZE_320x240
+endif
+
+ifeq "$(SUPPORT_RTRE)" "TRUE"
+  C2K_COM_DEFS += FEATURE_RTRE
+endif
+
+ifeq "$(SUPPORT_UTK)" "TRUE"
+  C2K_COM_DEFS += FEATURE_UTK
+endif
+
+ifeq "$(SUPPORT_SMS_AUTO_REGISTER)" "TRUE"
+  ifeq "$(USE_RUIM)" "TRUE"
+    C2K_COM_DEFS += FEATURE_SMS_AUTO_REGISTER
+  endif
+endif
+
+ifeq "$(SUPPORT_ESN_TRACK)" "TRUE"
+  ifeq "$(USE_RUIM)" "TRUE"
+    C2K_COM_DEFS += FEATURE_ESN_TRACK
+  endif
+endif
+
+ifeq "$(SUPPORT_ESN_TRACK_TATA)" "TRUE"
+  ifeq "$(USE_RUIM)" "TRUE"
+    C2K_COM_DEFS += FEATURE_ESN_TRACK_TATA
+  endif
+endif
+
+ifeq "$(SUPPORT_LSM)" "TRUE"
+  C2K_COM_DEFS += FEATURE_LSM
+endif
+
+ifeq "$(SUPPORT_SMARTMSG)" "TRUE"
+  ifeq "$(SUPPORT_VCARD)" "TRUE"
+    C2K_COM_DEFS += FEATURE_SMARTMSG 
+  else
+    ifeq "$(SUPPORT_VCALENDAR)" "TRUE"
+      C2K_COM_DEFS += FEATURE_SMARTMSG 
+    endif
+  endif
+endif
+
+ifeq "$(SUPPORT_SMS_CHAT)" "TRUE"
+  C2K_COM_DEFS += FEATURE_SMS_CHAT
+endif
+
+ifeq "$(SUPPORT_VOICE_MAIL)" "TRUE"
+  C2K_COM_DEFS += FEATURE_VOICE_MAIL
+endif
+
+ifeq "$(SUPPORT_UNITTEST)" "TRUE"
+  C2K_COM_DEFS += FEATURE_UNITTEST
+endif
+
+ifeq "$(SUPPORT_MMS)" "TRUE"
+  C2K_COM_DEFS += FEATURE_MMS 
+endif
+ifeq "$(SUPPORT_WAP_TYPE)" "VAAWEB"
+  C2K_COM_DEFS += FEATURE_VAAWEB  
+endif
+ifeq "$(SUPPORT_QCLX)" "TRUE"
+  C2K_COM_DEFS += FEATURE_APP_QCLX
+endif
+ifeq "$(SUPPORT_WAP_MMS_TYPE)" "JUPITOR"
+  C2K_COM_DEFS += FEATURE_JUPITOR  
+endif
+ifeq "$(SUPPORT_MMS_TYPE)" "VAAMMS"
+  C2K_COM_DEFS += FEATURE_VAAMMS 
+endif
+ifeq "$(SUPPORT_VOICEMEMO)" "TRUE"
+  C2K_COM_DEFS += FEATURE_VOICEMEMO
+endif
+
+################ Driver Feature: ################
+ifeq "$(RTC_TYPE)" "RTC_NONE"
+  C2K_COM_DEFS += RTC_NONE
+endif
+
+ifeq "$(SUPPORT_DUMP_FAULT_LOG)" "TRUE"
+  C2K_COM_DEFS += SYS_EXE_FAULT_DATA_DUMP
+endif
+
+ifeq "$(SUPPORT_GFX)" "TRUE"
+  C2K_COM_DEFS += FEATURE_GFX_2D_BITBILT
+endif
+
+################################################################################
+#  
+#      MTK Main Definitions
+#
+################################################################################
+
+#USE_MTK_CBP
+# Description:
+#   Enable MTK changes
+# Option Values:
+#   DEVELOPMENT:  Enable MTK formal and informal changes
+#   RELEASE:      Enable MTK formal changes only
+#
+
+#**************** FOR DEVELOPMENT VERSION *************************  
+USE_MTK_CBP=DEVELOPMENT
+ifeq ($(strip $(USE_MTK_CBP)),DEVELOPMENT)
+  C2K_COM_DEFS += MTK_CBP
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_OTA
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_XL2
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_PE
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_VAL
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_HLP
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_GPS
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_SMS
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_EVL1
+  C2K_COM_DEFS += MTK_DEV_OPTIMIZE_EVL1
+  C2K_COM_DEFS += MTK_DEV_HLP_OPTIMIZE_CP
+  C2K_COM_DEFS += MTK_DEV_HLP_OPTIMIZE_UP
+  C2K_COM_DEFS += MTK_DEV_TRACE_ENHANCEMENT
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_EVL2
+  C2K_COM_DEFS += MTK_DEV_OPTIMIZE_EVL2
+  C2K_COM_DEFS += MTK_DEV_OPTIMIZE_XL2
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_SLC
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_CLC
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_SS
+  C2K_COM_DEFS += MTK_DEV_ETS_ENHANCEMENT
+  C2K_COM_DEFS += MTK_DEV_OPTIMIZE_PE
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_RUP
+  C2K_COM_DEFS += MTK_DEV_OPTIMIZE_RUP
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_CSS
+  C2K_COM_DEFS += MTK_DEV_FIX_KW   
+  C2K_COM_DEFS += MTK_DEV_FIX_BUILDWARN
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_EHRPD
+  C2K_COM_DEFS += MTK_DEV_BUG_FIX_UIM
+  C2K_COM_DEFS += MTK_DEV_ENGINEER_MODE
+  C2K_COM_DEFS += MTK_DEV_FACTORY_MODE
+  C2K_COM_DEFS += MTK_DEV_HSC_SHDR
+  C2K_COM_DEFS += MTK_DEV_META_LOGGING
+  C2K_COM_DEFS += MTK_DEV_GPSONE_ON_LTE
+  #C2K_COM_DEFS += MTK_DEV_BRING_UP_DISABLE_SLOTTED_DO
+  #C2K_COM_DEFS += MTK_DEV_DUMP_REG
+
+  ##Used for workarounds in codes. disabled after all issue resolved.
+  C2K_COM_DEFS += MTK_DEV_WORKAROUND
+
+  #C2K Legacy development macro
+  C2K_COM_DEFS += MTK_DEV_93M_PREIT
+
+  ifeq ($(strip $(USE_LOG_BUFFER_SIZE_96K)),TRUE)
+    C2K_COM_DEFS += MTK_DEV_LOG_BUFFER_96K
+  endif
+
+  C2K_COM_DEFS += MTK_DEV_C2K_IRAT
+  ifeq ($(strip $(PLATFORM)),MT6735)
+    C2K_COM_DEFS += MTK_DEV_TX_POWER_RPT_SUPPORT
+  endif
+
+  C2K_COM_DEFS += MTK_DEV_C2K_SRLTE
+  ifeq ($(strip $(USE_RTB_CHECK)),TRUE)
+    C2K_COM_DEFS += MTK_DEV_C2K_SRLTE_RTB_CHECK
+  endif
+  C2K_COM_DEFS += MTK_DEV_C2K_SRLTE_L1
+  C2K_COM_DEFS += MTK_DEV_C2K_SRLTE_BASE
+  C2K_COM_DEFS += MTK_CBP_SYNC_OPTIMIZE
+
+  ifeq ($(strip $(PLATFORM)),MT6735)
+    C2K_COM_DEFS += MTK_DEV_DENALI_SRLTE_PRE_IT
+  endif
+##Enable the Function for Modem send TX Power to AP;Only enable MT6755 and follow version
+  C2K_COM_DEFS += MTK_DEV_TX_RPT_AP
+
+
+  ifeq ($(strip $(USE_ENCRYPT_VOICE)),TRUE)
+    COM_DEFS += MTK_CBP_ENCRYPT_VOICE
+  endif
+
+  C2K_COM_DEFS += MTK_DEV_MEMORY_OPT
+
+  ifeq ($(strip $(MODIS_CONFIG)),FALSE)
+    ifeq ($(strip $(SLT)),TRUE)
+      C2K_COM_DEFS += MTK_DEV_SLT
+    endif
+  endif
+
+  ifeq ($(strip $(SLT_TX)),TRUE)
+    C2K_COM_DEFS += MTK_DEV_SLT_TX
+  endif
+  
+  ifeq ($(strip $(SLT_LOGON)),TRUE)
+    C2K_COM_DEFS += MTK_DEV_SLT_LOGON
+  endif
+
+#
+# DISABLE_SLEEP option
+#
+  ifeq ($(strip $(DISABLE_SLEEP)),TRUE)
+  #  C2K_COM_DEFS += SYS_OPTION_DISABLE_SLEEP
+  endif
+endif 
+C2K_COM_DEFS += MTK_DEV_32K_LESS
+
+C2K_COM_DEFS += SYS_OPTION_MORE_AT_CHANNEL
+
+C2K_COM_DEFS += MTK_DEV_CCCI_FS
+
+#**********get version value from C2K_COM_DEFS******************
+NV_VERNO_STRING=$(filter MTK_VERNO_STRING=%,$(C2K_COM_DEFS))
+#remove '\' in string
+NV_VERNO_STRING:=$(shell echo $(shell echo $(shell echo $(shell echo $(NV_VERNO_STRING)))))
+NV_VERNO_STRING:=$(patsubst MTK_VERNO_STRING=%, %, $(NV_VERNO_STRING))
+#**********************************************************
+
+C2K_COM_DEFS += MTK_DEV_GCC_WARN_FIX
+
+ifeq ($(strip $(PMU_TYPE)),PMU_MT6328)
+  C2K_COM_DEFS += PMU_MT6328
+else
+  C2K_COM_DEFS += PMU_MT6351
+endif
+
+# UIM DISABLED
+ifeq ($(strip $(UIM_DISABLE)),TRUE)
+  C2K_COM_DEFS += MTK_PLT_ON_PC_UIM_DISABLE
+endif
+
+# MODIS Compile Options
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  C2K_COM_DEFS += MTK_PLT_ON_PC
+  C2K_COM_DEFS += BOARD_CBP80_FLASH
+  C2K_COM_DEFS += MTK_PLT_ON_PC_CODEGEN
+
+  # Default UIM DISABLED in MODIS
+  ifndef UIM_DISABLE
+    C2K_COM_DEFS += MTK_PLT_ON_PC_UIM_DISABLE
+  else
+    ifeq ($(strip $(UIM_DISABLE)),TRUE)
+      C2K_COM_DEFS += MTK_PLT_ON_PC_UIM_DISABLE
+    endif
+  endif
+
+  ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+    C2K_COM_DEFS += MTK_PLT_ON_PC_IT
+    C2K_COM_DEFS += C2K_UESIM_ON_PC_IT
+    # CL1 HSC UESIM STUB macro
+    C2K_COM_DEFS += MTK_DEV_HSC_UT_STUB
+  else
+    C2K_COM_DEFS += MTK_PLT_ON_PC_UT
+    C2K_COM_DEFS += MTK_DEV_RTM_RLSI_OPTIMIZE
+    # CT: PSW UT cases only pass on CT carrier
+    C2K_COM_DEFS += CHINATELECOM_EXTENSIONS
+  endif
+else #IF !MODIS_CONFIG
+  C2K_COM_DEFS += MTK_DEV_SHARED_AFC_TEST
+
+ # for LWCTG3_MODEM flavor
+  ifeq ($(strip $(ORIGINAL_FLAVOR)),LWCTG3_MODEM)
+    C2K_COM_DEFS += SRLTE_RSVA_STUB
+    C2K_COM_DEFS += MTK_C2K_L1_TST
+  # C2K_COM_DEFS += MTK_EVL1_FLBSRP_REGDUMP
+#   C2K_COM_DEFS += MTK_EVL1_SCH_REGDUMP
+#   C2K_COM_DEFS += MTK_EVL1_RLBSRP_REGDUMP
+ # C2K_COM_DEFS += MTK_1XL1_FLBSRP_REGDUMP
+#  C2K_COM_DEFS += MTK_1XL1_SCH_REGDUMP
+#  C2K_COM_DEFS += MTK_1XL1_RLBSRP_REGDUMP  
+    C2K_COM_DEFS += C2K_L4_AT_CMD
+  endif
+
+ # C2K DDL Workaround
+  ifneq ($(findstring LWCTG3,$(ORIGINAL_FLAVOR)),)
+    C2K_COM_DEFS += C2K_EVL1_BRINGUP_WORKAROUND
+    ifeq ($(strip $(MODIS_CONFIG)),FALSE)
+      C2K_COM_DEFS += C2K_FIRST_BOOT_EN
+    endif
+  endif
+
+  ifeq ($(strip $(ORIGINAL_PROJECT_NAME)),MT6763_FPGA)
+    ifeq ($(strip $(ORIGINAL_FLAVOR)),CL1S)
+      C2K_COM_DEFS += MTK_C2K_L1_TST
+  #   C2K_COM_DEFS += MTK_EVL1_FLBSRP_REGDUMP
+#     C2K_COM_DEFS += MTK_EVL1_SCH_REGDUMP
+#     C2K_COM_DEFS += MTK_EVL1_RLBSRP_REGDUMP
+  #  C2K_COM_DEFS += MTK_1XL1_FLBSRP_REGDUMP
+#     C2K_COM_DEFS += MTK_1XL1_SCH_REGDUMP
+#     C2K_COM_DEFS += MTK_1XL1_RLBSRP_REGDUMP  
+    endif
+   #Enable LWCTG3 options for project MT6763_FPGA(LWCTG)
+    ifeq ($(strip $(ORIGINAL_FLAVOR)),LWCTG)
+      C2K_COM_DEFS += SRLTE_RSVA_STUB
+      C2K_COM_DEFS += MTK_C2K_L1_TST
+ #   C2K_COM_DEFS += MTK_EVL1_FLBSRP_REGDUMP
+#    C2K_COM_DEFS += MTK_EVL1_SCH_REGDUMP
+#    C2K_COM_DEFS += MTK_EVL1_RLBSRP_REGDUMP
+  # C2K_COM_DEFS += MTK_1XL1_FLBSRP_REGDUMP
+#    C2K_COM_DEFS += MTK_1XL1_SCH_REGDUMP
+#    C2K_COM_DEFS += MTK_1XL1_RLBSRP_REGDUMP  
+    endif
+  endif #IF MT6763_FPGA
+
+  ifeq ($(strip $(ORIGINAL_PROJECT_NAME)),MT6297_EVB)
+  # for NLWCTG_MODEM flavor
+    ifeq ($(strip $(ORIGINAL_FLAVOR)),NLWCTG_MODEM)
+      #C2K_COM_DEFS += SRLTE_RSVA_STUB
+      C2K_COM_DEFS += MTK_C2K_L1_TST
+      #C2K_COM_DEFS += MTK_PLT_ON_PC_UIM_DISABLE
+      C2K_COM_DEFS += MTK_EVL1_FLBSRP_REGDUMP
+      C2K_COM_DEFS += MTK_EVL1_SCH_REGDUMP
+      C2K_COM_DEFS += MTK_EVL1_RLBSRP_REGDUMP
+      C2K_COM_DEFS += MTK_1XL1_FLBSRP_REGDUMP
+      C2K_COM_DEFS += MTK_1XL1_SCH_REGDUMP
+      C2K_COM_DEFS += MTK_1XL1_RLBSRP_REGDUMP  
+      C2K_COM_DEFS += C2K_L4_AT_CMD
+    endif  #IF NLWCTG_MODEM
+
+  # C2K DDL Workaround
+    ifneq ($(findstring NLWCTG,$(ORIGINAL_FLAVOR)),)
+      C2K_COM_DEFS += C2K_EVL1_BRINGUP_WORKAROUND
+      ifeq ($(strip $(MODIS_CONFIG)),FALSE)
+        C2K_COM_DEFS += C2K_FIRST_BOOT_EN
+      endif
+    endif
+  endif #IF MT6297_EVB
+  
+  #Enable Modem Only options for project MT6297_FPGA
+  ifeq ($(strip $(ORIGINAL_PROJECT_NAME)),MT6297_FPGA)
+    C2K_COM_DEFS += SRLTE_RSVA_STUB
+    C2K_COM_DEFS += MTK_C2K_L1_TST
+    C2K_COM_DEFS += MTK_PLT_ON_PC_UIM_DISABLE
+    C2K_COM_DEFS += MTK_EVL1_FLBSRP_REGDUMP
+    C2K_COM_DEFS += MTK_EVL1_SCH_REGDUMP
+    C2K_COM_DEFS += MTK_EVL1_RLBSRP_REGDUMP
+    C2K_COM_DEFS += MTK_1XL1_FLBSRP_REGDUMP
+    C2K_COM_DEFS += MTK_1XL1_SCH_REGDUMP
+    C2K_COM_DEFS += MTK_1XL1_RLBSRP_REGDUMP  
+  endif #IF MT6297_FPGA
+endif #IF MODIS_CONFIG
+
+# if L1SDISABLE flavor
+ifneq ($(findstring L1DISABLE,$(ORIGINAL_FLAVOR)),)
+  # Use this complie option in modem_2g3g_task_config.h
+  # to disabel the task entry.
+  C2K_COM_DEFS += __CL1_TASK_DISABLE__
+  C2K_COM_DEFS += __C2K_PS_TASK_DISABLE__
+endif
+
+## if L1S flavor
+#ifneq ($(findstring L1S,$(ORIGINAL_FLAVOR)),)
+## Use this complie option in modem_2g3g_task_config.h
+## to disabel the task entry.
+#  #C2K_COM_DEFS += __C2K_PS_TASK_DISABLE__
+#  C2K_COM_DEFS += __C2K_L1S__
+## UIM DISABLED in L1S load
+#  C2K_COM_DEFS += MTK_PLT_ON_PC_UIM_DISABLE
+#endif
+
+# if SLT flavor
+ifneq ($(findstring SLT,$(IC_TEST_TYPE)),)
+  C2K_COM_DEFS += MTK_DEV_SLT
+  C2K_COM_DEFS += MTK_DEV_SLT_TX
+  C2K_COM_DEFS += MTK_PLT_ON_PC_UIM_DISABLE
+  C2K_COM_DEFS += MTK_DEV_SLT_ON_RF_GENERATOR
+#  C2K_COM_DEFS += SRLTE_RSVA_STUB
+endif
+
+ifeq ($(strip $(GEMINI)),FALSE)
+# GEMINI is set to FASLE in L1S project
+  C2K_COM_DEFS += SRLTE_RSVA_STUB
+endif
+# SCC PE Interface OPTIMIZE
+C2K_COM_DEFS += MTK_CBP_REL_OPTIMIZE
+C2K_COM_DEFS += RCP_RI_HRT_DEV
+
+# C2K DHL trace
+COMP_TRACE_DEFS_MODEM += protocol/l4_c2k/val/val_dhl_trace_mod_cval_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/l2_c2k/lmd/lmd_dhl_trace_mod_lmd_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/agps/c2k/lec/lec_dhl_trace_mod_clec_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/l2_c2k/rcp/rcp_dhl_trace_mod_evrcp_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/l2_c2k/rlp/xrlp_dhl_trace_mod_xrlp_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/l2_c2k/fcp/fcp_dhl_trace_mod_evfcp_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/as_c2k/clc/clc_dhl_trace_mod_evclc_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/as_c2k/slc/slc_dhl_trace_mod_evslc_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/as_c2k/sec/sec_dhl_trace_mod_csec_utmd.json 
+COMP_TRACE_DEFS_MODEM += interface/protocol/l2_c2k/common/hlp_dhl_trace_mod_chlp_utmd.json 
+COMP_TRACE_DEFS_MODEM += interface/protocol/as_c2k/1xrtt/psw_dhl_trace_mod_cpsw_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/as_c2k/psw/psws_dhl_trace_mod_cpsw_s_utmd.json 
+COMP_TRACE_DEFS_MODEM += l1/cl1/hsc/hsc_dhl_trace_mod_chsc_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/as_c2k/clc/clc_dhl_trace_mod_evclc_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/as_c2k/slc/slc_dhl_trace_mod_evslc_utmd.json
+
+ifeq ($(strip $(USE_MTK_CBP)),DEVELOPMENT)
+  ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+    ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+      COMP_TRACE_DEFS_MODEM += l1/cl1/stub/cstub_dhl_trace_mod_cstub_utmd.json 
+    endif
+  endif
+endif
+COMP_TRACE_DEFS_MODEM += protocol/nas_c2k/css/css_dhl_trace_mod_css_utmd.json 
+COMP_TRACE_DEFS_MODEM += l1/cl1/l1d/c2k_l1d_dhl_trace_mod_l1d_mdm_utmd.json 
+COMP_TRACE_DEFS_MODEM += l1/cl1/rmc/rmc_dhl_trace_mod_evrmc_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/l4_c2k/uim/cuim_dhl_trace_mod_uim_proxy_utmd.json protocol/l4_c2k/uim/cuim_dhl_trace_mod_uim_utmd.json 
+COMP_TRACE_DEFS_MODEM += l1/cl1/atpal/xl1/atpal_xl1_dhl_trace_mod_xl1_utmd.json 
+COMP_TRACE_DEFS_MODEM += l1/cl1/atpal/evl1/atpal_evl1_dhl_trace_mod_evl1_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/l2_c2k/common/cpbuf_dhl_trace_mod_evcp_utmd.json 
+# C2K BRINGUP WORK AROUND
+C2K_COM_DEFS += C2K_EVL1_BRINGUP_WORKAROUND
+#  C2K_COM_DEFS += MTK_EVL1_FLBSRP_REGDUMP
+#  C2K_COM_DEFS += MTK_EVL1_RLBSRP_REGDUMP
+#  C2K_COM_DEFS += MTK_1XL1_FLBSRP_REGDUMP  
+#  C2K_COM_DEFS += MTK_1XL1_RLBSRP_REGDUMP  
+COM_DEFS += $(C2K_COM_DEFS)
diff --git a/mcu/make/common/rule_def/commincdirs_def.mak b/mcu/make/common/rule_def/commincdirs_def.mak
new file mode 100644
index 0000000..5e5d6f4
--- /dev/null
+++ b/mcu/make/common/rule_def/commincdirs_def.mak
@@ -0,0 +1,363 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+CUSTOM_FLD_MAPPING = $(if $($(subst /,_,$(patsubst %/,%,$(subst //,/,$(subst \,/,$(call lc, $(1))))))), \
+                     $($(subst /,_,$(patsubst %/,%,$(subst //,/,$(subst \,/,$(call lc, $(1))))))),\
+                     $(if $(wildcard $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/$(strip $(CUSTOM_FLAVOR))),\
+                     $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/$(strip $(CUSTOM_FLAVOR)),\
+                     $(if $(wildcard $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/DEFAULT), \
+                     $(subst //,/,$(subst \,/,$(call lc, $(1))))/$(BOARD_VER)/DEFAULT,)))
+
+# *************************************************************************
+# COMMON
+# *************************************************************************
+COMMINCDIRS += $(UNIVERSAL_COMMON)/interface/modem/external
+COMMINCDIRS += $(UNIVERSAL_COMMON)/interface/modem/public
+COMMINCDIRS += $(UNIVERSAL_COMMON)/interface/service/dsp_control
+COMMINCDIRS += $(UNIVERSAL_COMMON)/interface/driver
+COMMINCDIRS += $(UNIVERSAL_COMMON)/interface/driver/sys_drv/cuif
+COMMINCDIRS += $(UNIVERSAL_COMMON)/interface/driver/sys_drv/cmif
+COMMINCDIRS += driver/connectivity/usb_driver/src
+COMMINCDIRS += driver/devdrv/drv_def
+COMMINCDIRS += driver/devdrv/pcmon/inc/$(MD_VER_FOLDER)
+COMMINCDIRS += driver/audio/med/audio/include
+COMMINCDIRS += driver/audio/med/common/include
+COMMINCDIRS += interface/driver/devdrv/mdap_interface
+COMMINCDIRS += interface/driver/devdrv/pdn
+COMMINCDIRS += interface/driver/devdrv/pll
+COMMINCDIRS += driver/storage/flash/fdm/inc
+COMMINCDIRS += driver/storage/flash/mtd/inc
+COMMINCDIRS += driver/sys_drv/pmu/inc
+COMMINCDIRS += interface/common
+COMMINCDIRS += interface/driver/drv_def
+COMMINCDIRS += interface/driver/audio
+COMMINCDIRS += interface/driver/che
+COMMINCDIRS += interface/driver/cipher/include
+COMMINCDIRS += interface/driver/cmux
+COMMINCDIRS += interface/driver/connectivity/sdio_device
+COMMINCDIRS += interface/driver/connectivity/usb_driver
+COMMINCDIRS += interface/driver/devdrv/asm
+COMMINCDIRS += interface/driver/devdrv/busmon/$(MD_VER_FOLDER)
+COMMINCDIRS += interface/driver/devdrv/cirq/$(MD_VER_FOLDER)
+COMMINCDIRS += interface/driver/devdrv/cpu
+COMMINCDIRS += interface/driver/devdrv/dcm
+COMMINCDIRS += interface/driver/devdrv/eint
+COMMINCDIRS += interface/driver/devdrv/emi
+COMMINCDIRS += interface/driver/devdrv/mdipc
+COMMINCDIRS += interface/driver/devdrv/pcmon
+COMMINCDIRS += interface/driver/devdrv/rstctl
+COMMINCDIRS += interface/driver/devdrv/us_counter
+COMMINCDIRS += interface/driver/drv_sw_def
+COMMINCDIRS += interface/driver/drvtest
+COMMINCDIRS += interface/driver/hwdrv
+COMMINCDIRS += interface/driver/md_drv
+COMMINCDIRS += interface/driver/peripheral
+COMMINCDIRS += interface/driver/regbase
+COMMINCDIRS += interface/driver/sleep_drv
+COMMINCDIRS += interface/driver/dvfs_drv/$(MD_VER_FOLDER)
+COMMINCDIRS += interface/driver/storage
+COMMINCDIRS += interface/driver/storage/mc
+COMMINCDIRS += interface/driver/storage/sim
+COMMINCDIRS += interface/driver/sys_drv
+COMMINCDIRS += interface/middleware/meta
+COMMINCDIRS += interface/l1/cl1/rfd
+COMMINCDIRS += interface/service/icd
+COMMINCDIRS += interface/service/em
+COMMINCDIRS += interface/service/mtf
+COMMINCDIRS += interface/protocol/general
+COMMINCDIRS += interface/protocol/3g/csr
+COMMINCDIRS += interface/l1/ul1/external
+COMMINCDIRS += interface/l1/gl1/external
+COMMINCDIRS += interface/l1/el1/external
+COMMINCDIRS += interface/l1/nl1/external
+COMMINCDIRS += interface/l1/nl1/external/5g
+COMMINCDIRS += interface/l1/nl1/external/4g
+COMMINCDIRS += interface/l1/mml1/external
+COMMINCDIRS += interface/l1/mml1/external/mml1_rf/mmrf_util
+COMMINCDIRS += interface/l1/mml1/external/mml1_cdf/inc/common
+COMMINCDIRS += interface/l1/mml1/external/mml1_rf/mmrf_common
+COMMINCDIRS += interface/l1/mml1/external/mml1_cdf/inc/device_drivers_fe
+COMMINCDIRS += interface/l1/mml1/external/mml1_cdf/inc/device_drivers_rf
+COMMINCDIRS += interface/l1/mml1/external/mml1_cdf/inc/sku_mgr
+COMMINCDIRS += interface/l1/mml1/external/mml1_etdpd
+COMMINCDIRS += interface/l1/tl1
+COMMINCDIRS += interface/protocol/l4
+COMMINCDIRS += interface/protocol/sim
+COMMINCDIRS += interface/sap
+COMMINCDIRS += interface/sap/drv
+COMMINCDIRS += interface/sap/md
+COMMINCDIRS += interface/sap/mw
+COMMINCDIRS += interface/sap/svc
+COMMINCDIRS += interface/service/asn1_common
+COMMINCDIRS += interface/service/config
+COMMINCDIRS += interface/service/config/kal_config
+COMMINCDIRS += interface/service/event_info
+COMMINCDIRS += interface/service/wlc
+COMMINCDIRS += interface/protocol/l2_utility/flc2_v2
+ifeq ($(strip $(FCS_SUPPORT)),TRUE)
+COMMINCDIRS += interface/service/fcs
+endif
+COMMINCDIRS += interface/service/fota
+COMMINCDIRS += interface/service/fs
+COMMINCDIRS += interface/service/fsm
+COMMINCDIRS += interface/service/kal
+COMMINCDIRS += interface/service/mcf
+COMMINCDIRS += interface/service/nvram
+COMMINCDIRS += interface/service/qmu_bm
+COMMINCDIRS += interface/service/sst
+COMMINCDIRS += interface/service/stacklib
+COMMINCDIRS += interface/service/sys_svc
+COMMINCDIRS += interface/service/tcpip
+COMMINCDIRS += interface/service/nal
+COMMINCDIRS += interface/service/ipsec
+COMMINCDIRS += interface/service/crypto
+COMMINCDIRS += interface/service/dns
+COMMINCDIRS += interface/service/ethsvc
+
+COMMINCDIRS += interface/driver/devdrv/digrf_platform
+ifneq ($(filter __NAL_TEST__, $(strip $(MODULE_DEFS))),)
+COMMINCDIRS += interface/service/naltp
+endif
+COMMINCDIRS += interface/protocol/l4_c2k
+COMMINCDIRS += interface/protocol/general
+COMMINCDIRS += interface/protocol/bip
+COMMINCDIRS += interface/protocol/xcap
+COMMINCDIRS += interface/service/libroxml
+COMMINCDIRS += interface/protocol/sase
+
+ifneq ($(filter __DHL_V2_ENABLE__,$(COM_DEFS)),) # DHL2.0
+  COMMINCDIRS += interface/service/dhl/v2
+else # DHL1.0
+  COMMINCDIRS += interface/service/dhl/v1
+endif
+
+ifneq ($(filter __DHL_V2_ENABLE__,$(COM_DEFS)),) # DHL2.0
+  COMMINCDIRS += interface/service/pmc/icd_v2
+else # DHL1.0
+  COMMINCDIRS += interface/service/pmc/icd_v1
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)),MT6297P)
+  COMMINCDIRS += interface/driver/devdrv/gdma/md97
+endif
+ifeq ($(strip $(MTK_MODEM_ARCH)),MT6297)
+  COMMINCDIRS += interface/driver/devdrv/gdma/md97
+  COMMINCDIRS += $(UNIVERSAL_COMMON)/interface/modem/mt6297/common/nr/external/custom
+  COMMINCDIRS += $(UNIVERSAL_COMMON)/interface/modem/mt6297/common/nr/external/5g
+endif
+ifeq ($(strip $(MTK_MODEM_ARCH)),MT6295)
+  COMMINCDIRS += interface/driver/devdrv/gdma/md95
+endif
+ifeq ($(strip $(MTK_MODEM_ARCH)),MT6293)
+  COMMINCDIRS += interface/driver/devdrv/gdma/md93
+endif
+
+ifeq ($(strip $(RTOS)),THREADX)
+COMMINCDIRS += ./service/kal/threadx/include
+endif
+
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifneq ($(ORIGINAL_FLAVOR),BASIC_HIF)
+    ifeq ($(strip $(KPALV_SUPPORT)),TRUE)
+      COMMINCDIRS += interface/middleware/kpalv
+    endif
+  endif
+endif
+
+#fdr_reorg
+COMMINCDIRS += interface/protocol/as_c2k/common \
+               interface/service/sbp \
+               custom/protocol/common/ps
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+COMMINCDIRS += interface/driver/dpcopro
+COMMINCDIRS += $(UNIVERSAL_COMMON)/interface/modem
+endif
+
+COMMINCDIRS += interface/protocol/inet_protocols/http_tls/http/include
+COMMINCDIRS += interface/protocol/inet_protocols/http_tls/security
+
+COMMINCDIRS += $(call CUSTOM_FLD_MAPPING,./custom/modem/ps)
+COMMINCDIRS += custom/driver/common
+COMMINCDIRS += custom/middleware/common
+COMMINCDIRS += custom/modem/common
+COMMINCDIRS += custom/protocol/common/ps
+COMMINCDIRS += custom/service/flc2
+COMMINCDIRS += custom/service/mcf
+COMMINCDIRS += custom/service/nvram
+COMMINCDIRS += interface/middleware/general
+COMMINCDIRS += interface/middleware/media
+COMMINCDIRS += interface/protocol/mcd
+COMMINCDIRS += interface/protocol/nas_multimode/upcm
+COMMINCDIRS += interface/protocol/dispatcher
+
+ifeq ($(strip $(L1_WCDMA)),TRUE)
+ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT) 
+COMMINCDIRS += custom/l1/ul1_rf/$(UMTS_RF_MODULE)
+endif
+endif
+
+ifeq ($(strip $(L1_TDD128)),TRUE)
+COMMINCDIRS += custom/l1/tl1_rf/$(UMTS_TDD128_RF_MODULE)
+endif
+
+ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+  ifneq ($(strip $(LTE_RF_MODULE)),NONE)
+    COMMINCDIRS += custom/l1/el1_rf/$(LTE_RF_MODULE)
+    COMMINCDIRS += custom/l1/el1_rf/$(LTE_RF_MODULE)/Toolgen
+  endif
+endif
+
+ifneq ($(strip $(C2K_RF_MODULE)),NONE)
+  COMMINCDIRS += custom/l1/cl1_rf/$(C2K_RF_MODULE)
+endif
+
+ifneq ($(strip $(RF_MODULE)),NONE)
+  COMMINCDIRS += custom/l1/gl1_rf/$(RF_MODULE)
+endif
+
+ifneq ($(strip $(MM_RF_MODULE)),NONE)
+  COMMINCDIRS += custom/l1/mml1_rf/$(MM_RF_MODULE)
+  COMMINCDIRS += custom/l1/mml1_rf/$(MM_RF_MODULE)/DRDI
+  COMMINCDIRS += custom/l1/mml1_devices/$(strip $(MM_DEVICE))
+endif
+
+ifdef NR_RF_MODULE
+ifneq ($(strip $(NR_RF_MODULE)),NONE)
+  COMMINCDIRS += custom/l1/nl1_rf/$(strip $(NR_RF_MODULE))
+  #COMMINCDIRS += custom/l1/nl1_rf/$(strip $(NR_RF_MODULE))/Toolgen
+endif
+endif
+
+ifneq ($(filter __CL1_TASK_ENABLE__, $(COM_DEFS)),)
+COMMINCDIRS += interface/l1/cl1/rfd
+endif
+
+ifdef IPSEC_SUPPORT
+ifneq ($(strip $(IPSEC_SUPPORT)),FALSE)
+COMMINCDIRS += interface/security
+endif
+endif
+
+ifeq ($(strip $(TEST_LOAD_TYPE)),L1S) 
+ifeq ($(strip $(L1D_LOOPBACK)),1)
+ifneq ($(strip $(L1_UMTS)),TRUE)
+COMMINCDIRS += l1/gl1/l1d_lp1
+endif
+endif
+ifeq ($(strip $(L1D_LOOPBACK)),2)
+ifneq ($(strip $(L1_UMTS)),TRUE)
+COMMINCDIRS += l1/gl1/l1d_lp2
+endif
+endif
+ifeq ($(strip $(L1D_LOOPBACK)),3)
+ifneq ($(strip $(L1_UMTS)),TRUE)
+COMMINCDIRS += l1/gl1/l1d_lp3
+endif
+endif
+ifeq ($(strip $(L1D_LOOPBACK)),5)
+COMMINCDIRS += l1/gl1/l1d_lp5
+endif
+ifeq ($(strip $(L1D_LOOPBACK)),6)
+COMMINCDIRS += l1/gl1/l1d_lp6
+endif
+ifeq ($(strip $(L1D_LOOPBACK)),7)
+COMMINCDIRS += l1/gl1/l1d_lp7
+endif
+ifeq ($(strip $(L1D_LOOPBACK)),8)
+COMMINCDIRS += l1/gl1/l1d_lp8
+endif
+endif
+
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  COMMINCDIRS += interface/protocol/lte
+  COMMINCDIRS += interface/l1/el1/external
+endif
+
+COMMINCDIRS += interface/driver/hif
+COMMINCDIRS += interface/driver/hif/hif_usbdev
+COMMINCDIRS += interface/driver/hif/hif_sdiodev
+COMMINCDIRS += interface/driver/hif/hif_cldmadev
+COMMINCDIRS += interface/service/maif
+# *************************************************************************
+# Build folder
+# *************************************************************************
+COMMINCDIRS += $(BUILD_TSTDIR)/include
+COMMINCDIRS += $(BUILD_TST_DB)/pstrace_db
+COMMINCDIRS += $(strip $(BUILD_SYSDIR))
+COMMINCDIRS += $(strip $(GEN_L4DIR))/mcd
+COMMINCDIRS += $(strip $(GEN_MMIDIR))/mcd
+COMMINCDIRS += $(strip $(GEN_SSDIR))
+COMMINCDIRS += $(strip $(PROJDIR))/modem
+COMMINCDIRS += $(strip $(PROJDIR))/modem/dbme
+COMMINCDIRS += $(strip $(PROJDIR))/modem/mcd
+COMMINCDIRS += $(strip $(PROJDIR))/modem/mcddll
+COMMINCDIRS += $(strip $(PROJDIR))/modem/rrc_asn
+COMMINCDIRS += $(strip $(PROJDIR))/modem/scsi
+COMMINCDIRS += $(strip $(PROJDIR))/nvram_auto_gen
+ifeq ($(strip $(CUST_CODE)),TC01)
+COMMINCDIRS += $(strip $(BUILD_SYSDIR))/ERS
+endif
+
+# *************************************************************************
+# MTK release folder
+# *************************************************************************
+ifeq ($(strip $(CUSTOM_RELEASE)),TRUE)
+COMMINCDIRS += $(strip $(CUS_MTK_REL))/dhl/include
+COMMINCDIRS += $(strip $(REL_L4DIR))/mcd
+COMMINCDIRS += $(strip $(REL_MMIDIR))/mcd
+COMMINCDIRS += $(strip $(REL_SCSIDIR))
+COMMINCDIRS += $(strip $(REL_MCDDIR))
+COMMINCDIRS += $(strip $(REL_SSDIR))
+COMMINCDIRS += $(strip $(CUS_MTK_REL))/modem/ldbme \
+               $(strip $(CUS_MTK_REL))/modem/ldbme/fdd \
+               $(strip $(CUS_MTK_REL))/modem/dbme \
+               $(strip $(CUS_MTK_REL))/modem/dbme/fdd \
+               $(strip $(CUS_MTK_REL))/modem/rrc_asn/fdd \
+               $(strip $(CUS_MTK_REL))/modem/rrc_asn \
+               $(strip $(CUS_MTK_REL))/modem/mipc/include
+endif
+
+ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+#MPD domain
+  COMMINCDIRS += l1/gl1/l1d_ext
+  COMMINCDIRS += l1/interface/mml1
+else # MTK_SW_DOMAIN
+  COMMINCDIRS += $(strip $(REL_MMIDIR))/mcd
+  COMMINCDIRS += $(strip $(CUS_MTK_REL))/dhl/include
+  ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+    COMMINCDIRS += $(strip $(CUS_MTK_REL))/dhl/database_modis/pstrace_db
+  else
+    COMMINCDIRS += $(strip $(CUS_MTK_REL))/dhl/database/pstrace_db
+  endif
+endif # MTK_SW_DOMAIN
diff --git a/mcu/make/common/rule_def/common_def.mak b/mcu/make/common/rule_def/common_def.mak
new file mode 100644
index 0000000..817e07d
--- /dev/null
+++ b/mcu/make/common/rule_def/common_def.mak
@@ -0,0 +1,3987 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+# *************************************************************************
+# always define
+# *************************************************************************
+# for backward compatible, need define a value for MAX_INT_PDP_CONTEXT
+
+MAX_INT_PDP_CONTEXT = 0
+COM_DEFS += MAX_INT_PDP_CONTEXT=0
+
+# WIFI_BB_MODULE Options
+COM_DEFS_FOR_NONE        = WIFI_BB_NONE
+# WIFI_RF_MODULE Options
+COM_DEFS_FOR_NONE        = WIFI_RF_NONE
+COM_DEFS +=  $(COM_DEFS_FOR_NONE)
+
+COM_DEFS += IDLE_TASK _DEBUG MTK_KAL
+COM_DEFS += SME_NOT_PRESENT SME_READER_NOT_PRESENT STDC_HEADERS TARGET_BUILD
+COM_DEFS += $(strip $(UMTS_SUPPORT_BAND))
+COM_DEFS += DEBUG_LEVEL=0
+COM_DEFS += EMPTY_MMI
+COM_DEFS += FMT_NOT_PRESENT
+COM_DEFS += MMS_IN_LARGE_STORAGE
+COM_DEFS += MTK_NEW_API
+COM_DEFS += WAP_NOT_PRESENT
+COM_DEFS += WPS_NOT_PRESENT
+COM_DEFS += __3G_MIPI_SUPPORT__
+COM_DEFS += __3G_RX_PATH_SELECTION_SUPPORT__
+COM_DEFS += __AMR_WB_WHITE_LIST__
+COM_DEFS += __ATCI_QUEUE_AT__
+COM_DEFS += __BLIND_HANDOVER__
+COM_DEFS +=  __BT_SIM_PROFILE__
+COM_DEFS += __CMCC_STD_FR__
+COM_DEFS += __CSMCC_CALLCONFIRM_TIMER__
+COM_DEFS += __DISABLE_2MIN_MINIMUM_HPPLMN_TIMER__
+COM_DEFS += __DYNAMIC_ROAMING_SUPPORT__
+COM_DEFS += __EMPTY_MMI__
+COM_DEFS += __EXT_PDP_CONTEXT_ON__
+COM_DEFS += __EXT_SECONDARY_PDP_FEASIBLE__
+COM_DEFS += __FAST_FRC__
+COM_DEFS += __FLIGHT_MODE_SUPPORT__
+COM_DEFS += __HO_IMPROVE__
+COM_DEFS += __MP4_DEC_ASP_PARTIAL_SUPPORT__
+COM_DEFS += __MSLT__
+COM_DEFS += __MTK_TARGET__
+COM_DEFS += __OPTR_NONE__
+COM_DEFS += __PHB_0x81_SUPPORT__
+COM_DEFS += __R7_MANUAL_RHPLMN_SEL__
+COM_DEFS += __RESUME_GPRS_AFTER_LU_ABNORMAL__
+COM_DEFS += __SMART_PAGING_IN_IDLE__
+COM_DEFS += __SMART_PAGING__
+COM_DEFS += __STACK_ALIGN_MPU__=32
+COM_DEFS += __SW_H264_LOSSY_SUPPORT__
+COM_DEFS += __SW_MP4_LOSSY_SUPPORT__
+COM_DEFS += __SYS_INTERN_RAM__
+COM_DEFS += __THUMB2_UNIFIED__
+COM_DEFS += __TURN_ON_EXTERNAL_SECONDARY_PDP__
+COM_DEFS += __TURN_ON_GENERAL_SECONDARY_PDP__
+COM_DEFS +=  __USIM_DRV__
+COM_DEFS +=  __MMRF_MIPI_HW_CHECK_SUPPORT__
+COM_DEFS += __ISIM_SUPPORT__
+COM_DEFS += __2G_MIPI_SUPPORT__
+COM_DEFS += __2G_MIPI_INTERSLOT_RAMPING_OPTIMIZE_SUPPORT__
+COM_DEFS += __2G_BPI_PT3A_SUPPORT__
+COM_DEFS += PPP_NOT_PRESENT
+COM_DEFS += __NO_3G_FULL_BAND_SEARCH_DURING_23G_REDIR__
+COM_DEFS += __NO_3G_FULL_BAND_SEARCH_DURING_CSFB__
+COM_DEFS += __DSS_NO_RESET__
+COM_DEFS += __A54_ALGORITHM_SUPPORT__
+COM_DEFS += __A54_ALGORITHM_SUPPORT_CAPABILITY__
+COM_DEFS += __GEA4_ALGORITHM_SUPPORT_CAPABILITY__
+COM_DEFS += __DISABLE_GEA1__
+COM_DEFS += __L1_BOOTUP_RF_TUNING_SUPPORT__
+COM_DEFS += __GAS_STORED_SI_FEAT__
+COM_DEFS += __DISABLE_4G3_FAST_REDIRECTION_FOR_CU__
+COM_DEFS += __PREFER_3G_IN_23G_MODE__
+COM_DEFS += __MODIFY_CTCH_RECEPTION_PRIO__ 
+COM_DEFS += MD_GEN93=3
+COM_DEFS += MD_GEN95=5
+COM_DEFS += MD_GEN97=7
+COM_DEFS += MD_GEN97P=9
+COM_DEFS += MD_SPEC_2018SEP=0
+COM_DEFS += MD_SPEC_2018DEC=1
+COM_DEFS += MD_SPEC_2019MAR=2
+COM_DEFS += MD_SPEC_2019JUN=3
+COM_DEFS += MD_SPEC_2019SEP=4
+COM_DEFS += __UL1_BCH_ROUND_ROBIN_WITH_PCH__
+COM_DEFS += __SIM_EXTEND_RECOVERY_PATTERN__
+COM_DEFS += __GAS_REUSE_POWER_SCAN_RESULTS__
+COM_DEFS += __GAS_USE_ACQUIRED_PLMN_CELL_INFO_FOR_SEARCH__
+COM_DEFS += __ANT_RXPWR_OFFSET_SUPPORT__
+COM_DEFS += __ACCESS_STRATUM_RELEASE__
+COM_DEFS += __ECSFB__
+COM_DEFS += __FDD_ECSFB_AVOID_LU_FAIL_CELLS__
+COM_DEFS += __CONNECTED_CONFIG_POINTER__
+COM_DEFS += __ALLOW_CALL_DURING_SMS_IN_OTHER_STACK__
+COM_DEFS += __GSM_INDICATION_FOR_AP_CLOCK_HOPPING_SUPPORT__
+COM_DEFS += __GAS_AVOID_SI_TIMER_EXPIRY_IN_DEDICATED_MODE__
+COM_DEFS += __C2K_RF_HOPPING_SUPPORT__
+COM_DEFS += __2G_CELL_SEL_ENHANCE__
+COM_DEFS += __ENABLE_2G_CELL_SEL_ENHANCE__
+COM_DEFS += __LTE_GAS_IRCR_PRIORITY_BOOST__
+COM_DEFS += __QRXLEVMIN_OPTIMIZATION_3G_MODE__
+COM_DEFS += __DO_NOT_SEARCH_23G_LTE_ONLY_NETWORK__
+COM_DEFS += __INCREASE_MAX_IVSR_GUARD_TIMER_NUM__
+COM_DEFS += __RETRY_IVSR_AFTER_GUARD_TIMER__
+COM_DEFS += __POPLMN_EQUAL_PRIORITY_IN_FAST_ROAMING__
+COM_DEFS += __SBP_EXTEND_LTE_PAGING_CYCLE_IN_VIRTUAL__
+COM_DEFS += __RACH_FAIL_ENHANCEMENT__
+COM_DEFS += __IGNORE_RUDE_WAKEUP_WHEN_TEST_SIM__
+COM_DEFS += __NWSEL_HISTORY_KEEP_REG_SUCCUSS_INFO__
+COM_DEFS += __NWSEL_HISTORY_RESET_LTE_REG_COUNTER_AFTER_POWERON__
+COM_DEFS += __TDD_ECSFB_AVOID_LU_FAIL_CELLS__
+COM_DEFS += __ECSFB_ENHANCED_ASSOCIATION_OF_24G_CELLS__
+COM_DEFS += __TURN_OFF_ECBM_MODE_IN_CHINA__
+COM_DEFS += __POWER_ON_STORED_LIST_SEARCH__
+COM_DEFS += __INACTIVE_MODE_SERVICE_RECOVERY__
+COM_DEFS += __PREFER_HIGH_PRIO_3G_IN_23G_MODE__
+COM_DEFS += __CALL_PREFER_ALWAYS_MONITOR_PCH_IN_PTM__
+COM_DEFS += __DISABLE_REMOVE_BLACK_CELLS_FROM_REDIR_LIST__
+COM_DEFS += __ENABLE_CALL_PREFER_IN_UNACK_MODE__
+COM_DEFS += __SBP_REL_PS_CONN_DURING_MANUAL_PLMN_LIST_ON_PDP_DEACT__
+COM_DEFS += __EXTEND_IMS_STATUS_UNSPECIFIED_WHEN_CAUSE18__
+COM_DEFS += __RAC_CAUSE18_NOT_CHANGE_UEMODE_BY_PLMN__
+COM_DEFS += __MM_CUSTOMIZE_T3240_TIMEOUT_VALUE__
+COM_DEFS += __ACMT_SUPPORT__
+COM_DEFS += __ENABLE_DETACH_WHEN_SET_RAT_G2W__
+COM_DEFS += __GMM_REATTACH_FOR_NW_DETACH_OTHER_CAUSE__
+COM_DEFS += __ENABLE_EMM_CUST_BAR_FAKE_CELL__
+COM_DEFS += __CC_CUSTOMIZED_TIMER__
+COM_DEFS += __SUPPORT_LTE_UE_CAT_D4U5_UL64QAM_CHK__
+COM_DEFS += __2G_SEND_ANY_CHANNEL_FOR_MT_CSFB__
+COM_DEFS += __RESEL_THRES_CUSTOM__
+COM_DEFS += __LBS_CP_PLMN_BLACK_LIST__
+COM_DEFS += __SAR_SENSOR_SUPPORT__
+COM_DEFS += __EVENTB2_THRESHOLD_ADJ__
+COM_DEFS += __EVENTB2_THRESHOLD_MAX_ADJ__
+COM_DEFS += __CB_CHANNEL_ONLY_STORED_IN_NVRAM__
+COM_DEFS += __DISABLE_MMS_TIMER_BY_DEFAULT__
+COM_DEFS += __WCDMA_INDICATION_FOR_AP_CLOCK_HOPPING_SUPPORT__
+COM_DEFS += __FOR_MUTI_FAKE_CELL_REPORT__
+COM_DEFS += __LTE_TX_NSFT_POWER_OFFSET_SUPPORT__
+COM_DEFS += __DISABLE_B7B38_IN_USA__
+COM_DEFS += __DISABLE_LTE_PARTIAL_BAND_BY_SIM_AND_PLMN__
+COM_DEFS += __ENABLE_BAR_FTA_CELL_IN_SBY__
+COM_DEFS += __ENABLE_DEL_IDLE_MOBILITY_WHEN_SMC_REJECT__
+COM_DEFS += __DISABLE_PLMN_LIST_IGNORE_PS_PAGING_WHEN_IMS_DEREG__
+COM_DEFS += __EMM_SEARCH_23G_FOR_AC_BARRED_MO_CSFB__
+COM_DEFS += __IGNORE_INT_CHECK_FOR_NAS_MSG__
+COM_DEFS += __LTE_EMM_PROC_AS_FAIL_BAR_CELL__
+COM_DEFS += __LTE_EMM_PROC_NW_REL_BAR_CELL__
+COM_DEFS += __SHORT_T3417EXT__
+COM_DEFS += __SBP_LTE_AUTH_REJ_MAPPING_TO_15__
+COM_DEFS += __ENABLE_RF_SCAN_FOR_DESENSE_TEST__
+COM_DEFS += __RF_SCAN_FOR_DESENSE_TEST__
+#COM_DEFS += __NSFT_ADJUST_TX_POWER_OFFSET_SUPPORT__ 
+COM_DEFS += __EM_MAX_TX_POWER_SUPPORT__
+COM_DEFS += __2G_FAST_TIMING_ADJUST_SUPPORT__
+COM_DEFS += __2G_FAST_TIMING_ADJUST_ENABLE__
+COM_DEFS += __A5_3_AND_GEA_WHILTE_LIST__
+COM_DEFS += LTE_DL_CAT4=4
+COM_DEFS += LTE_DL_CAT7=7
+COM_DEFS += LTE_DL_CAT12=12
+COM_DEFS += LTE_DL_CAT13=13
+COM_DEFS += LTE_DL_CAT13_with_CAT9=139
+COM_DEFS += LTE_DL_CAT13_with_CAT10=130
+COM_DEFS += LTE_DL_CAT16=16
+COM_DEFS += LTE_DL_CAT18=18
+COM_DEFS += LTE_DL_CAT19=19
+COM_DEFS += LTE_UL_CAT5=5
+COM_DEFS += LTE_UL_CAT13=13
+COM_DEFS += LTE_UL_CAT15=15
+COM_DEFS += LTE_UL_CAT18=18
+COM_DEFS += LTE_UL_CAT20=20
+COM_DEFS += __MODEM_ELEVATOR_MODE__
+COM_DEFS += __SRVCC_CELL_INFO__
+COM_DEFS += __SBP_BAR_CELL_FOR_CONN_FAIL__
+COM_DEFS += __SBP_VONR_ENH__
+COM_DEFS += __SUBADDR_SUPPORT__
+COM_DEFS += __FAST_PLMN_LIST_INFO_3G__
+COM_DEFS += __LTE_CA_CSR_SUPPORT__
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  COM_DEFS += __3G4_IRRDT_NO_CELL_SET_RAU_NOT_REQUIRED__
+  COM_DEFS += __BAR_CELL_WHEN_NO_CC_SETUP__
+  COM_DEFS += __CELL_BARRING_WHEN_NO_RRC_CONN_SETUP__
+  COM_DEFS += __CUSTOM_QRXLEVL_QQUAL__
+  COM_DEFS += __DDM_SHOW_DATA_ICON__
+  COM_DEFS += __EMM_PROC_FAIL_HANDLING_EXT_1__
+  COM_DEFS += __EMM_REJ_CAUSE_2_ADD_TO_FTAI__
+  COM_DEFS += __EMM_RETRY_PS_PAGING_WHEN_GEMINI_FAIL__
+  COM_DEFS += __EVENTB2_THRESHOLD_ADJ_VILTE__
+  COM_DEFS += __GSM_INCREASE_RACH_TX_POWER_SUPPORT__
+  COM_DEFS += __IGNORE_IR_REDIRECT_TO_LTE_WHEN_NO_CELL__
+  COM_DEFS += __LTE_REDIR_FAIL_ENHANCE__
+  COM_DEFS += __PERFORM_COMBINED_SEARCH_DURING_CSFB__
+  COM_DEFS += __SBP_BARR_CELL_IF_ECC_ESTABLISHMENT_FAIL__
+  COM_DEFS += __SBP_CSFB_CALL_RETRY_ON_CMSERVICE_LU_REJECT_WITH_CAUSE15__
+  COM_DEFS += __SHORT_T3417EXT_BY_PLMN__
+  COM_DEFS += __SMS_FDN_CHECK_DA_ONLY__
+  COM_DEFS += __ATERFTX_ERROR_HANDLE_ENHANCE__
+  COM_DEFS += __GAS_ECC_CELL_SEL_ENHANCEMENT__
+  COM_DEFS += __SBP_BAR_CELL_FOR_CONN_FAIL__
+  COM_DEFS += __SKIP_POWER_SCAN_4G2_CSFB_REDIRECTION__
+  COM_DEFS += __SRVCC_CELL_INFO__
+  COM_DEFS += __VSIM__
+  COM_DEFS += __FDD_EM_TXRX_ENHANCE__
+  COM_DEFS += __INC_BCCH_DECODE_PRIO_BG_LIST__
+  COM_DEFS += __RAC_CHANGE_VDP_BY_ROAMING__
+endif
+
+ifneq ($(strip $(FPGA_L1_ROUTER_SUPPORT)),TRUE)
+COM_DEFS += __EVENT_BASED_TIMER__
+endif
+
+# *************************************************************************
+# defined by rules
+# ************************************************************************
+
+ifdef LTE_DOWNLINK_CAT
+  #NONE: use default DL_CAT4
+  ifeq ($(strip $(call Upper,$(LTE_DOWNLINK_CAT))),NONE)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT4
+  endif
+  
+  ifeq ($(strip $(LTE_DOWNLINK_CAT)), DL_CAT_4)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT4
+  endif
+  ifeq ($(strip $(LTE_DOWNLINK_CAT)), DL_CAT_7)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT7
+  endif
+  ifeq ($(strip $(LTE_DOWNLINK_CAT)), DL_CAT_12)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT12
+  endif
+  ifeq ($(strip $(LTE_DOWNLINK_CAT)), DL_CAT_13)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT13
+  endif
+  ifeq ($(strip $(LTE_DOWNLINK_CAT)), DL_CAT13_with_CAT9)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT13_with_CAT9
+  endif
+  ifeq ($(strip $(LTE_DOWNLINK_CAT)), DL_CAT13_with_CAT10)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT13_with_CAT10
+  endif
+  ifeq ($(strip $(LTE_DOWNLINK_CAT)), DL_CAT_16)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT16
+  endif
+  ifeq ($(strip $(LTE_DOWNLINK_CAT)), DL_CAT_18)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT18
+  endif
+  ifeq ($(strip $(LTE_DOWNLINK_CAT)), DL_CAT_19)
+    COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT19
+  endif  
+else
+  #not defined; use default DL_CAT4
+  COM_DEFS    += LTE_DL_CATEGORY=LTE_DL_CAT4
+endif
+
+ifdef LTE_UPLINK_CAT
+  #NONE: use default UL_CAT5
+  ifeq ($(strip $(call Upper,$(LTE_UPLINK_CAT))),NONE)
+    COM_DEFS    += LTE_UL_CATEGORY=LTE_UL_CAT5
+  endif
+  
+  ifeq ($(strip $(LTE_UPLINK_CAT)), UL_CAT_5)
+    COM_DEFS    += LTE_UL_CATEGORY=LTE_UL_CAT5
+  endif
+  ifeq ($(strip $(LTE_UPLINK_CAT)), UL_CAT_13)
+    COM_DEFS    += LTE_UL_CATEGORY=LTE_UL_CAT13
+  endif
+  ifeq ($(strip $(LTE_UPLINK_CAT)), UL_CAT_15)
+    COM_DEFS    += LTE_UL_CATEGORY=LTE_UL_CAT15
+  endif
+  ifeq ($(strip $(LTE_UPLINK_CAT)), UL_CAT_18)
+    COM_DEFS    += LTE_UL_CATEGORY=LTE_UL_CAT18
+  endif
+  ifeq ($(strip $(LTE_UPLINK_CAT)), UL_CAT_20)
+    COM_DEFS    += LTE_UL_CATEGORY=LTE_UL_CAT20
+  endif
+else
+  #not defined; use default UL_CAT5
+  COM_DEFS    += LTE_UL_CATEGORY=LTE_UL_CAT5
+endif
+
+ifeq ($(strip $(MTK_USE_97_CIPHER_FILES)),TRUE)
+  COM_DEFS       += __MD97_TMP__
+endif
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6293)
+  COM_DEFS       += __MD93__
+  COM_DEFS       += CUR_GEN=MD_GEN93
+endif
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6295)
+  COM_DEFS       += __MD95__
+  COM_DEFS       += CUR_GEN=MD_GEN95
+endif
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+  COM_DEFS       += __MD97__
+  COM_DEFS       += CUR_GEN=MD_GEN97
+  ifeq ($(strip $(COMPILER_ISA)), MIPS16)
+    COM_DEFS     += MT6297_IA
+  endif
+  ifeq ($(strip $(MTK_3GPP_SPEC_VER)), SPEC_2019SEP)
+    COM_DEFS     += CUR_MD_SPEC=MD_SPEC_2019SEP
+  else
+    ifeq ($(strip $(MTK_3GPP_SPEC_VER)), SPEC_2019JUN)
+      COM_DEFS   += CUR_MD_SPEC=MD_SPEC_2019JUN
+    else
+      ifeq ($(strip $(MTK_3GPP_SPEC_VER)), SPEC_2019MAR)
+        COM_DEFS += CUR_MD_SPEC=MD_SPEC_2019MAR
+      else
+        ifeq ($(strip $(MTK_3GPP_SPEC_VER)), SPEC_2018DEC)
+          COM_DEFS   += CUR_MD_SPEC=MD_SPEC_2018DEC
+        else
+          COM_DEFS   += CUR_MD_SPEC=MD_SPEC_2018SEP
+          COM_DEFS   += __MCD_VGNAS_24501_SPEC_2018SEP__
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(PLATFORM)),MT6880)
+  COM_DEFS += __RAC_CHANGE_VDP_WHEN_IMS_ONOFF__
+else
+  COM_DEFS += __RAC_CHANGE_VDP_SRVCC_BY_SIM__
+endif
+
+ifneq ($(filter MT6880 MT6890 MT2735,$(strip $(PLATFORM))),)
+  COM_DEFS += CHIP10992
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+  COM_DEFS       += __MD97P__
+  COM_DEFS       += CUR_GEN=MD_GEN97P
+  COM_DEFS       += __CONNECTED_CONFIG_POINTER__
+  ifeq ($(strip $(COMPILER_ISA)), MIPS16)
+    COM_DEFS     += MT6297P_IA
+  endif
+  ifeq ($(strip $(MTK_3GPP_SPEC_VER)), SPEC_2019SEP)
+    COM_DEFS     += CUR_MD_SPEC=MD_SPEC_2019SEP
+  else
+    ifeq ($(strip $(MTK_3GPP_SPEC_VER)), SPEC_2019JUN)
+      COM_DEFS     += CUR_MD_SPEC=MD_SPEC_2019JUN
+    else
+      ifeq ($(strip $(MTK_3GPP_SPEC_VER)), SPEC_2019MAR)
+        COM_DEFS     += CUR_MD_SPEC=MD_SPEC_2019MAR
+      else
+        ifeq ($(strip $(MTK_3GPP_SPEC_VER)), SPEC_2018DEC)
+          COM_DEFS   += CUR_MD_SPEC=MD_SPEC_2018DEC
+        else
+          COM_DEFS   += CUR_MD_SPEC=MD_SPEC_2018SEP
+          COM_DEFS   += __MCD_VGNAS_24501_SPEC_2018SEP__
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifneq ($(strip $(MTK_MODEM_ARCH)), MT6293)
+  ifneq ($(strip $(MTK_MODEM_ARCH)), MT6295)		
+    COM_DEFS += __LOGGING_RATE_ADJ__
+  endif
+endif  
+
+# Enable __DUAL_SIM_DUAL_ACTIVATION__ for all non-6293 projects
+ifdef MTK_MODEM_ARCH
+  ifeq ($(filter MT6293,$(MTK_MODEM_ARCH)),)
+    COM_DEFS += __DUAL_SIM_DUAL_ACTIVATION__
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6295)
+  COM_DEFS += __MML1_UTIL_TASK_ENABLE__
+  ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+    COM_DEFS += __DYNAMIC_CACHE_LOCK_CENTRAL_CONTROL_SUPPORT__
+  endif
+  ifneq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    COM_DEFS += __DDL_SWITCH_3G_FDD_IN_LTE_FLIGHT_ENABLE__
+    COM_DEFS += __DDL_BRP_FDD__
+    COM_DEFS += __DDL_SCQ16_PM_FDD__
+    COM_DEFS += __DDL_FEC_TX_WCDMA__
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+  COM_DEFS += __MML1_UTIL_TASK_ENABLE__
+  ifneq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    COM_DEFS += __NL1_INIT_BASIC_TEST__
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+  COM_DEFS += __MML1_UTIL_TASK_ENABLE__
+  ifneq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    COM_DEFS += __NL1_INIT_BASIC_TEST__
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+ifdef FIVEG_MODE_SUPPORT
+  ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+    ifneq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    COM_DEFS += __NL1_ONLY_LOAD__
+  endif
+endif
+endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+  ifdef FIVEG_MODE_SUPPORT
+    ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+      ifneq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    COM_DEFS += __NL1_ONLY_LOAD__
+  endif
+endif
+endif
+endif
+
+ifneq ($(filter __EL1_FNEYE_INSTRUMENT_ALL_CONTEXT_TRACE__,$(strip $(COM_DEFS))),)
+COM_DEFS += __DHL_ENLARGE_ULSP_THROUGHPUT__
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6293)
+  ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+    ifeq ($(filter __FPGA__,$(strip $(COM_DEFS))),)
+      COM_DEFS += __MML1_ADT_ENABLE__
+    endif
+  endif
+endif
+
+ifdef DISABLE_AUTOTCM
+  ifeq ($(strip $(DISABLE_AUTOTCM)),TRUE)
+    COM_DEFS += __L1_KW_SCAN__
+    CUSTOM_OPTION  := $(filter-out __MML1_ADT_ENABLE__,$(CUSTOM_OPTION))
+    COM_DEFS       := $(filter-out __MML1_ADT_ENABLE__,$(COM_DEFS))
+  endif
+endif
+
+ifeq ($(strip $(COMPILER_ISA)),MIPS16)
+  COM_DEFS += __MIPS16 __MIPS16__
+endif
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  COM_DEFS += __MODIS_BUILD__
+endif
+
+# For SWITCH MODEM TEMPERATURE RANGE.
+MODEM_TEMPERATURE_RANGE_M10_TO_65 = MT6169_2G_CUSTOM MT6169_2G A1EU_2G_MT6169 A1US_2G_MT6169 K82CMCC_2G_MT6169 K82V2_2G_MT6169 K95_2G_MT6165 K95_2G_MT6169 K95_DEMO_2G_MT6165 \
+                                    K95_DEMO_2G_MT6169 MT6169_MIFI_2G MT6169_MIFI_2G_CUSTOM MT6582LTE_2G_MT6169 V1UK_2G_MT6169 V1UK_EVB_2G_MT6169 MT6165_DUAL_TALK_2G \
+                                    MT6582LTE_2G_MT6165 RIO5EU_2G_MT6169 RIO5US_2G_MT6169 AD6546 AD6546_CUSTOM AD6548_AST AD6548_CUSTOM ATHENS15V3_MODEM_6140D LENOVO75_DEMO_MT6162 \
+                                    MT6140_CUSTOM MT6140D MT6162 MT6162_CUSTOM MT6162_DUAL MT6163_2G MT6163_2G_CUSTOM MT6166_DUAL_TALK_2G MT6280_CUSTOM MT6280RF_2G MT6582LTE_2G_MT6166    
+ifeq ($(filter $(strip $(RF_MODULE)),$(MODEM_TEMPERATURE_RANGE_M10_TO_65)),)
+  COM_DEFS += __L1_TEMPERATURE_RANGE_V2__
+endif
+
+ifneq ($(filter TK6291_FPGA ELBRUS_FPGA,$(strip $(ORIGINAL_PROJECT_NAME))),)
+  COM_DEFS += __NO_MD2G_HW_PLATFORM__
+endif
+
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  ifneq ($(strip $(SMART_PHONE_CORE)),NONE)
+    COM_DEFS  += __BMT_TASK_DISABLE__
+  endif
+endif
+
+ifeq ($(strip $(FCS_SUPPORT)),TRUE)
+  COM_DEFS += __FCS_SUPPORT__
+endif
+
+ifeq ($(strip $(DHL_SET_FILTER_BY_SCENARIO)),TRUE)
+  COM_DEFS += __DHL_SET_FILTER_BY_SCENARIO__
+endif
+
+ifeq ($(strip $(LOGGING_BUFFER_REALLOCATION_BY_FILTER)),TRUE)
+   COM_DEFS += __LOGGING_BUFFER_REALLOCATION_BY_FILTER__
+endif
+
+ifeq ($(strip $(BIP_SUPPORT)),TRUE)
+  COM_DEFS += __BIP_SUPPORT__
+endif
+
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifneq ($(ORIGINAL_FLAVOR),BASIC_HIF)
+    ifeq ($(strip $(KPALV_SUPPORT)),TRUE)
+      COM_DEFS += __KPALV_SUPPORT__
+    endif
+  endif
+endif
+
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  ifeq ($(strip $(WIFI_LTE_DPP_SUPPORT)),TRUE)
+    COM_DEFS  += __GMMGR_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(XCAP_SUPPORT)),TRUE)
+  COM_DEFS += __XCAP_SUPPORT__
+endif
+
+ifeq ($(strip $(HTTP_TLS_SUPPORT)),TRUE)
+  COM_DEFS += __HTTP_TLS_SUPPORT__
+endif
+
+ifeq ($(strip $(EUTRAN_MODE_SUPPORT)),EUTRAN_MODE)
+  COM_DEFS += __4G_IDC__
+endif
+
+ifneq ($(strip $(L1_UMTS)),TRUE)
+  ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_GSM_MODE)
+    COM_DEFS += RATDM_NOT_PRESENT
+  endif
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    COM_DEFS +=  __GSM_RAT__ __MTK_3G_MRAT_ARCH__
+  endif
+endif
+
+ifeq ($(strip $(PRODUCTION_RELEASE)),TRUE)
+  COM_DEFS  += __PRODUCTION_RELEASE__
+endif
+
+ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+  COM_DEFS    += __DHL_MODULE__ TST_TRACE_COMPAT __TST_MODULE__
+
+######## Enable DHL2.0 ########
+  ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+    COM_DEFS    += __DHL_V2_ENABLE__
+  endif
+  ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+    COM_DEFS    += __DHL_V2_ENABLE__
+  endif
+###############################
+  # option for Channel & Buffer Decision
+  ifeq ($(strip $(call Upper,$(DHL_LOG_BUF_LOCATION))),SHM)
+    COM_DEFS += __DHL_ALLOC_LOG_BUF_IN_SHM__
+  endif
+  ifeq ($(strip $(call Upper,$(DHL_META_BUF_LOCATION))),SHM)
+    COM_DEFS += __DHL_ALLOC_META_BUF_IN_SHM__
+  endif
+
+  ifeq ($(strip $(call Upper,$(DHL_LOG_CHANNEL))),CCB)
+    COM_DEFS += __ELT_SET_PORT_TO_CCB__
+  endif
+  ifeq ($(strip $(call Upper,$(DHL_META_CHANNEL))),CCB)
+    COM_DEFS += __META_SET_PORT_TO_CCB__
+  endif
+
+  ifeq ($(strip $(call Upper,$(DHL_LOG_CHANNEL))),MD_USB)
+    COM_DEFS += __ELT_SET_PORT_TO_USB__
+  endif
+  ifeq ($(strip $(call Upper,$(DHL_META_CHANNEL))),MD_USB)
+    COM_DEFS += __META_SET_PORT_TO_USB__
+  endif
+
+  ifeq ($(strip $(call Upper,$(DHL_LOG_CHANNEL))),MD_UART)
+    COM_DEFS += __ELT_SET_PORT_TO_UART__
+  endif
+  ifeq ($(strip $(call Upper,$(DHL_META_CHANNEL))),MD_UART)
+    COM_DEFS += __META_SET_PORT_TO_UART__
+  endif
+
+  ifeq ($(strip $(call Upper,$(DHL_LOG_CHANNEL))),MD_PCIE)
+    COM_DEFS += __ELT_SET_PORT_TO_PCIE__
+  endif
+  ifeq ($(strip $(call Upper,$(DHL_META_CHANNEL))),MD_PCIE)
+    COM_DEFS += __META_SET_PORT_TO_PCIE__
+  endif
+
+  ifeq ($(strip $(call Upper,$(DHL_LOG_CHANNEL))),CUSTOM_CONFIG)
+    COM_DEFS += __ELT_SET_PORT_TO_DUAL_IPC__ #TODO remove DIPC keyword
+  endif
+  ifeq ($(strip $(call Upper,$(DHL_META_CHANNEL))),CUSTOM_CONFIG)
+    COM_DEFS += __META_SET_PORT_TO_DUAL_IPC__ #TODO remove DIPC keyword
+  endif
+else
+  ifeq ($(strip $(TST_SUPPORT)),TRUE)
+    COM_DEFS    += __TST_MODULE__
+  else
+      COM_DEFS    += DRV_DEBUG
+  endif
+endif
+
+ifeq ($(strip $(SPLIT_SYSTEM)),TRUE)
+   COM_DEFS    += UT_ON_TARGET SPLIT_SYS
+endif
+
+ifeq ($(strip $(EMAIL_SUPPORT)),TRUE)
+   COM_DEFS    += __EMAIL__
+endif
+
+ifeq ($(strip $(IRDA_SUPPORT)),TRUE)
+   COM_DEFS    += __IRDA_SUPPORT__
+endif
+
+ifneq ($(strip $(PHB_SIM_ENTRY)),)
+  COM_DEFS += __PHB_SIM_$(strip $(PHB_SIM_ENTRY))__
+endif
+
+ifneq ($(strip $(PHB_PHONE_ENTRY)),)
+  COM_DEFS += __PHB_PHONE_$(strip $(PHB_PHONE_ENTRY))__
+endif
+
+ifeq ($(strip $(PMIC)),MT6305)
+     COM_DEFS    += MT6305 __CHARGER_WITH_IMMEDIMATE_ADC__
+endif
+
+ifeq ($(strip $(UGTCM)),TRUE)
+  COM_DEFS += __UGTCM__
+endif
+
+ifeq ($(strip $(ETCM)),TRUE)
+  COM_DEFS += __ETCM__
+endif
+
+ifeq ($(strip $(VGTCM)),TRUE)
+  COM_DEFS += __VGTCM__
+endif
+
+ifeq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  COM_DEFS    +=  L1_NOT_PRESENT
+endif
+
+ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+  #enable 4G
+  ifdef FDD_LTE_SUPPORT
+    ifeq ($(strip $(FDD_LTE_SUPPORT)),FALSE)
+        COM_DEFS += __4G_TDD_ONLY__
+    endif
+  endif
+  ifdef TDD_LTE_SUPPORT
+    ifeq ($(strip $(TDD_LTE_SUPPORT)),FALSE)
+        COM_DEFS += __4G_FDD_ONLY__
+    endif
+  endif
+endif
+
+ifeq ($(strip $(IMS_SUPPORT)),TRUE)
+  COM_DEFS      += __IMCF_MTK_MD__=1 __IMC_IGNORE_TODO_ASSERT__=1
+  COM_DEFS      += __MOD_IMC__=1 __MOD_IMCB__=1 __IMC_SUB_IMC__=1 
+  COM_DEFS      += __IMC_SUB_IMC_MNGR__=1 __IMC_SUB_IMC_REG__=1 __IMC_SUB_IMC_CC__=1  __IMC_SUB_IMC_SS__=1
+  COM_DEFS      += __IMC_MULTIPLE_CONTEXT__
+  COM_DEFS      += __IMC_RELAY_TYPE_CCCI__
+  COM_DEFS += __MOD_IMCSMS__
+endif
+
+ifdef N3GPP_OFFLOAD_ENABLE
+  ifeq ($(strip $(N3GPP_OFFLOAD_ENABLE)),TRUE)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      COM_DEFS += __N3GPP_OFFLOAD_ENABLE__
+      COM_DEFS += __MD_WLC_SUPPORT__
+    else
+      ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+        COM_DEFS += __N3GPP_OFFLOAD_ENABLE__
+        COM_DEFS += __MD_WLC_SUPPORT__
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(GEMINI_VERSION)),V2)
+  ifdef GEMINI
+    ifneq ($(strip $(GEMINI)),FALSE)
+      COM_DEFS  += __GEMINI_PREEMPT_PEER_SERVICE__ __GEMINI_MONITOR_PAGE_DURING_TRANSFER__ __SMART_PAGING__ __SMART_PAGING_IN_IDLE__
+      ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+        COM_DEFS  += __MONITOR_PEER_PAGING_IN_CELL_PCH__
+      endif
+    endif
+  endif
+endif
+
+ifndef GPRS_MAX_PDP_SUPPORT
+  GPRS_MAX_PDP_SUPPORT = 2
+endif
+ifdef LTE_MAX_EPSB_SUPPORT
+  COM_DEFS    += LTE_MAX_EPSB_SUPPORT=$(strip $(LTE_MAX_EPSB_SUPPORT))
+endif
+# define GPRS_MAX_PDP_SUPPORT = 2~7
+ifdef GPRS_MAX_PDP_SUPPORT
+  COM_DEFS    += GPRS_MAX_PDP_SUPPORT=$(strip $(GPRS_MAX_PDP_SUPPORT))
+endif
+ifdef GPRS_MAX_PDP_SUPPORT
+  ifdef LTE_MAX_EPSB_SUPPORT
+    MAX_EXT_PDP_CONTEXT := $(call max,$(strip $(GPRS_MAX_PDP_SUPPORT)),$(strip $(LTE_MAX_EPSB_SUPPORT)))
+    COM_DEFS    += MAX_EXT_PDP_CONTEXT=$(call plus,$(strip $(MAX_EXT_PDP_CONTEXT)),3)
+  endif
+endif
+
+ifeq ($(strip $(SCC_SIB_SUPPORT)),TRUE)
+  COM_DEFS    += __SCC_SIB_SUPPORT__
+endif
+
+ifeq ($(strip $(SCC_FORCE_LOG_TO_SIB)),TRUE)
+  COM_DEFS    += __SCC_FORCE_LOG_TO_SIB__
+endif
+
+ifdef DVFS_ENABLE
+  ifeq ($(strip $(DVFS_ENABLE)),TRUE)
+    COM_DEFS    += DVFS_ENABLE
+  endif
+endif
+
+# Add option to select DSP CODEBASE
+ifdef MTK_MODEM_ARCH
+  COM_DEFS += __DSP_CODEBASE_$(strip $(MTK_MODEM_ARCH))__
+endif
+
+ifdef MTK_AUDIO_HIERARCHICAL_PARAM_SUPPORT
+  ifeq ($(strip $(MTK_AUDIO_HIERARCHICAL_PARAM_SUPPORT)),TRUE)
+    COM_DEFS += MTK_AUDIO_HIERARCHICAL_PARAM_SUPPORT
+  endif
+endif
+
+ifeq ($(strip $(RF_BYPASS)),TRUE)
+  COM_DEFS    += __RF_BYPASS__
+endif
+
+#DRDI Capability support
+ifeq ($(strip $(RF_DRDI_CAPABILITY_SUPPORT)),TRUE)
+  COM_DEFS    += __RF_DRDI_CAPABILITY_SUPPORT__
+endif
+
+ifeq ($(strip $(RF_DRDI_SPECIAL_MEMORY_SUPPORT)),TRUE)
+  COM_DEFS    += __RF_DRDI_SPECIAL_MEMORY_SUPPORT__
+endif
+
+ifdef C2K_MODE_SUPPORT
+  ifneq ($(strip $(call Upper,$(C2K_MODE_SUPPORT))),NONE)
+    COM_DEFS += __CDMA2000_RAT__ __EXTERNAL_CDMA_SUPPORT__
+    COM_DEFS += __C2K_RAT__
+    include $(strip $(MAKE_COMMON))/rule_def/c2k_def.mak
+  else
+    COM_DEFS += __SUPPORT_C2K_SMS_OVER_IMS_CDMA_LESS__
+  endif
+else
+  COM_DEFS += __SUPPORT_C2K_SMS_OVER_IMS_CDMA_LESS__
+endif
+
+ifneq ($(filter __CL1_TASK_ENABLE__, $(COM_DEFS)),)
+  include $(strip $(MAKE_COMMON))/rule_def/c2k_def.mak
+endif
+
+ifeq ($(strip $(RTOS)),NUCLEUS)
+  COM_DEFS += KAL_ON_NUCLEUS
+  ifeq ($(strip $(RTOS_DEBUG)),TRUE)
+     COM_DEFS += NU_DEBUG
+  else
+     COM_DEFS += NU_NO_ERROR_CHECKING
+  endif
+endif
+
+ifeq ($(strip $(RTOS)),NUCLEUS_V2)
+  COM_DEFS += KAL_ON_NUCLEUS __NUCLEUS_VERSION_2__
+  ifeq ($(strip $(RTOS_DEBUG)),TRUE)
+     COM_DEFS += NU_DEBUG
+  else
+     COM_DEFS += NU_NO_ERROR_CHECKING
+  endif
+endif
+
+ifeq ($(strip $(RTOS)),NUCLEUS_V3)
+  COM_DEFS += KAL_ON_NUCLEUS __NUCLEUS_VERSION_3__
+  ifeq ($(strip $(RTOS_DEBUG)),TRUE)
+     COM_DEFS += NU_DEBUG
+  else
+     COM_DEFS += NU_NO_ERROR_CHECKING
+  endif
+endif
+
+ifeq ($(strip $(RTOS)),THREADX)
+  COM_DEFS += KAL_ON_THREADX
+  COM_DEFS += TX_ENABLE_IRQ_NESTING TX_DISABLE_NOTIFY_CALLBACKS \
+              TX_DISABLE_PREEMPTION_THRESHOLD TX_DISABLE_STACK_FILLING TX_REACTIVE_INLINE
+  ifneq ($(strip $(RTOS_DEBUG)),TRUE)
+     COM_DEFS += TX_DISABLE_ERROR_CHECKING
+  endif
+endif
+
+ifeq ($(strip $(RTOS)),MERTOS)
+  COM_DEFS += KAL_ON_MERTOS
+endif
+
+ifdef NR_PLUS_LTE_ONLY
+  ifeq ($(strip $(NR_PLUS_LTE_ONLY)),TRUE)
+    COM_DEFS += __NR_PLUS_L_ONLY__
+  endif
+endif
+
+ifneq ($(filter __GEMINI_NR_RAM_REDUCE__,$(strip $(COM_DEFS))),)
+  ifeq ($(filter __NR_PLUS_L_ONLY__,$(strip $(COM_DEFS))),)
+    $(error __GEMINI_NR_RAM_REDUCE__ can only be turned on when __NR_PLUS_L_ONLY__ defined)
+  endif
+endif
+
+ifdef SINGLE_BAND_NUM_EXTENSION_SUPPORT
+  ifeq ($(strip $(SINGLE_BAND_NUM_EXTENSION_SUPPORT)),TRUE)
+    COM_DEFS += __SINGLE_BAND_NUM_EXTENDED__
+  endif
+endif
+
+ifdef LNA_IDX_NUM_EXTENSION_SUPPORT
+  ifeq ($(strip $(LNA_IDX_NUM_EXTENSION_SUPPORT)),TRUE)
+    COM_DEFS += _LNA_IDX_NUM_EXTENSION_
+  endif
+endif
+
+ifdef FIVEG_MODE_SUPPORT
+ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+ifdef GEMINI
+  ifdef DSDA
+    ifeq ($(strip $(DSDA)),TRUE)
+      COM_DEFS   += __ENABLE_DSDA__
+    endif
+  endif
+  ifneq ($(strip $(GEMINI)),FALSE)
+    ifdef GEMINI_NR
+      ifneq ($(strip $(GEMINI_NR)),FALSE)
+        COM_DEFS += __GEMINI_NR__
+        COM_DEFS += GEMINI_PLUS_NR=$(strip $(GEMINI_NR))
+        COM_DEFS += MAX_NR_NUM=$(strip $(GEMINI_NR))
+      else
+        ifdef GEMINI_L
+          ifneq ($(strip $(GEMINI_L)),FALSE)
+            COM_DEFS += MAX_NR_NUM=2
+            COM_DEFS += __GEMINI_NR__
+            COM_DEFS += GEMINI_PLUS_NR=2
+          else
+            COM_DEFS += MAX_NR_NUM=1
+          endif
+        else
+          COM_DEFS += MAX_NR_NUM=1
+        endif
+      endif
+    else
+      ifdef GEMINI_L
+        ifneq ($(strip $(GEMINI_L)),FALSE)
+          COM_DEFS += MAX_NR_NUM=2
+          ifeq ($(filter __GEMINI_NR_RAM_REDUCE__,$(strip $(COM_DEFS))),)
+            COM_DEFS += __GEMINI_NR__
+            COM_DEFS += GEMINI_PLUS_NR=2
+          endif  
+        else
+          COM_DEFS += MAX_NR_NUM=1
+        endif
+      else
+        COM_DEFS += MAX_NR_NUM=1
+      endif
+    endif
+  else
+    COM_DEFS += MAX_NR_NUM=1
+  endif
+else
+  COM_DEFS += MAX_NR_NUM=1
+endif
+endif
+endif
+
+ifdef GEMINI_L
+  ifneq ($(strip $(GEMINI_L)),FALSE)
+    COM_DEFS += __GEMINI_LTE__
+    COM_DEFS += GEMINI_PLUS_LTE=$(strip $(GEMINI_L))
+  endif
+endif
+
+ifdef GEMINI_W
+  ifneq ($(strip $(GEMINI_W)),FALSE)
+    COM_DEFS += __GEMINI_WCDMA__
+    COM_DEFS += GEMINI_PLUS_WCDMA=$(strip $(GEMINI_W))
+  endif
+endif
+
+# GEMINI
+ifdef GEMINI
+  ifneq ($(strip $(GEMINI)),FALSE)
+    COM_DEFS += __REMOTE_SIM__ __SRLTE_ENHANCE__
+    COM_DEFS += __GEMINI__ __GEMINI_GSM__ __GSM_RAT__ DRV_MULTIPLE_SIM __CTA_DUAL_SIM_STANDARD__
+    COM_DEFS += __L4C_ROOT__ __GEMINI_3G_SWITCH__
+    COM_DEFS += __MULTIPLE_PS__
+    COM_DEFS += __T_PLUS_W__
+    COM_DEFS += __PLMN_LIST_IN_VIRTUAL_MODE__ 
+    COM_DEFS += __ENABLE_PLMN_LIST_IN_VIRTUAL_MODE__
+    COM_DEFS += __GEMINI_REPORT_FULL_CAPABILITY__
+    COM_DEFS += __INTRA_BAND_DR__
+    COM_DEFS += __GEMINI_GAP_CUSTOMIZATION__
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COM_DEFS += __OP01_FDD__
+    endif
+    # assign GEMINI to GEMINI_PLUS_GSM
+    ifndef GEMINI_PLUS
+      GEMINI_PLUS = $(strip $(GEMINI))
+    endif
+    ifndef GEMINI_PLUS_GSM
+      GEMINI_PLUS_GSM = $(strip $(GEMINI))
+    endif
+
+    COM_DEFS    += GEMINI_PLUS=$(strip $(GEMINI))
+    COM_DEFS    += GEMINI_PLUS_GSM=$(strip $(GEMINI_PLUS_GSM))
+       
+  endif
+endif
+
+ifdef MAX_SW_ALLOWED_ENDC_CC
+   COM_DEFS += MAX_SW_ALLOWED_ENDC_CC=$(strip $(MAX_SW_ALLOWED_ENDC_CC))
+endif
+
+# GPS_SUPPORT
+ifdef GPS_SUPPORT
+  ifeq ($(strip $(GPS_SUPPORT)),SMART_PHONE_MODEM)
+    COM_DEFS    += __GPS_SUPPORT__
+  endif
+endif
+
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  COM_DEFS    +=  IDMA_DOWNLOAD
+endif
+
+ifdef $(COM_DEFS_FOR_PLATFORM)
+  COM_DEFS +=  $(COM_DEFS_FOR_$(strip $(PLATFORM)))
+endif
+
+ifdef $(COM_DEFS_FOR_RF_MODULE)
+  COM_DEFS +=  $(COM_DEFS_FOR_$(strip $(RF_MODULE)))
+endif
+
+ifdef UMTS_RF_MODULE
+ifneq ($(strip $(UMTS_RF_MODULE)),NONE)
+  ifdef $(COM_DEFS_FOR_RF_MODULE)
+    COM_DEFS  +=  $(COM_DEFS_FOR_$(strip $(UMTS_RF_MODULE)))
+  endif
+endif
+endif
+
+ifdef UMTS_TDD128_RF_MODULE
+ifneq ($(strip $(UMTS_TDD128_RF_MODULE)),NONE)
+  ifdef $(COM_DEFS_FOR_RF_MODULE)
+    COM_DEFS  +=  $(COM_DEFS_FOR_$(strip $(UMTS_TDD128_RF_MODULE)))
+  endif
+endif
+endif
+
+ifdef LTE_RF_MODULE
+ifneq ($(strip $(LTE_RF_MODULE)),NONE)
+  ifdef $(COM_DEFS_FOR_RF_MODULE)
+    COM_DEFS  +=  $(COM_DEFS_FOR_$(strip $(LTE_RF_MODULE)))
+  endif
+endif
+endif
+
+ifdef C2K_RF_MODULE
+ifneq ($(strip $(C2K_RF_MODULE)),NONE)
+  ifdef $(COM_DEFS_FOR_RF_MODULE)
+    COM_DEFS  +=  $(COM_DEFS_FOR_$(strip $(C2K_RF_MODULE)))
+  endif
+endif
+endif
+
+ifdef MM_RF_MODULE
+ifneq ($(strip $(MM_RF_MODULE)),NONE)
+  ifdef $(COM_DEFS_FOR_RF_MODULE)
+    ifneq ($(COM_DEFS_FOR_$(strip $(MM_RF_MODULE))),)
+      COM_DEFS  +=  $(COM_DEFS_FOR_$(strip $(MM_RF_MODULE)))
+    endif
+  endif
+endif
+endif
+
+ifdef NR_RF_MODULE
+ifneq ($(strip $(NR_RF_MODULE)),NONE)
+  ifdef $(COM_DEFS_FOR_RF_MODULE)
+    COM_DEFS  +=  $(COM_DEFS_FOR_$(strip $(NR_RF_MODULE)))
+  endif
+endif
+endif
+
+ifdef CARRIER_RF_CA_BC_FILTER
+  ifeq ($(strip $(CARRIER_RF_CA_BC_FILTER)), TRUE)
+    COM_DEFS += __PLMN_RF_CA_FILTER__
+  endif
+endif
+
+# Board Options
+ifneq ($(strip $(BOARD_VER)),)
+  COM_DEFS    += $(BOARD_VER)
+endif
+
+# Board Subversion
+ifneq ($(strip $(SUB_BOARD_VER)),)
+  COM_DEFS    += $(SUB_BOARD_VER)
+endif
+
+ifdef $(COM_DEFS_FOR_BAND_SUPPORT)
+  COM_DEFS +=  $(COM_DEFS_FOR_$(strip $(BAND_SUPPORT)))
+else
+  # the same as DUAL900
+  COM_DEFS += __EGSM900__ __DCS1800__
+endif
+
+ifdef $(COM_DEFS_FOR_AFC_VCXO_TYPE)
+  COM_DEFS +=  $(COM_DEFS_FOR_$(strip $(AFC_VCXO_TYPE)))
+endif
+
+ifdef PMIC_PRESENT
+  ifeq ($(strip $(PMIC_PRESENT)),TRUE)
+    COM_DEFS    += PMIC_PRESENT
+  endif
+endif
+
+ifdef PMIC
+  ifneq ($(strip $(PMIC)),NONE)
+     COM_DEFS    += PMIC_PRESENT
+	 COM_DEFS    += $(PMIC)	 
+  endif
+endif
+
+ifdef EXT_PMIC
+  ifneq ($(strip $(EXT_PMIC)),NONE)
+     COM_DEFS    += EXT_PMIC_PRESENT
+	 COM_DEFS    += $(EXT_PMIC)	 
+  endif
+endif
+
+ifdef NAND_SUPPORT
+  ifeq ($(strip $(NAND_SUPPORT)),TRUE)
+    COM_DEFS    += NAND_SUPPORT
+  endif
+endif
+
+ifdef DEMAND_PAGING_LEVEL
+  ifeq ($(strip $(DEMAND_PAGING_LEVEL)),DPV2)
+    COM_DEFS    += __DEMAND_PAGING_V2__
+  endif
+endif
+
+ifdef AEC_ENABLE
+  ifeq ($(strip $(AEC_ENABLE)),TRUE)
+    COM_DEFS    += AEC_ENABLE
+  endif
+endif
+
+ifdef IC_TEST_TYPE
+  ifneq ($(strip $(IC_TEST_TYPE)),NONE)
+    ifeq ($(findstring _SLT,$(IC_TEST_TYPE)),_SLT)
+      COM_DEFS += __IC_SLT__
+    endif
+  endif
+endif
+
+ifdef AMR_LINK_SUPPORT
+  ifeq ($(strip $(AMR_LINK_SUPPORT)),TRUE)
+    COM_DEFS   += __AMR_SUPPORT__
+  endif
+endif
+
+ifdef DEFAULT_WORLD_MODE_ID
+  COM_DEFS += DEFAULT_WORLD_MODE_ID=$(strip $(DEFAULT_WORLD_MODE_ID))
+endif
+
+UART_PORT_USED_COUNT = 0
+UART_PORT_FREE_COUNT = 0
+ifeq ($(strip $(UART_PORT_FREE_COUNT)),1)
+  ifeq ($(strip $(UART_PORT_USED_COUNT)),2)
+    # uart count is not enough for engineer mode
+    COM_DEFS += __ONLY_ONE_UART__
+  endif
+endif
+ifeq ($(strip $(UART_PORT_FREE_COUNT)),0)
+  ifneq ($(strip $(UART_PORT_USED_COUNT)),0)
+    # uart count is not enough for engineer mode
+    COM_DEFS += __ONLY_ONE_UART__
+  endif
+endif
+
+ifdef EDGE_SUPPORT
+  ifeq ($(strip $(EDGE_SUPPORT)),TRUE)
+    COM_DEFS    += __EGPRS_MODE__
+    ifeq ($(strip $(L1_EPSK_TX)),TRUE)
+      COM_DEFS    +=  __EPSK_TX__
+    endif
+  endif
+endif
+
+ifeq ($(strip $(L1_GPRS)),TRUE)
+  COM_DEFS += __TBF_EST__
+endif
+
+ifdef DSPIRDBG
+  ifeq ($(strip $(DSPIRDBG)),TRUE)
+    COM_DEFS    += __DSPIRDBG__
+  endif
+endif
+
+ifdef DISPLAY_TYPE
+  COM_DEFS    += __MMI_DISPLAY_TYPE_$(call Upper,$(strip $(DISPLAY_TYPE)))__
+endif
+
+ifdef SECURE_SUPPORT
+  ifeq ($(strip $(SECURE_SUPPORT)),TRUE)
+    COM_DEFS    += __MTK_SECURE_PLATFORM__
+  endif
+endif
+
+ifeq ($(strip $(TST_LOGACC_SUPPORT)),TRUE)
+  ifeq ($(strip $(TST_SUPPORT)),TRUE)
+    COM_DEFS    += __LOGACC_ENABLE__
+  endif
+endif
+
+ifeq ($(strip $(USB_MASS_STORAGE_SUPPORT)),TRUE)
+  COM_DEFS +=  __USB_MASS_STORAGE_ENABLE__
+endif
+
+ifeq ($(strip $(USB_COM_PORT_SUPPORT)),TRUE)
+  COM_DEFS +=  __USB_COM_PORT_ENABLE__
+endif
+
+ifeq ($(strip $(AMRWB_LINK_SUPPORT)),TRUE)
+  COM_DEFS  +=  __AMRWB_LINK_SUPPORT__
+endif
+
+ifdef UMTS_MODE_SUPPORT
+  ifneq ($(strip $(UMTS_MODE_SUPPORT)),NONE)
+      COM_DEFS   += __3G_AUTO_BAND_MECHANISM__
+    ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+      COM_DEFS += __UMTS_FDD_MODE__ __ME_STORED_EHPLMN__
+    endif
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+       COM_DEFS += __UMTS_TDD128_MODE__ __R7_EHPLMN__ __ME_STORED_EHPLMN__ __VSIM__
+       ifneq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+         COM_DEFS += __TDD_UMAC_HISR_DISABLE__
+       endif
+    endif
+  else
+    ifeq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+      ifneq ($(filter MT6575 MT6577,$(strip $(PLATFORM))),)
+        COM_DEFS +=  __SMARTPHONE_GPRS_ONLY__
+      endif
+    endif
+  endif
+endif
+
+ifdef ECALL_SUPPORT
+  ifeq ($(strip $(ECALL_SUPPORT)),TRUE)
+    COM_DEFS += __ECALL_SUPPORT__
+    COM_DEFS += __ECALL_PSAP_SUPPORT__
+  endif
+endif
+
+ifdef NG_ECALL_SUPPORT
+  ifeq ($(strip $(NG_ECALL_SUPPORT)),TRUE)
+    COM_DEFS += __NG_ECALL_SUPPORT__
+  endif
+endif
+
+# Memory Remap Setting
+# Default is BANK0_BANKF_REMAP
+# For MT629X series, it is BANK0_BANK4_REMAP
+BANK0_BANK4_REMAP_PLATFORM = MT6290
+ifneq ($(filter $(strip $(PLATFORM)),$(BANK0_BANK4_REMAP_PLATFORM)),)
+  COM_DEFS += __BANK0_BANK4_REMAP__
+endif
+
+ifdef GPRS_CLASS_10
+  ifeq ($(strip $(GPRS_CLASS_10)),TRUE)
+    COM_DEFS    += __GPRS_MULTISLOT_CLASS_10__
+  endif
+endif
+
+ifdef EDGE_CLASS_10
+  ifeq ($(strip $(EDGE_CLASS_10 )),TRUE)
+    COM_DEFS    += __EDGE_MULTISLOT_CLASS_10__
+  endif
+endif
+
+ifdef PS_MCU_CLOCK
+  # convert MCU_XXX_YYM to XXX.YY
+  CLOCK_MHZ = $(subst _,.,$(subst M,,$(subst MCU_,,$(strip $(PS_MCU_CLOCK)))))
+  ifneq ($(CLOCK_MHZ),)
+    COM_DEFS += CPU_CLOCK_MHZ=$(CLOCK_MHZ)
+  endif
+endif
+
+ifeq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+  COM_DEFS += MED_NOT_PRESENT MED_V_NOT_PRESENT
+endif
+
+ifeq ($(strip $(USB_MASS_STORAGE_CDROM_SUPPORT)),TRUE)
+  COM_DEFS +=  __USB_MASS_STORAGE_CDROM_ENABLE__
+endif
+
+ifdef AVI_FILE_FORMAT_SUPPORT
+  ifeq ($(strip $(AVI_FILE_FORMAT_SUPPORT)),TRUE)
+    COM_DEFS    += __AVI_FILE_FORMAT_SUPPORT__
+  endif
+endif
+
+ifdef RM_FILE_FORMAT_SUPPORT
+  ifeq ($(strip $(RM_FILE_FORMAT_SUPPORT)),TRUE)
+    COM_DEFS    += __RM_FILE_FORMAT_SUPPORT__
+  endif
+endif
+
+ifndef FLAVOR
+   COM_DEFS     += __FLAVOR_NOT_PRESENT__
+endif
+
+ifdef FLAVOR
+  ifneq ($(strip $(FLAVOR)),NONE)
+    COM_DEFS    += __FLAVOR_$(strip $(FLAVOR))__
+  else
+    COM_DEFS    += __FLAVOR_NOT_PRESENT__
+  endif
+endif
+
+ifdef KAL_TRACE_OUTPUT
+  ifeq ($(strip $(KAL_TRACE_OUTPUT)),NONE)
+    COM_DEFS += MODULE_TRACE_OFF
+  endif
+  ifeq ($(strip $(KAL_TRACE_OUTPUT)),CUST_PARTIAL)
+    COM_DEFS += MODULE_TRACE_OFF
+  endif
+endif
+
+ifdef DEMO_PROJECT
+  ifeq ($(strip $(DEMO_PROJECT)),TRUE)
+    COM_DEFS   += MTK_INTERNAL_MMI_FEATURES
+    COM_DEFS   += __MTK_INTERNAL__
+    COM_DEFS   += __SIM_UNIT_TEST__
+    COM_DEFS   += __SIM_UNIT_TEST_V2__
+  endif
+endif
+
+ifdef SP_VIDEO_CALL_SUPPORT
+  ifeq ($(strip $(SP_VIDEO_CALL_SUPPORT)),TRUE)
+    ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+      COM_DEFS   += __VT_TRANSPORT_SUPPORT__ __VIDEO_CALL_SUPPORT__
+    endif
+  endif
+endif
+
+ifdef EMLPP_SUPPORT
+  ifeq ($(strip $(EMLPP_SUPPORT)),TRUE)
+     COM_DEFS    += __EMLPP_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(L1_CATCHER)),TRUE)
+  ifeq ($(strip $(TST_SUPPORT)),TRUE)
+    COM_DEFS    += L1_CATCHER
+  endif
+  ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+    COM_DEFS    += L1_CATCHER
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+  ifeq ($(strip $(DHL_ULSP_SUPPORT)),TRUE)
+    ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+      COM_DEFS += __USE_ULSP_SW_SIMULATOR__
+    else
+      ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+        COM_DEFS += __USE_ULSP_SW_SIMULATOR__
+      else
+        # Disable for LS check-in 97 API, should re-enable after ULSP ready
+        COM_DEFS += __USE_ULSP__
+        #COM_DEFS += __USE_ULSP_SW_SIMULATOR__
+      endif
+    endif
+  else
+    COM_DEFS += __USE_ULSP_SW_SIMULATOR__	# disable this to enable legacy SW logging
+  endif
+else
+  ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+    ifeq ($(strip $(DHL_ULSP_SUPPORT)),TRUE)
+      ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+        COM_DEFS += __USE_ULSP_SW_SIMULATOR__
+      else
+        ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+          COM_DEFS += __USE_ULSP_SW_SIMULATOR__
+        else
+          # Disable for LS check-in 97 API, should re-enable after ULSP ready
+          COM_DEFS += __USE_ULSP__
+          #COM_DEFS += __USE_ULSP_SW_SIMULATOR__
+        endif
+      endif
+    else
+      COM_DEFS += __USE_ULSP_SW_SIMULATOR__	# disable this to enable legacy SW logging
+    endif
+  else
+    ifeq ($(strip $(DHL_ULSP_SUPPORT)),TRUE)
+      ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+        ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+          COM_DEFS += __USE_ULSP__
+        endif
+      endif
+    endif
+  endif
+endif
+ifeq ($(strip $(MTK_DSP_DEBUG)),TRUE)
+  COM_DEFS    += MTK_DSP_DEBUG
+endif
+
+ifdef CSD_SUPPORT
+  ifneq ($(strip $(CSD_SUPPORT)),NONE)
+    # Support CSD
+    COM_DEFS    += CSD_SUPPORT
+    ifeq ($(strip $(CSD_SUPPORT)),T_NT)
+      COM_DEFS    += __CSD_NT__ __CSD_T__
+    else
+      ifeq ($(strip $(CSD_SUPPORT)),NT_ONLY)
+        COM_DEFS    += __CSD_NT__
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(FAST_UART)),TRUE)
+  COM_DEFS    += __FAST_UART__
+endif
+
+ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+  COM_DEFS      += ABM_NOT_PRESENT TCPIP_NOT_PRESENT SOC_NOT_PRESENT
+else
+  ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_EGPRS_MODE)
+    COM_DEFS   += ABM_NOT_PRESENT TCPIP_NOT_PRESENT SOC_NOT_PRESENT
+  endif
+endif
+
+ifdef BOOT_FAT_RESET
+  ifeq ($(strip $(BOOT_FAT_RESET)),TRUE)
+    COM_DEFS    += __BOOT_FAT_RESET__
+  endif
+endif
+
+ifdef FS_OPEN_HINT_SUPPORT
+  ifeq ($(strip $(FS_OPEN_HINT_SUPPORT)),TRUE)
+     COM_DEFS   += __FS_OPEN_HINT__
+  endif
+endif
+
+ifdef FS_DEDICATED_BUFFER
+  ifeq ($(strip $(FS_DEDICATED_BUFFER)),TRUE)
+     COM_DEFS   += __FS_DEDICATED_BUFFER__
+  endif
+endif
+
+ifdef FS_TRACE_SUPPORT
+  ifdef TST_SUPPORT
+    ifeq ($(strip $(FS_TRACE_SUPPORT)),TRUE)
+      ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+        COM_DEFS   += __FS_TRACE_SUPPORT__
+      endif
+    endif
+  endif
+endif
+
+ifdef TX_POWER_OFFSET_SUPPORT
+  ifeq ($(strip $(TX_POWER_OFFSET_SUPPORT)),TRUE)
+    COM_DEFS    += __TX_POWER_OFFSET_SUPPORT__
+  endif
+endif
+
+ifdef SAR_TX_POWER_BACKOFF_SUPPORT
+  ifeq ($(strip $(SAR_TX_POWER_BACKOFF_SUPPORT)),TRUE)
+    COM_DEFS += __SAR_TX_POWER_BACKOFF_SUPPORT__
+  endif
+endif
+
+ifdef UE_CAP_POWER_CLASS_1_DOT_5_SUPPORT
+  ifeq ($(strip $(UE_CAP_POWER_CLASS_1_DOT_5_SUPPORT)),TRUE)
+    COM_DEFS += __UE_CAP_POWER_CLASS_1_DOT_5_SUPPORT__
+  endif
+endif
+
+ifdef SAR_TX_POWER_BACKOFF_BY_ANT_COMB_SUPPORT
+  ifeq ($(strip $(SAR_TX_POWER_BACKOFF_BY_ANT_COMB_SUPPORT)),TRUE)
+    COM_DEFS += __SAR_TX_POWER_BACKOFF_BY_ANT_COMB_SUPPORT__
+  endif
+endif
+
+ifdef WCDMA_TX_NSFT_POWER_OFFSET_SUPPORT
+  ifeq ($(strip $(WCDMA_TX_NSFT_POWER_OFFSET_SUPPORT)),TRUE)
+    COM_DEFS += __WCDMA_TX_NSFT_POWER_OFFSET_SUPPORT__
+  endif
+endif
+
+ifdef RX_POWER_OFFSET_SUPPORT
+  ifeq ($(strip $(RX_POWER_OFFSET_SUPPORT)),TRUE)
+    COM_DEFS += __RX_POWER_OFFSET_SUPPORT__
+  endif
+endif
+
+ifdef 4G_TX_ALTERNATIVE_ROUTE_SUPPORT_CCA
+  ifeq ($(strip $(4G_TX_ALTERNATIVE_ROUTE_SUPPORT_CCA)),TRUE)
+    COM_DEFS += __4G_TX_ALTERNATIVE_ROUTE_SUPPORT_CCA__
+  endif
+endif
+
+ifdef MMRF_ROUTE_SIZE_ORDER
+  COM_DEFS += __$(strip $(MMRF_ROUTE_SIZE_ORDER))__
+endif
+
+ifdef MMRF_GOLDEN_CALDATA_FOR_OTA_ROUTE_SUPPORT
+  ifeq ($(strip $(MMRF_GOLDEN_CALDATA_FOR_OTA_ROUTE_SUPPORT)),TRUE)
+    COM_DEFS    += __MMRF_GOLDEN_CALDATA_FOR_OTA_ROUTE_SUPPORT__
+  endif
+endif
+
+ifdef RFC_ROUTE_SIZE_OPTION
+  COM_DEFS += __$(strip $(RFC_ROUTE_SIZE_OPTION))__
+endif
+
+ifdef GSM_EM_TX_POWER_CONTROL_SUPPORT
+  ifeq ($(strip $(GSM_EM_TX_POWER_CONTROL_SUPPORT)),TRUE)
+    COM_DEFS    += __GSM_EM_TX_POWER_CONTROL_SUPPORT__
+  endif
+endif
+
+ifndef PHB_SIM_ENTRY
+  PHB_SIM_ENTRY = 250
+endif
+ifdef PHB_SIM_ENTRY
+  COM_DEFS    += MAX_PHB_SIM_ENTRY=$(strip $(PHB_SIM_ENTRY))
+endif
+
+ifndef PHB_PHONE_ENTRY
+  PHB_PHONE_ENTRY = 200
+endif
+ifdef PHB_PHONE_ENTRY
+  COM_DEFS    += MAX_PHB_PHONE_ENTRY=$(strip $(PHB_PHONE_ENTRY))
+endif
+
+ifndef PHB_LN_ENTRY
+  PHB_LN_ENTRY = 20
+endif
+ifdef PHB_LN_ENTRY
+  COM_DEFS    += MAX_PHB_LN_ENTRY=$(strip $(PHB_LN_ENTRY))
+endif
+
+ifdef EMS_SUPPORT
+  ifeq ($(strip $(EMS_SUPPORT)),EMS_50)
+    COM_DEFS    +=  __EMS_REL5__
+  endif
+  ifeq ($(strip $(EMS_SUPPORT)),EMS_40)
+    # do nothing
+  endif
+  ifeq ($(strip $(EMS_SUPPORT)),EMS_SLIM)
+    COM_DEFS    +=  __SLIM_EMS__
+  endif
+  ifeq ($(strip $(EMS_SUPPORT)),EMS_ULC_SLIM)
+    COM_DEFS    +=  __SLIM_EMS__ __ULC_SLIM_EMS__
+  endif
+endif
+
+MULTI_LNA_MODE_CALIBRATION_SUPPORT_PLATFORM = MT6575 MT6280 MT6577 MT6589 MT6290 MT6595 MT6755 MT6797 $(strip $(SUPPORT_PLATFORM))
+ifneq ($(filter $(MULTI_LNA_MODE_CALIBRATION_SUPPORT_PLATFORM), $(strip $(PLATFORM))),)
+  COM_DEFS    +=  __MULTI_LNA_MODE_CALIBRATION_SUPPORT__
+endif
+
+ifndef SUB_LCD_SIZE
+  SUB_LCD_SIZE = NONE
+endif
+ifdef SUB_LCD_SIZE
+  COM_DEFS += __MMI_SUBLCD_$(call Upper,$(strip $(SUB_LCD_SIZE)))__
+endif
+
+ifdef OTP_SUPPORT
+  ifeq ($(strip $(OTP_SUPPORT)),TRUE)
+    COM_DEFS    += __SECURITY_OTP__
+    COM_DEFS    += __NVRAM_OTP__
+  endif
+endif
+
+ifndef DLT_ALWAYS_LOAD_BUFFER_SIZE
+  DLT_ALWAYS_LOAD_BUFFER_SIZE = 0
+endif
+ifdef DLT_ALWAYS_LOAD_BUFFER_SIZE
+  COM_DEFS    += __DLT_ALWAYS_LOAD_BUFFER_SIZE__=$(strip $(DLT_ALWAYS_LOAD_BUFFER_SIZE))
+endif
+
+ifndef DLT_LOAD_ON_DEMAND_BUFFER_SIZE
+  DLT_LOAD_ON_DEMAND_BUFFER_SIZE = 0
+endif
+ifdef DLT_LOAD_ON_DEMAND_BUFFER_SIZE
+  COM_DEFS    += __DLT_LOAD_ON_DEMAND_BUFFER_SIZE__=$(strip $(DLT_LOAD_ON_DEMAND_BUFFER_SIZE))
+endif
+
+ifneq ($(strip $(OPTR_CODE)),OP12)
+  COM_DEFS    += __IP_NUMBER__
+endif
+
+ifeq ($(strip $(CLIB_TIME_SUPPORT)), TRUE)
+  COM_DEFS += __SUPPORT_CLIB_TIME__
+endif
+
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  COM_DEFS         += __MASK_L4__ __LTE_RAT__ __LTE_REL9__
+  ifeq ($(strip $(SIM_STANDALONE)),TRUE)
+    COM_DEFS         += __SIM_STANDALONE__
+  endif
+  COM_DEFS += __23G_PRI_RESEL_SUPPORT__
+endif
+
+ifdef NOR_SUPPORT_RAW_DISK
+  ifeq ($(strip $(NOR_SUPPORT_RAW_DISK)),TRUE)
+    COM_DEFS += __NOR_SUPPORT_RAW_DISK__
+  endif
+endif
+
+ifeq ($(strip $(TST_WRITE_TO_FILE)),TRUE)
+  ifeq ($(strip $(TST_SUPPORT)),TRUE)
+    COM_DEFS    += __TST_WRITE_TO_FILE__
+  endif
+endif
+
+ifeq ($(filter REL_CR_%,$(strip $(RELEASE_PACKAGE))),)
+    COM_DEFS += __GIS_INTERNAL__
+    COM_DEFS += __ENABLE_WW_SA_CAP__
+endif
+
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  ifeq ($(strip $(LPP_SUPPORT)),CONTROL_PLANE)
+    COM_DEFS   += __LPP_SUPPORT__
+    COM_DEFS   += __LPP_CP_SUPPORT__ __LPP_REL_15__
+  endif
+endif
+
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  ifeq ($(strip $(LPP_SUPPORT)),CONTROL_PLANE)
+    ifeq ($(strip $(LPP_EXT_SUPPORT)),TRUE)
+      COM_DEFS += __LPP_EXT_SUPPORT__
+    endif
+  endif
+endif
+
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  ifeq ($(strip $(LPP_SUPPORT)),CONTROL_PLANE)
+    ifeq ($(strip $(LTE_OTDOA_SUPPORT)),TRUE)
+      COM_DEFS += __LTE_OTDOA_SUPPORT__
+    endif
+  endif
+endif
+
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  ifeq ($(strip $(LPP_SUPPORT)),CONTROL_PLANE)
+    ifeq ($(strip $(LTE_ECID_SUPPORT)),TRUE)
+      COM_DEFS += __LTE_ECID_SUPPORT__
+    endif
+  endif
+endif
+
+ifdef L1_GPS_REF_TIME_SUPPORT
+  ifeq ($(strip $(L1_GPS_REF_TIME_SUPPORT)), TRUE)
+    COM_DEFS += __L1_GPS_AUTO_TIMING_SYNC_SUPPORT__
+    COM_DEFS += __GNSS_MD_TIME_SYNC__
+  endif
+endif
+
+ifdef AGPS_SUPPORT
+  ifneq ($(strip $(AGPS_SUPPORT)), NONE)
+    ifneq ($(findstring AGPS,$(AGPS_SUPPORT)),)
+      COM_DEFS += __AGPS_SUPPORT__ __AGNSS_SUPPORT__
+    endif
+    ifneq ($(findstring ABDS,$(AGPS_SUPPORT)),)
+      COM_DEFS += __ABDS_SUPPORT__
+    endif
+    ifneq ($(findstring AGLONASS,$(AGPS_SUPPORT)),)
+      COM_DEFS += __AGLONASS_SUPPORT__
+    endif
+    ifneq ($(findstring AGALILEO,$(AGPS_SUPPORT)),)
+      COM_DEFS += __AGALILEO_SUPPORT__
+    endif
+    COM_DEFS += __RRLP_SUPPORT__ __AGPS_CONTROL_PLANE__ __NBR_CELL_INFO__
+    COM_DEFS += __RRLP_REL_5__ __RRLP_REL_7__ __POS_CAP_TRANSFER_PROCEDURE_SUPPORT__
+    ifdef L1_GPS_REF_TIME_SUPPORT
+      ifeq ($(strip $(L1_GPS_REF_TIME_SUPPORT)), TRUE)
+        COM_DEFS += __L1_GPS_REF_TIME_SUPPORT__
+      endif
+    endif
+    COM_DEFS += __UAGPS_CP_SUPPORT__
+    COM_DEFS += __AGPS_CP_SIB15__
+    COM_DEFS += __ULCS_ASN_SUPPORT_R6__
+    COM_DEFS += __ULCS_ASN_SUPPORT_R7__
+    COM_DEFS += __ULCS_ASN_SUPPORT_R8__
+    COM_DEFS += __ULCS_ASN_SUPPORT_R9__
+    COM_DEFS += __ULCS_ASN_SUPPORT_R10__
+    COM_DEFS += __ULCS_ASN_SUPPORT_R11__
+  endif
+endif
+
+ifdef CNAP_SUPPORT
+  ifeq ($(strip $(CNAP_SUPPORT)),TRUE)
+     COM_DEFS    += __CNAP_SUPPORT__
+  endif
+endif
+
+ifdef SMS_PHONE_ENTRY
+  COM_DEFS    += SMS_PHONE_ENTRY=$(strip $(SMS_PHONE_ENTRY))
+endif
+
+ifdef SMS_TOTAL_ENTRY
+  COM_DEFS    += SMS_TOTAL_ENTRY=$(strip $(SMS_TOTAL_ENTRY))
+endif
+
+ifdef IPSEC_SUPPORT
+  ifneq ($(strip $(IPSEC_SUPPORT)),FALSE)
+    COM_DEFS    += __IPSEC__
+  endif
+endif
+
+ifdef PRODUCTION_RELEASE
+  ifeq ($(strip $(PRODUCTION_RELEASE)),FALSE)
+    COM_DEFS += L1A_DEVELOP_DEBUG
+  endif
+endif
+
+ifdef GPRS_DIALUP_PPP_DROP_PACKETS_WHEN_2G_PS_SUSPEND
+  ifeq ($(strip $(GPRS_DIALUP_PPP_DROP_PACKETS_WHEN_2G_PS_SUSPEND)), TRUE)
+    COM_DEFS += __PPP_DROP_PACKETS_WHEN_2G_PS_SUSPEND__
+  endif
+endif
+
+ifneq ($(strip $(MODEM_CARD)),NONE)
+  COM_DEFS += __MODEM_CARD__
+  COM_DEFS += __DISABLE_MODEM_AUTO_POWER_OFF__
+  COM_DEFS += __MODEM_AUTO_STARTUP_TO_FLIGHT_MODE__
+  COM_DEFS += __CSCB_ALL_LANGUAGE_ON__
+  COM_DEFS += __AT_LINUX_DATA_PORT__
+  COM_DEFS += __MOBILE_BROADBAND_PROVISION_CONTEXT__
+  COM_DEFS += __CSMSS_EXPLICIT_SS_OPERATION__
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+      COM_DEFS += __SPEECH_OVER_USB__
+  endif
+  ifeq ($(strip $(MODEM_CARD)),CS_CALL_DISABLE)
+    COM_DEFS += __DISABLE_CSCALL__
+  endif
+  COM_DEFS += __SAT_AP_NOT_SUPPORT__
+endif
+
+ifeq ($(strip $(SMS_R8_NATION_LANGUAGE)),TRUE)
+  COM_DEFS += __SMS_R8_NATION_LANGUAGE__
+endif
+
+ifdef SMS_R8_TABLE_MECHANISM
+  COM_DEFS += __$(strip $(SMS_R8_TABLE_MECHANISM))__
+else
+  COM_DEFS += __SMS_R8_DEFAULT__
+endif
+
+ifdef MELODY_BUFFER_LEN
+  COM_DEFS += MAX_MELODY_BUF_LEN=$(strip $(MELODY_BUFFER_LEN))
+endif
+
+ifdef GPRS_DIALUP_PPP_SUPPORT_SPEED_UP_DIALUP
+  ifeq ($(strip $(GPRS_DIALUP_PPP_SUPPORT_SPEED_UP_DIALUP)),TRUE)
+    COM_DEFS += __PPP_SPEED_UP_IPV4_GPRS_DIALUP__
+  endif
+endif
+
+ifdef DRV_DEBUG_MEMORY_TRACE_SUPPORT
+  ifeq ($(strip $(DRV_DEBUG_MEMORY_TRACE_SUPPORT)),TRUE)
+    COM_DEFS    +=  __DRV_DBG_MEMORY_TRACE_SUPPORT__
+  endif
+endif
+
+ifdef SMART_PHONE_CORE
+  ifneq ($(strip $(SMART_PHONE_CORE)),NONE)
+    COM_DEFS += __AT_EPBW_SUPPORT__
+  endif
+endif
+
+ifdef PHB_NAME_LENGTH
+  COM_DEFS    += MAX_PHB_NAME_LENGTH=$(strip $(PHB_NAME_LENGTH))
+  COM_DEFS    += MAX_PS_NAME_SIZE=$(call plus,$(PHB_NAME_LENGTH),2)
+endif
+
+MCD_DEFS  = __R99__
+MCD_DEFS += MAX_PS_NAME_SIZE=$(call plus,$(PHB_NAME_LENGTH),2)
+ifdef MCD_CODESET_SHIFT_SUPPORT
+  ifneq ($(strip $(MCD_CODESET_SHIFT_SUPPORT)),NONE)
+    MCD_DEFS += __MCD_CODESET_SHIFT__
+    MCD_DEFS += $(foreach def, $(MCD_CODESET_SHIFT_SUPPORT), __MCD_CODESET_SHIFT_$(def)__)
+    COM_DEFS += __MCD_CODESET_SHIFT__
+    COM_DEFS += $(foreach def, $(MCD_CODESET_SHIFT_SUPPORT), __MCD_CODESET_SHIFT_$(def)__)
+  endif
+endif
+
+ifeq ($(strip $(PLMN_LIST_PREF_SUPPORT)),ON)
+  COM_DEFS += __PLMN_LIST_PREF_SUPPORT__
+endif
+
+ifdef UART_CHARGER_THE_SAME_INTERFACE
+  ifeq ($(strip $(UART_CHARGER_THE_SAME_INTERFACE)),UART1)
+    COM_DEFS    += __UART1_WITH_CHARGER__
+  endif
+  ifeq ($(strip $(UART_CHARGER_THE_SAME_INTERFACE)),UART2)
+    COM_DEFS    += __UART2_WITH_CHARGER__
+  endif
+  ifeq ($(strip $(UART_CHARGER_THE_SAME_INTERFACE)),UART3)
+    COM_DEFS    += __UART3_WITH_CHARGER__
+  endif
+endif
+
+ifdef SMS_OVER_PS_SUPPORT
+  ifeq ($(strip $(SMS_OVER_PS_SUPPORT)),TRUE)
+    COM_DEFS += __SMS_OVER_PS_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(PHB_SYNC)),ON)
+  COM_DEFS    +=   __PHB_USIM_SYNC__
+endif
+
+ifeq ($(strip $(DEBUG_ASSERT_SUPPORT)),TRUE)
+  COM_DEFS  += __DEBUG_ASSERT_SUPPORT__
+endif
+
+ifeq ($(strip $(MINIDUMP_SYMBOL_CLEAR_SUPPORT)),TRUE)
+  COM_DEFS  += __MINIDUMP_SYMBOL_CLEAR_SUPPORT__
+endif
+
+ifdef KAL_ASSERT_LEVEL
+  ifeq ($(strip $(KAL_ASSERT_LEVEL)),KAL_ASSERT_LEVEL4)
+    COM_DEFS += __KAL_ASSERT_LEVEL4__
+  endif
+  ifeq ($(strip $(KAL_ASSERT_LEVEL)),KAL_ASSERT_LEVEL3)
+    COM_DEFS += __KAL_ASSERT_LEVEL3__
+  endif
+  ifeq ($(strip $(KAL_ASSERT_LEVEL)),KAL_ASSERT_LEVEL2)
+    COM_DEFS += __KAL_ASSERT_LEVEL2__ __KAL_ASSERT_SHRINKING__
+  endif
+  ifeq ($(strip $(KAL_ASSERT_LEVEL)),KAL_ASSERT_LEVEL1)
+    COM_DEFS += __KAL_ASSERT_LEVEL1__ __KAL_ASSERT_SHRINKING__
+  endif
+  ifeq ($(strip $(KAL_ASSERT_LEVEL)),KAL_ASSERT_LEVEL0)
+    COM_DEFS += __KAL_ASSERT_LEVEL0__ __KAL_ASSERT_SHRINKING__
+  endif
+endif
+
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  COM_DEFS  += __TX_NEW_ARCHITECTURE__
+endif
+
+ifeq ($(strip $(TST_DNT_LOGGING)),TRUE)
+  ifneq ($(strip $(TST_SUPPORT)),TRUE)
+  else
+    COM_DEFS    += __TST_DNT_LOGGING__ __TST_LMU_LOGGING__ __TST_DCC_ENABLED__
+  endif
+endif
+
+ifeq ($(strip $(SML_SUPPORT)),TRUE)
+  COM_DEFS += __SIM_ME_LOCK__
+  ifdef TMO_SIM_LOCK
+    ifeq ($(strip $(TMO_SIM_LOCK)),TRUE)
+      COM_DEFS += __TMO_SIM_LOCK__
+    endif
+  endif
+endif
+
+ifeq ($(strip $(PHB_ADDITIONAL_SUPPORT)),TRUE)
+  COM_DEFS    +=   __PHB_USIM_ADDITIONAL_SUPPORT__
+endif
+
+ifeq ($(strip $(ICUSB_SUPPORT)),TRUE)
+  COM_DEFS    +=   __ICUSB_SUPPORT__
+endif
+
+ifndef PHB_FDN_ENTRY
+  PHB_FDN_ENTRY = 32
+endif
+ifdef PHB_FDN_ENTRY
+  COM_DEFS    += MAX_PHB_FDN_ENTRY=$(strip $(PHB_FDN_ENTRY))
+endif
+
+ifeq ($(strip $(2G_TX_VOLTAGE_COMPENSATION_SUPPORT)),TRUE)
+  COM_DEFS    += __2G_TX_VOLTAGE_COMPENSATION_SUPPORT__
+endif
+
+ifeq ($(strip $(2G_RX_DIVERSITY_PATH_SUPPORT)),TRUE)
+  COM_DEFS    += __2G_RX_DIVERSITY_PATH_SUPPORT__
+endif
+
+ifeq ($(strip $(MMRF_RF_HAL_SEQ_GEN_SUPPORT)),TRUE)
+  COM_DEFS    += __MMRF_RF_HAL_SEQ_GEN_SUPPORT__
+endif
+
+ifeq ($(strip $(RF_BSI_CLK_DIV_BY_AP_ENABLE)),TRUE)
+  COM_DEFS    += __RF_BSI_CLK_DIV_BY_AP_ENABLE__
+endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R99_SUPPORT)
+  COM_DEFS    +=   __R99__
+endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R4_SUPPORT)
+  COM_DEFS    +=   __R99__ __GERAN_R4__ __REL4__
+endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R5_SUPPORT)
+    COM_DEFS    +=   __R99__ __GERAN_R4__ __REL4__ __GERAN_R5__ __REL5__ __USIM_SUPPORT__
+endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R6_SUPPORT)
+    COM_DEFS    +=   __R99__ __GERAN_R4__ __REL4__ __GERAN_R5__ __REL5__ __GERAN_R6__  __REL6__ __USIM_SUPPORT__ __FDD_REDIRECTION__ __CMCC_FR__
+endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R7_SUPPORT)
+    COM_DEFS    +=   __R99__ __GERAN_R4__ __REL4__ __GERAN_R5__ __REL5__ __GERAN_R6__ __REL6__ __USIM_SUPPORT__ __NEW_TBF_ARCH__ __REMOVE_FA__ __MAC_NEW_ARCH__ __GERAN_R7__ __FDD_REDIRECTION__ __CMCC_FR__
+endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R8_SUPPORT)
+    COM_DEFS    +=   __R99__ __GERAN_R4__ __REL4__  __GERAN_R5__ __REL5__  __GERAN_R6__  __REL6__ __USIM_SUPPORT__ __NEW_TBF_ARCH__ __REMOVE_FA__ __MAC_NEW_ARCH__ __GERAN_R7__ __GERAN_R8__ __FDD_REDIRECTION__ __CMCC_FR__
+endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R9_SUPPORT)
+    COM_DEFS    +=   __R99__ __GERAN_R4__ __REL4__  __GERAN_R5__ __REL5__  __GERAN_R6__  __REL6__ __USIM_SUPPORT__ __NEW_TBF_ARCH__ __REMOVE_FA__ __MAC_NEW_ARCH__ __GERAN_R7__ __GERAN_R8__ __GERAN_R9__ __FDD_REDIRECTION__ __CMCC_FR__
+    endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R10_SUPPORT)
+    COM_DEFS    +=   __R99__ __GERAN_R4__ __REL4__  __GERAN_R5__ __REL5__  __GERAN_R6__  __REL6__ __USIM_SUPPORT__ __NEW_TBF_ARCH__ __REMOVE_FA__ __MAC_NEW_ARCH__ __GERAN_R7__ __GERAN_R8__ __GERAN_R9__ __GERAN_R10__ __FDD_REDIRECTION__ __CMCC_FR__
+endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R11_SUPPORT)
+    COM_DEFS    +=   __R99__ __GERAN_R4__ __REL4__  __GERAN_R5__ __REL5__  __GERAN_R6__  __REL6__ __USIM_SUPPORT__ __NEW_TBF_ARCH__ __REMOVE_FA__ __MAC_NEW_ARCH__ __GERAN_R7__ __GERAN_R8__ __GERAN_R9__ __GERAN_R10__ __GERAN_R11__ __FDD_REDIRECTION__ __CMCC_FR__
+endif
+
+ifeq ($(strip $(EUTRAN_MODE_SUPPORT)),EUTRAN_MODE)
+    COM_DEFS    +=   __REL4__ __REL5__ __REL6__ __REL7__ __REL8__ __CSG_SUPPORT__ __R6_NETWORK_SHARING__
+endif
+
+ifeq ($(strip $(EUTRAN_MODE_SUPPORT)),EUTRAN_MODE)
+  COM_DEFS += __ETWS_SUPPORT__ __EXT_SEG_CTRL_BLK__
+endif
+
+ifeq ($(strip $(UMTS_RELEASE_SUPPORT)),UMTS_R4_SUPPORT)
+  COM_DEFS    +=   __UMTS_R4__ __REL4__
+endif
+ifeq ($(strip $(UMTS_RELEASE_SUPPORT)),UMTS_R5_SUPPORT)
+  COM_DEFS    +=  __UMTS_R4__ __UMTS_R5__ __REL4__ __REL5__
+  ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+    COM_DEFS    +=   __HSDPA_SUPPORT__ __HSPA_PREFERENCE_SETTING__
+
+    ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+      COM_DEFS    +=   FDD_HSDSCH_CATEGORY=$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COM_DEFS    +=   TDD_HSDSCH_CATEGORY=$(strip $(TDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+  endif
+endif
+
+ifeq ($(strip $(UMTS_RELEASE_SUPPORT)),UMTS_R6_SUPPORT)
+  COM_DEFS    +=  __UMTS_R4__ __UMTS_R5__ __REL4__ __REL5__ __UMTS_R6__  __REL6__ __FDD_REDIRECTION__ __CMCC_FR__
+
+  ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+    COM_DEFS    +=   __HSDPA_SUPPORT__ __HSPA_PREFERENCE_SETTING__
+
+    ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+      COM_DEFS    +=   FDD_HSDSCH_CATEGORY=$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COM_DEFS    +=   TDD_HSDSCH_CATEGORY=$(strip $(TDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+    ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+      COM_DEFS    +=   __HSUPA_SUPPORT__
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        COM_DEFS    +=   FDD_EDCH_CATEGORY=$(strip $(FDD_EDCH_PHYSICAL_CATEGORY))
+      endif
+    endif
+  endif
+  ifeq ($(strip $(NOT_BENEFIT_FROM_BATTERY_CONSUMPTION_OPTIMISATION)),TRUE)
+    COM_DEFS    +=   __NOT_BENEFIT_FROM_BATTERY_CONSUMPTION_OPTIMISATION__
+  endif
+endif
+
+ifeq ($(strip $(UMTS_RELEASE_SUPPORT)),UMTS_R7_SUPPORT)
+  COM_DEFS    +=   __UMTS_R4__ __UMTS_R5__ __REL4__ __REL5__ __UMTS_R6__  __REL6__ __UMTS_R7__  __REL7__ __FDD_REDIRECTION__ __CMCC_FR__
+  ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+    ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+      COM_DEFS    +=   __HSDPA_SUPPORT__ __HSPA_PREFERENCE_SETTING__
+      COM_DEFS    +=   FDD_HSDSCH_CATEGORY=$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY))
+
+      ifeq ($(strip $(R7_HSDPA_PLUS_SUPPORT)),TRUE)
+        COM_DEFS    +=   __R7_HSDPA_PLUS_SUPPORT__ __FDD_MAC_EHS_SUPPORT__ __FDD_ENHANCED_COMMON_STATE_SUPPORT__
+      endif
+
+      ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+        COM_DEFS    +=   __HSUPA_SUPPORT__
+        COM_DEFS    +=   FDD_EDCH_CATEGORY=$(strip $(FDD_EDCH_PHYSICAL_CATEGORY))
+
+        ifeq ($(strip $(R7_HSUPA_PLUS_SUPPORT)),TRUE)
+          COM_DEFS    +=   __R7_HSUPA_PLUS_SUPPORT__ __FDD_CPC_SUPPORT__
+        endif
+
+        ifeq ($(call gt,$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),12),T)
+          ifneq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),15)
+            ifneq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),16)
+                COM_DEFS    +=   __HOM_DL64QAM_SUPPORT__
+            endif
+          endif
+        endif
+
+        ifeq ($(call gt,$(strip $(FDD_EDCH_PHYSICAL_CATEGORY)),6),T)
+            COM_DEFS    +=   __HOM_UL16QAM_SUPPORT__
+        endif
+      endif
+    endif
+    ifeq ($(strip $(R7R8_FULL_SET_SUPPORT)),TRUE)
+      COM_DEFS    +=   __CUSTOMIZE_ENHANCED_COMMON_STATE_SUPPORT__ __CUSTOMIZE_CSHSPA_SUPPORT__ __CUSTOMIZE_HSSCCH_LESS_SUPPORT__ __CUSTOMIZE_UEA2_UIA2_SUPPORT__
+      COM_DEFS    +=   __CUSTOMIZE_RFC2507_SUPPORT__
+    endif
+  endif
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+    COM_DEFS    +=   __HSDPA_SUPPORT__ __HSPA_PREFERENCE_SETTING__
+    COM_DEFS    +=   TDD_HSDSCH_CATEGORY=$(strip $(TDD_HSDSCH_PHYSICAL_CATEGORY))
+    COM_DEFS    +=   __HSUPA_SUPPORT__
+    COM_DEFS    +=   TDD_EDCH_CATEGORY=$(strip $(TDD_EDCH_PHYSICAL_CATEGORY))
+  endif
+endif
+
+ifeq ($(strip $(UMTS_RELEASE_SUPPORT)),UMTS_R8_SUPPORT)
+  COM_DEFS    +=  __UMTS_R4__ __UMTS_R5__ __REL4__ __REL5__ __UMTS_R6__ __REL6__ __UMTS_R7__ __REL7__ __UMTS_R8__ __REL8__  \
+                  __HSDPA_2MS_DATA_IND__ __HSDPA_2MS_DATA_IND_LATENCY_IMPROVE__ __FDD_REDIRECTION__ __PPACR_SUPPORT__ __CMCC_FR__
+
+  ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+    COM_DEFS    +=   __HSDPA_SUPPORT__ __HSPA_PREFERENCE_SETTING__ __FDD_MAC_EHS_SUPPORT__ __FDD_ENHANCED_COMMON_STATE_SUPPORT__ __FDD_HSDSCH_DRX_CELL_FACH_SUPPORT__
+    ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+      COM_DEFS    +=   FDD_HSDSCH_CATEGORY=$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COM_DEFS    +=   TDD_HSDSCH_CATEGORY=$(strip $(TDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+
+    ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+      COM_DEFS    +=   __HSUPA_SUPPORT__ __DCHSDPA_ADJ_FREQ_SUPPORT__ __FDD_CPC_SUPPORT__ __FDD_COMMON_EDCH_SUPPORT__ __FDD_MAC_IIS_SUPPORT__ __HSDSCH_CELL_CHANGE_ENHANCE_SUPPORT__
+
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        COM_DEFS    +=   FDD_EDCH_CATEGORY=$(strip $(FDD_EDCH_PHYSICAL_CATEGORY))
+      endif
+
+      ifeq ($(call gt,$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),12),T)
+         ifneq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),15)
+            ifneq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),16)
+                 COM_DEFS    +=   __HOM_DL64QAM_SUPPORT__
+            endif
+         endif
+      endif
+
+      ifeq ($(call gt,$(strip $(FDD_EDCH_PHYSICAL_CATEGORY)),6),T)
+           COM_DEFS    +=   __HOM_UL16QAM_SUPPORT__
+      endif
+
+    endif
+  endif
+  ifeq ($(strip $(NOT_BENEFIT_FROM_BATTERY_CONSUMPTION_OPTIMISATION)),TRUE)
+    COM_DEFS    +=   __NOT_BENEFIT_FROM_BATTERY_CONSUMPTION_OPTIMISATION__
+  endif
+  ifeq ($(strip $(R7R8_FULL_SET_SUPPORT)),TRUE)
+    COM_DEFS    +=   __CUSTOMIZE_ENHANCED_COMMON_STATE_SUPPORT__ __CUSTOMIZE_CSHSPA_SUPPORT__ __CUSTOMIZE_HSSCCH_LESS_SUPPORT__ __CUSTOMIZE_UEA2_UIA2_SUPPORT__
+    COM_DEFS    +=   __CUSTOMIZE_MAC_IIS_SUPPORT__ __CUSTOMIZE_HSDSCH_DRX_CELL_FACH_SUPPORT__ __CUSTOMIZE_COMMON_EDCH_SUPPORT__ __CUSTOMIZE_HSDSCH_CELL_CHANGE_ENHANCE_SUPPORT__
+    COM_DEFS    +=   __CUSTOMIZE_RFC2507_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(UMTS_RELEASE_SUPPORT)),UMTS_R9_SUPPORT)
+  COM_DEFS    +=  __UMTS_R4__ __UMTS_R5__ __REL4__ __REL5__ __UMTS_R6__ __REL6__ __UMTS_R7__ __REL7__ __UMTS_R8__ __REL8__ __UMTS_R9__ __REL9__
+                  __HSDPA_2MS_DATA_IND__ __HSDPA_2MS_DATA_IND_LATENCY_IMPROVE__ __FDD_REDIRECTION__ __PPACR_SUPPORT__ __CMCC_FR__ __SIB19_DEFFER__
+
+  ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+    COM_DEFS    +=   __HSDPA_SUPPORT__ __HSPA_PREFERENCE_SETTING__ __FDD_MAC_EHS_SUPPORT__ __FDD_ENHANCED_COMMON_STATE_SUPPORT__ __FDD_HSDSCH_DRX_CELL_FACH_SUPPORT__
+    ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+      COM_DEFS    +=   FDD_HSDSCH_CATEGORY=$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COM_DEFS    +=   TDD_HSDSCH_CATEGORY=$(strip $(TDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+
+    ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+      COM_DEFS    +=   __HSUPA_SUPPORT__ __DCHSDPA_ADJ_FREQ_SUPPORT__ __FDD_CPC_SUPPORT__ __FDD_COMMON_EDCH_SUPPORT__ __FDD_MAC_IIS_SUPPORT__ __HSDSCH_CELL_CHANGE_ENHANCE_SUPPORT__
+
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        COM_DEFS    +=   FDD_EDCH_CATEGORY=$(strip $(FDD_EDCH_PHYSICAL_CATEGORY))
+      endif
+
+        ifeq ($(call gt,$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),12),T)
+           ifneq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),15)
+              ifneq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),16)
+                   COM_DEFS    +=   __HOM_DL64QAM_SUPPORT__
+              endif
+           endif
+        endif
+
+        ifeq ($(call gt,$(strip $(FDD_EDCH_PHYSICAL_CATEGORY)),6),T)
+             COM_DEFS    +=   __HOM_UL16QAM_SUPPORT__
+        endif
+
+
+      ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+        COM_DEFS    +=   TDD_EDCH_CATEGORY=$(strip $(TDD_EDCH_PHYSICAL_CATEGORY))
+      endif
+    endif
+  endif
+  ifeq ($(strip $(NOT_BENEFIT_FROM_BATTERY_CONSUMPTION_OPTIMISATION)),TRUE)
+    COM_DEFS    +=   __NOT_BENEFIT_FROM_BATTERY_CONSUMPTION_OPTIMISATION__
+  endif
+  ifeq ($(strip $(R7R8_FULL_SET_SUPPORT)),TRUE)
+    COM_DEFS    +=   __CUSTOMIZE_ENHANCED_COMMON_STATE_SUPPORT__ __CUSTOMIZE_CSHSPA_SUPPORT__ __CUSTOMIZE_HSSCCH_LESS_SUPPORT__ __CUSTOMIZE_UEA2_UIA2_SUPPORT__
+    COM_DEFS    +=   __CUSTOMIZE_MAC_IIS_SUPPORT__ __CUSTOMIZE_HSDSCH_DRX_CELL_FACH_SUPPORT__ __CUSTOMIZE_COMMON_EDCH_SUPPORT__ __CUSTOMIZE_HSDSCH_CELL_CHANGE_ENHANCE_SUPPORT__
+    COM_DEFS    +=   __CUSTOMIZE_RFC2507_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(UMTS_RELEASE_SUPPORT)),UMTS_R11_SUPPORT)
+  COM_DEFS    +=  __UMTS_R4__ __UMTS_R5__ __REL4__ __REL5__ __UMTS_R6__ __REL6__ __UMTS_R7__ __REL7__ __UMTS_R8__ __REL8__ __UMTS_R9__ __REL9__ __UMTS_R10__ __REL10__ __UMTS_R11__ __REL11__ \
+                  __HSDPA_2MS_DATA_IND__ __HSDPA_2MS_DATA_IND_LATENCY_IMPROVE__ __FDD_REDIRECTION__ __PPACR_SUPPORT__ __CMCC_FR__ __SIB19_DEFFER__ __3G_CSG_SUPPORT__
+
+  ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+    COM_DEFS    +=   __HSDPA_SUPPORT__ __HSPA_PREFERENCE_SETTING__ __FDD_MAC_EHS_SUPPORT__ __FDD_ENHANCED_COMMON_STATE_SUPPORT__ __FDD_HSDSCH_DRX_CELL_FACH_SUPPORT__ __CUSTOMIZE_ENHANCED_COMMON_STATE_SUPPORT__ __CUSTOMIZE_HSDSCH_DRX_CELL_FACH_SUPPORT__ __CUSTOMIZE_HSSCCH_LESS_SUPPORT__
+    ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+      COM_DEFS    +=   FDD_HSDSCH_CATEGORY=$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COM_DEFS    +=   TDD_HSDSCH_CATEGORY=$(strip $(TDD_HSDSCH_PHYSICAL_CATEGORY))
+    endif
+
+    ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+      COM_DEFS    +=   __HSUPA_SUPPORT__ __DCHSDPA_ADJ_FREQ_SUPPORT__ __FDD_CPC_SUPPORT__ __FDD_COMMON_EDCH_SUPPORT__ __FDD_MAC_IIS_SUPPORT__ __HSDSCH_CELL_CHANGE_ENHANCE_SUPPORT__  __CUSTOMIZE_MAC_IIS_SUPPORT__ __CUSTOMIZE_COMMON_EDCH_SUPPORT__
+
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        COM_DEFS    +=   FDD_EDCH_CATEGORY=$(strip $(FDD_EDCH_PHYSICAL_CATEGORY))
+      endif
+
+        ifeq ($(call gt,$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),12),T)
+           ifneq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),15)
+              ifneq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),16)
+                   COM_DEFS    +=   __HOM_DL64QAM_SUPPORT__
+              endif
+           endif
+        endif
+
+        # we now only handle HSDPA category 29~32 for 3C/4C
+        ifeq ($(call gt,$(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),28),T)
+           ifeq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),29)
+              NUM_SUPPORT_HSDPA_CARRIES=3
+           else
+              ifeq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),30)
+                NUM_SUPPORT_HSDPA_CARRIES=3
+              else
+                 ifeq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),31)
+                    NUM_SUPPORT_HSDPA_CARRIES=4
+                 else
+                    ifeq ($(strip $(FDD_HSDSCH_PHYSICAL_CATEGORY)),32)
+                       NUM_SUPPORT_HSDPA_CARRIES=4
+                    endif
+                 endif
+              endif
+           endif
+           COM_DEFS    += __MULTI_CARRIER_HSDPA__=$(strip $(NUM_SUPPORT_HSDPA_CARRIES))
+        endif
+
+        ifeq ($(call gt,$(strip $(FDD_EDCH_PHYSICAL_CATEGORY)),6),T)
+             COM_DEFS    +=   __HOM_UL16QAM_SUPPORT__
+        endif
+
+        # UEs of EDCH Category 8 support only QPSK in Dual Cell E-DCH operation, no combine with UL16QAM
+        ifeq ($(call gt,$(strip $(FDD_EDCH_PHYSICAL_CATEGORY)),7),T)
+             COM_DEFS    +=   __DCHSUPA_ADJ_FREQ_SUPPORT__
+        endif
+
+      ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+        COM_DEFS    +=   TDD_EDCH_CATEGORY=$(strip $(TDD_EDCH_PHYSICAL_CATEGORY))
+      endif
+    endif
+  endif
+  ifeq ($(strip $(NOT_BENEFIT_FROM_BATTERY_CONSUMPTION_OPTIMISATION)),TRUE)
+    COM_DEFS    +=   __NOT_BENEFIT_FROM_BATTERY_CONSUMPTION_OPTIMISATION__
+  endif
+  ifeq ($(strip $(R7R8_FULL_SET_SUPPORT)),TRUE)
+    COM_DEFS    +=   __CUSTOMIZE_ENHANCED_COMMON_STATE_SUPPORT__ __CUSTOMIZE_CSHSPA_SUPPORT__ __CUSTOMIZE_HSSCCH_LESS_SUPPORT__ __CUSTOMIZE_UEA2_UIA2_SUPPORT__
+    COM_DEFS    +=   __CUSTOMIZE_MAC_IIS_SUPPORT__ __CUSTOMIZE_HSDSCH_DRX_CELL_FACH_SUPPORT__ __CUSTOMIZE_COMMON_EDCH_SUPPORT__ __CUSTOMIZE_HSDSCH_CELL_CHANGE_ENHANCE_SUPPORT__
+    COM_DEFS    +=   __CUSTOMIZE_RFC2507_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(UMTS_RELEASE_SUPPORT)),UMTS_R5_SUPPORT)
+  COM_DEFS    +=   __UMTS_R5__ __REL4__ __REL5__
+endif
+
+ifeq ($(strip $(UMTS_RELEASE_SUPPORT)),UMTS_R6_SUPPORT)
+  COM_DEFS    +=   __UMTS_R5__ __REL4__ __REL5__ __UMTS_R6__  __REL6__
+endif
+
+ifeq ($(findstring LTE_RB,$(LTE_RELEASE_SUPPORT)),LTE_RB)
+  COM_DEFS += __LTE_R11__
+  COM_DEFS += __HSR_ENHANCE__
+  ifeq ($(strip $(LTEA_FEATURE_SET)),STAGE2)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+  endif
+  ifeq ($(strip $(LTEA_FEATURE_SET)),FULL)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+    COM_DEFS += __LTE_A_EICIC__ __LTE_A_FEICIC__ __LTE_A_EMBMS__ __LTE_A_UL_COMP__
+  endif
+endif
+
+ifeq ($(findstring LTE_RC,$(LTE_RELEASE_SUPPORT)),LTE_RC)
+  COM_DEFS += __LTE_R11__
+  COM_DEFS += __LTE_R12__
+  COM_DEFS += __REL12__
+  COM_DEFS += __HSR_ENHANCE__
+  ifeq ($(strip $(LTEA_FEATURE_SET)),STAGE2)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+  endif
+  ifeq ($(strip $(LTEA_FEATURE_SET)),FULL)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+    COM_DEFS += __LTE_A_EICIC__ __LTE_A_FEICIC__ __LTE_A_EMBMS__ __LTE_A_UL_COMP__
+  endif
+endif
+
+ifeq ($(findstring LTE_RD,$(LTE_RELEASE_SUPPORT)),LTE_RD)
+  COM_DEFS += __LTE_R11__
+  COM_DEFS += __LTE_R12__
+  COM_DEFS += __REL12__
+  COM_DEFS += __LTE_R13__
+  COM_DEFS += __HSR_ENHANCE__
+  ifeq ($(strip $(LTEA_FEATURE_SET)),STAGE2)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+  endif
+  ifeq ($(strip $(LTEA_FEATURE_SET)),FULL)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+    COM_DEFS += __LTE_A_EICIC__ __LTE_A_FEICIC__ __LTE_A_EMBMS__ __LTE_A_UL_COMP__
+  endif
+endif
+
+ifeq ($(findstring LTE_RE,$(LTE_RELEASE_SUPPORT)),LTE_RE)
+  COM_DEFS += __LTE_R11__
+  COM_DEFS += __LTE_R12__
+  COM_DEFS += __REL12__
+  COM_DEFS += __LTE_R13__
+  COM_DEFS += __LTE_R14__
+  COM_DEFS += __HSR_ENHANCE__
+  ifeq ($(strip $(LTEA_FEATURE_SET)),STAGE2)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+  endif
+  ifeq ($(strip $(LTEA_FEATURE_SET)),FULL)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+    COM_DEFS += __LTE_A_EICIC__ __LTE_A_FEICIC__ __LTE_A_EMBMS__ __LTE_A_UL_COMP__
+  endif
+endif
+
+ifeq ($(findstring LTE_RF,$(LTE_RELEASE_SUPPORT)),LTE_RF)
+  COM_DEFS += __LTE_R11__
+  COM_DEFS += __LTE_R12__
+  COM_DEFS += __REL12__
+  COM_DEFS += __LTE_R13__
+  COM_DEFS += __LTE_R14__
+  COM_DEFS += __LTE_R15__
+  COM_DEFS += __HSR_ENHANCE__
+  ifeq ($(strip $(LTEA_FEATURE_SET)),STAGE2)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+  endif
+  ifeq ($(strip $(LTEA_FEATURE_SET)),FULL)
+    COM_DEFS += __LTE_A_CA__ __LTE_A_EDDA__
+    COM_DEFS += __LTE_A_EICIC__ __LTE_A_FEICIC__ __LTE_A_EMBMS__ __LTE_A_UL_COMP__
+  endif
+endif
+
+ifeq ($(strip $(LATENCY_REDUCTION)),TRUE)
+  COM_DEFS += __GERAN_RTTI__ __GERAN_FANR__
+# Evelyn temp add for R7 feature detection
+  COM_DEFS += __GERAN_EGPRS2__ __GERAN_RLC_PRESISTEN_MODE__ __GERAN_DLDC__
+endif
+
+ifdef CUST_CODE
+  ifneq ($(strip $(CUST_CODE)),NONE)
+    COM_DEFS += __$(strip $(CUST_CODE))__
+  endif
+  ifeq ($(strip $(CUST_CODE)),TC01)
+    COM_DEFS += __DMF_TC01__
+    COM_DEFS += __ERRC_CUSTOM_NVRAM_WRITEBACK_CONTROL__ 
+    COM_DEFS += __EUICC_SUPPORT__
+    COM_DEFS += __LATCH_POWER_IN_BOOTLOADER__
+    COM_DEFS += __LATCH_POWER_IN_BOOTLOADER_TC01__
+    COM_DEFS += __FDD_EM_TXRX_ENHANCE__
+    COM_DEFS += __SUBADDR_SUPPORT__
+    COM_DEFS += __FEATURE_TC01_NVRAM_DUAL_RECORD__
+    COM_DEFS += __RMMI_EXTEND_CUSTOM_CMD__
+    COM_DEFS += __AT_ME_IDENTIFICATION_WITHOUT_HEADER__
+    COM_DEFS += __SBP_EMM_CONN_FAIL_ABNORMAL_B__
+    COM_DEFS += __TC01_IMS_SUPPORT__
+    COM_DEFS += __TC01_CALIBRATION__
+    COM_DEFS += __TC01_NVRAM__
+    COM_DEFS += __TC01_NVRAM_PROTECT__
+    COM_DEFS += __LTE_ROAMING_SUPPORT__
+    COM_DEFS += __CHANNEL_LOCK__
+    COM_DEFS += __SUPPLEMENTARY_SERVICES_CS_ONLY__
+    COM_DEFS += __D2RM_ALWAYS_CHOOSE_MOBILE_3GPP__
+    COM_DEFS += __D2_CFUN_EFUN_L4BPWR_FLOW__
+    COM_DEFS += __DISABLE_MD_DATA_RETRY_REPORT__
+    COM_DEFS += __DISABLE_MD_IMS_PCO_NOTIFICATION__
+    COM_DEFS += __VSIM__
+    COM_DEFS += __MDVSIM__
+    COM_DEFS += __TRY_RACH_BAR_CELL_DURING_STORE_LIST__
+    COM_DEFS += __FEATURE_TC01_SIMOFF_EXTENTION__
+    COM_DEFS += __AS_SPECIFIC_CHANNEL_SRCH__
+    COM_DEFS += __TERMINAL_CAP_FLEX__
+    COM_DEFS += __INC_BCCH_DECODE_PRIO_BG_LIST__
+    COM_DEFS += __RAC_CHANGE_VDP_BY_ROAMING__
+    COM_DEFS += __SIM_EXTENDED_APDU__
+    COM_DEFS += __ENABLE_RF_SCAN_FOR_DESENSE_TEST__
+    COM_DEFS += __RF_SCAN_FOR_DESENSE_TEST__
+    COM_DEFS += __A5_3_AND_GEA_WHILTE_LIST__
+    COM_DEFS += __EM_MAX_TX_POWER_SUPPORT__
+    COM_DEFS += __CUSTOMIZABLE_MA_ENABLE__
+    COM_DEFS += __ADIE_MIPI2_DRIVING_8MA__
+    COM_DEFS += __ATT_WIFI_CELLULAR_HO_THRESHOLD__
+    COM_DEFS += __SBP_ATT_WIFI_CELLULAR_HO_THRESHOLD__
+    COM_DEFS += __WIFI_CELLULAR_HO_THRESHOLD_EXTENSION__
+    COM_DEFS += __ENABLE_WW_SA_CAP__
+    COM_DEFS += __DISABLE_CSFB_SCHEDULED_DECISION_BY_23G_SIB_INFO__
+    ifneq ($(strip $(DRM_SUPPORT)),NONE)
+      COM_DEFS += __LONG_AT_CMD_SUPPORT__
+    endif
+    ifdef TC01_ERS_LOCATION
+      ifneq ($(strip $(TC01_ERS_LOCATION)),NONE)
+        COM_DEFS += __TC01_ERS_SUPPORT__
+      endif
+    endif
+  endif
+endif
+
+ifdef TC01_ERS_LOCATION
+  ifeq ($(strip $(TC01_ERS_LOCATION)),NVRAM)
+    COM_DEFS += __TC01_ERS_NVRAM__
+  endif
+  ifeq ($(strip $(TC01_ERS_LOCATION)),BACKUP)
+    COM_DEFS += __TC01_ERS_BACKUP__
+  endif
+endif
+
+ifdef BOOT_CERT_SUPPORT
+  ifeq ($(strip $(BOOT_CERT_SUPPORT)),BOOT_CERT_V1)
+    COM_DEFS += __BOOT_CERT__ __BOOT_CERT_V1__
+  endif
+  ifeq ($(strip $(BOOT_CERT_SUPPORT)),BOOT_CERT_V2)
+    COM_DEFS += __BOOT_CERT__ __BOOT_CERT_V2__
+  endif
+endif
+
+ifeq ($(strip $(DATA_CARD_SPEECH)),TRUE)
+  COM_DEFS    += __DATA_CARD_SPEECH__
+endif
+
+ifdef SIM_HOT_SWAP
+  ifneq ($(strip $(SIM_HOT_SWAP)), NONE)
+    COM_DEFS    +=  __SIM_HOT_SWAP_SUPPORT__
+    ifneq ($(findstring SIM_SLOT_1,$(SIM_HOT_SWAP)),)
+      COM_DEFS    +=  __SIM_HOT_SWAP_SLOT_1_SUPPORT__
+    endif
+    ifneq ($(findstring SIM_SLOT_2,$(SIM_HOT_SWAP)),)
+      COM_DEFS    +=  __SIM_HOT_SWAP_SLOT_2_SUPPORT__
+    endif
+    ifneq ($(findstring SIM_SLOT_3,$(SIM_HOT_SWAP)),)
+      COM_DEFS    +=  __SIM_HOT_SWAP_SLOT_3_SUPPORT__
+    endif
+    ifneq ($(findstring SIM_SLOT_4,$(SIM_HOT_SWAP)),)
+      COM_DEFS    +=  __SIM_HOT_SWAP_SLOT_4_SUPPORT__
+    endif
+  endif
+endif
+
+ifdef SMART_PHONE_CORE
+  ifeq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+    COM_DEFS += __CSCB_ALL_LANGUAGE_ON__
+    COM_DEFS += __AT_EPBUM_SUPPORT__ __PHB_USIM_ADDITIONAL_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(TDD_RF_CUSTOM_TOOL_SUPPORT)),TRUE)
+  COM_DEFS    += __TDD_RF_CUSTOM_TOOL_SUPPORT__
+endif
+
+ifeq ($(strip $(3G_DATA_PLANE_MEMORY_SHRINK)),TRUE)
+  COM_DEFS += __DL_MEMORY_SHRINK__ __UL_MEMORY_SHRINK__
+endif
+
+ifeq ($(strip $(NVRAM_BIND_TO_CHIP_CIPHER)),ENABLE)
+  COM_DEFS    +=  __NVRAM_BIND_TO_CHIP_CIPHER__
+endif
+
+ifeq ($(strip $(3D_ANAGLYPH)),TRUE)
+  COM_DEFS += __VIDEO_3D_ANAGLYPH__
+endif
+
+ifeq ($(strip $(call Upper,$(MTK_INTERNAL))),TRUE)
+  COM_DEFS   += __FS_AUTO_CONFIG_SUPPORT__
+endif
+
+ifeq ($(strip $(GAMELOFT_CONTENT_SUPPORT)),TRUE)
+  COM_DEFS     +=  __GAMELOFT_CONTENT_SUPPORT__
+endif
+
+ifeq ($(strip $(TST_MALMO_SUPPORT)),TRUE)
+  ifneq ($(strip $(TST_SUPPORT)),TRUE)
+  else
+    COM_DEFS     += __TST_MALMO_SUPPORT__ __TST_ALC_SUPPORT__ __TST_ASM_SUPPORT__
+  endif
+endif
+
+ifndef VIRTUAL_PORTS_NUM
+ VIRTUAL_PORTS_NUM         = 3
+endif
+ifdef VIRTUAL_PORTS_NUM
+  COM_DEFS    += VIRTUAL_PORTS_NUM=$(strip $(VIRTUAL_PORTS_NUM))
+endif
+
+ifdef SSDVT_TEST
+  ifeq ($(strip $(SSDVT_TEST)),TRUE)
+    COM_DEFS     += __SSDVT_TEST__
+  endif
+endif
+
+ifeq ($(strip $(FS_RAMDISK)),TRUE)
+  COM_DEFS     += __FS_RAMDISK__
+endif
+
+ifdef MDSYS
+  ifeq ($(strip $(MDSYS)),MD1)
+    COM_DEFS += __MD1__
+    else
+      ifeq ($(strip $(MDSYS)),MD2)
+      COM_DEFS += __MD2__
+    endif
+  endif
+endif
+
+ifneq ($(strip $(DHL_MALMO_SUPPORT)),TRUE)
+COM_DEFS     += DEBUG_SWLA
+endif
+
+ifeq ($(strip $(DHL_MONITOR_MODE_SUPPORT)),TRUE)
+  COM_DEFS     += __DHL_MONITOR_MODE_SUPPORT__
+endif
+
+ifeq ($(strip $(DHL_CCB_LOGGING_SUPPORT)),TRUE)
+  COM_DEFS     += __DHL_CCB_LOGGING_SUPPORT__
+  COM_DEFS     += __DHL_EBS_LOGGING_SUPPORT__
+endif
+
+ifeq ($(strip $(DHL_ON_DEMAND_LOGGING_SUPPORT)),TRUE)
+  ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      COM_DEFS += __DHL_ON_DEMAND_LOGGING_SUPPORT__
+    endif
+  endif
+endif
+
+ifeq ($(strip $(ICD_SUPPORT)),TRUE)
+  COM_DEFS     += __ICD_LOGGING_SUPPORT__
+endif
+
+# LTE single-mode
+ifeq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  COM_DEFS += __LTE_SM__ __MULTI_BOOT__
+endif
+
+# For NONE_FLASH_EXIST Setting
+ifeq ($(strip $(NAND_SUPPORT)),FALSE)
+  ifeq ($(strip $(SERIAL_FLASH_SUPPORT)),FALSE)
+    COM_DEFS += __NONE_FLASH_EXIST__
+  endif
+endif
+
+ifeq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R9_SUPPORT)
+    COM_DEFS    +=   __R99__ __GERAN_R4__ __REL4__  __GERAN_R5__ __REL5__  __GERAN_R6__  __REL6__ __USIM_SUPPORT__ __NEW_TBF_ARCH__ __REMOVE_FA__ __MAC_NEW_ARCH__ __GERAN_R7__ __GERAN_R8__ __GERAN_R9__
+endif
+
+ifeq ($(strip $(ORIGINAL_FLAVOR)),SKYPA_R5)
+    COM_DEFS    += __TDD_MODEM__
+endif
+
+ifdef CCCI_FS_SUPPORT
+  ifeq ($(strip $(CCCI_FS_SUPPORT)), TRUE)
+    COM_DEFS += __CCCIFS_SUPPORT__
+    COM_DEFS += __NVRAM_IMPORTANT_PARTITIONS__
+  endif
+endif
+
+ifeq ($(strip $(HIF_USB_SUPPORT)),TRUE)
+  ifeq ($(strip $(HIF_USB30_SUPPORT)),TRUE)
+        COM_DEFS        += USB30_ENABLE
+  endif
+endif
+
+ifdef LTE_REPORT_CAP_AS_RELEASE
+  ifeq ($(strip $(LTE_REPORT_CAP_AS_RELEASE)), AS_REL_10)
+    COM_DEFS +=  __LTE_REPORT_CAP_AS_REL_10__
+  endif
+  ifeq ($(strip $(LTE_REPORT_CAP_AS_RELEASE)), AS_REL_11)
+    COM_DEFS +=  __LTE_REPORT_CAP_AS_REL_11__
+  endif
+endif
+
+ifdef LTE_REPORT_CAP_AS_RELEASE
+  ifeq ($(strip $(LTE_REPORT_CAP_AS_RELEASE)), AS_REL_10)
+    COM_DEFS +=  __LTE_REPORT_CAP_AS_REL_10__
+  endif
+  ifeq ($(strip $(LTE_REPORT_CAP_AS_RELEASE)), AS_REL_11)
+    COM_DEFS +=  __LTE_REPORT_CAP_AS_REL_11__
+  endif
+endif
+
+ifeq ($(strip $(DUAL_SIM_HOT_SWAP_CO_DECK)),TRUE)
+  COM_DEFS += __DUAL_SIM_HOT_SWAP_CO_DECK_SUPPORT__
+endif
+
+ifeq ($(strip $(SMMT_SUPPORT)),TRUE)
+  COM_DEFS += __SMMT_SUPPORT__
+endif
+
+ifeq ($(strip $(IMS_SUPPORT)),TRUE)
+  COM_DEFS    += __IMS_SUPPORT__
+  ifeq ($(strip $(VOLTE_SUPPORT)),TRUE)
+    COM_DEFS    += __VOLTE_SUPPORT__
+    ifeq ($(strip $(EVS_SUPPORT)),TRUE)
+      COM_DEFS    += __EVS_SUPPORT__
+      ifneq ($(strip $(EVS_MAX_BW)),)
+        COM_DEFS += __EVS_MAX_BW_$(strip $(EVS_MAX_BW))__
+      else
+        COM_DEFS += __EVS_MAX_BW_WB__
+      endif
+      ifneq ($(strip $(EVS_SW_BW)),)
+        COM_DEFS += __EVS_SW_BW_$(strip $(EVS_SW_BW))__
+      else
+        COM_DEFS += __EVS_SW_BW_WB__
+      endif
+      ifdef USE_EVS_IO_REPLACE_AWB
+        ifeq ($(strip $(USE_EVS_IO_REPLACE_AWB)),TRUE)
+          COM_DEFS += __USE_EVS_IO_REPLACE_AWB__
+        endif
+      endif
+    endif
+  endif
+
+  ifeq ($(strip $(WFC_SUPPORT)),TRUE)
+    COM_DEFS += __WFC_SUPPORT__
+    ifeq ($(strip $(EVS_SUPPORT)),TRUE)
+      COM_DEFS    += __EVS_SUPPORT__
+      ifneq ($(strip $(EVS_MAX_BW)),)
+        COM_DEFS += __EVS_MAX_BW_$(strip $(EVS_MAX_BW))__
+      else
+        COM_DEFS += __EVS_MAX_BW_WB__
+      endif
+    endif
+  endif
+  ifneq ($(strip $(GEMINI)),FALSE)
+    ifeq ($(strip $(MULTIPLE_IMS_SUPPORT)),TRUE)
+    COM_DEFS += __MULTIPLE_IMS_SUPPORT__
+    endif
+  endif
+  ifeq ($(strip $(IMS_OTA_MESSAGE_SUPPORT)),TRUE)
+  COM_DEFS += __IMS_OTA_MESSAGE_SUPPORT__
+  endif
+endif
+
+ifdef MD_TCPIP_SUPPORT
+  ifeq ($(strip $(MD_TCPIP_SUPPORT)), TRUE)
+    COM_DEFS += __MD_TCPIP_SUPPORT__
+  endif
+endif
+
+ifdef SOE_EVP_SUPPORT
+  ifeq ($(strip $(SOE_EVP_SUPPORT)), TRUE)
+    COM_DEFS += __SOE_EVP_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+  COM_DEFS += DHL_DEFAULT_FILTER_OFF
+endif
+
+ifeq ($(strip $(CTA_ECC_SUPPORT)),TRUE)
+    COM_DEFS    += __CTA_ECC_SUPPORT__
+endif
+
+ifdef LTE_TX_PATH_SWITCH_SUPPORT
+  ifeq ($(strip $(LTE_TX_PATH_SWITCH_SUPPORT)),TRUE)
+    COM_DEFS += __LTE_TX_PATH_SWITCH_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(TCM_ONLY_LOAD)),TRUE)
+  COM_DEFS += __TCM_ONLY_LOAD__
+endif
+
+ifdef TX_POWER_OFFSET_SUPPORT
+  ifeq ($(strip $(TX_POWER_OFFSET_SUPPORT)),TRUE)
+    COM_DEFS += __TX_POWER_OFFSET_SUPPORT__
+  endif
+endif
+
+ifdef DHL_SET_LOG_BUF_SIZ
+  ifneq ($(strip $(DHL_SET_LOG_BUF_SIZ)),NONE)
+    ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+      COM_DEFS += FORCE_DHL_RING_BUFFER_SCALE=$(strip $(DHL_SET_LOG_BUF_SIZ))
+    endif
+  endif
+endif
+
+ifdef KAL_DEBUG_LEVEL
+  ifeq ($(strip $(KAL_DEBUG_LEVEL)),RICH_DEBUG_KAL)
+    COM_DEFS += DEBUG_KAL DEBUG_BUF2 DEBUG_BUF3 DEBUG_ITC DEBUG_SWLA DEBUG_TIMER DEBUG_TIMER2
+  endif
+  ifeq ($(strip $(KAL_DEBUG_LEVEL)),NORMAL_DEBUG_KAL)
+    COM_DEFS += DEBUG_KAL DEBUG_BUF2 DEBUG_ITC DEBUG_TIMER
+  endif
+  ifeq ($(strip $(KAL_DEBUG_LEVEL)),SLIM_DEBUG_KAL)
+    COM_DEFS += DEBUG_KAL DEBUG_BUF1
+  endif
+  ifeq ($(strip $(KAL_DEBUG_LEVEL)),RELEASE_KAL)
+    COM_DEFS += RELEASE_KAL
+  endif
+endif
+
+ifdef MCU_PMU_DEFAUT_USER
+  COM_DEFS += MCU_PMU_DEFAUT_USER=$(MCU_PMU_DEFAUT_USER)
+endif
+
+ifdef SIM_SWTICH_CONTROLLER_MT6306
+  ifeq ($(strip $(SIM_SWTICH_CONTROLLER_MT6306)),TRUE)
+    COM_DEFS += __SIM_DRV_SWITCH_MT6306__
+  endif
+endif
+
+ifeq ($(strip $(AMMS_DRDI_SUPPORT)), TRUE)
+  COM_DEFS += __AMMS_DRDI__
+endif
+
+ifdef WCDMA_RFEQ_COEF_SUBBAND_SUPPORT
+  ifeq ($(strip $(WCDMA_RFEQ_COEF_SUBBAND_SUPPORT)),TRUE)
+    COM_DEFS    += __WCDMA_RFEQ_COEF_SUBBAND_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(AMMS_POS_SUPPORT)), TRUE)
+  COM_DEFS += __AMMS_POS__
+endif
+
+ifdef IS_MT6177M_CODE_DOMAIN_POWER_IMPROVE
+  ifeq ($(strip $(IS_MT6177M_CODE_DOMAIN_POWER_IMPROVE)),TRUE)
+    COM_DEFS += __IS_MT6177M_CODE_DOMAIN_POWER_IMPROVE__
+  endif
+endif
+
+ifdef 3G_B5_AND_B19_INDICATOR_SUPPORT
+  ifeq ($(strip $(3G_B5_AND_B19_INDICATOR_SUPPORT)),TRUE)
+    COM_DEFS += __3G_B5_AND_B19_INDICATOR_SUPPORT__
+  endif
+endif
+
+ifdef META_SLA_ENHANCEMENT
+  ifeq ($(strip $(META_SLA_ENHANCEMENT)),SLA_BIND_TO_SBC)
+    COM_DEFS += __META_SLA_ENHANCEMENT__
+    COM_DEFS += __META_SLA_BIND_TO_SBC__
+  endif
+  ifeq ($(strip $(META_SLA_ENHANCEMENT)),SLA_BIND_TO_AP_SBC)
+    COM_DEFS += __META_SLA_ENHANCEMENT__
+    COM_DEFS += __META_SLA_BIND_TO_AP_SBC__
+  endif
+  ifeq ($(strip $(META_SLA_ENHANCEMENT)),SLA_ON)
+    COM_DEFS += __META_SLA_ENHANCEMENT__
+  endif
+endif
+
+ifdef AT_SLA_ENHANCEMENT
+  ifeq ($(strip $(AT_SLA_ENHANCEMENT)),TRUE)
+    COM_DEFS += __ENGFACT_MODE__
+  endif
+  ifeq ($(strip $(AT_SLA_ENHANCEMENT)),BIND_TO_AP_SBC_EN)
+    COM_DEFS += __ENGFACT_MODE__
+    COM_DEFS += __AT_SLA_BIND_TO_AP_SBC__
+  endif
+endif
+
+ifdef SIM_DRV_RETRY_3V_WHEN_SIM_RECOVERY
+  ifeq ($(strip $(SIM_DRV_RETRY_3V_WHEN_SIM_RECOVERY)),TRUE)
+    COM_DEFS += __SIM_DRV_RETRY_3V_WHEN_SIM_RECOVERY__
+  endif
+endif
+
+ifdef SIM_GET_CARD_DETECT_STATUS_SUPPORT
+  ifeq ($(strip $(SIM_GET_CARD_DETECT_STATUS_SUPPORT)),TRUE)
+    COM_DEFS += __SIM_GET_CARD_DETECT_STATUS_SUPPORT__
+  endif
+endif
+
+ifdef SIM_NFC_GET_RESPONSE_WHEN_WARNING_SW
+  ifeq ($(strip $(SIM_NFC_GET_RESPONSE_WHEN_WARNING_SW)),TRUE)
+    COM_DEFS += __SIM_NFC_GET_RESPONSE_WHEN_WARNING_SW__
+  endif
+endif
+
+# end of defined by rules
+# *************************************************************************
+# if not BASIC load
+# *************************************************************************
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+
+  COM_DEFS +=  __PS_L1_DC_ARCH__
+
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    COM_DEFS += __MTK_GL1_GSM__
+  endif
+  ifdef L1_WCDMA
+    ifeq ($(strip $(L1_WCDMA)),TRUE)
+      COM_DEFS    +=  __UMTS_RAT__ __MTK_3G_MRAT_ARCH__
+      COM_DEFS  += MAL1_NOT_PRESENT __MTK_UL1_FDD__
+    endif
+  endif
+  ifdef L1_TDD128
+   ifeq ($(strip $(OP01_2G_ONLY)),FALSE)
+    ifeq ($(strip $(L1_TDD128)),TRUE)
+      COM_DEFS    +=  __UMTS_RAT__ __MTK_3G_MRAT_ARCH__ __TDD_DM_GAP_OPTIMIZATION__
+      COM_DEFS  += __AST_TL1_TDD__ __RACH_FACH_TL1_BITOFFSET__
+    endif
+   endif
+  endif
+
+  ifneq ($(filter __FPGA__,$(strip $(COM_DEFS))),)
+    COM_DEFS += __HAPS_FPGA_CLK_ADJUST__
+  endif
+
+endif
+
+# *************************************************************************
+# if not L1S load
+# *************************************************************************
+#
+# *************************************************************************
+# if L1S or BASIC load
+# *************************************************************************
+ifneq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+
+  COM_DEFS +=  __L1_STANDALONE__ __CS_SERVICE__
+  COM_DEFS += LBS_NOT_PRESENT
+  COM_DEFS += __LAS_TASK_DISABLE__
+  COM_DEFS += L4_NOT_PRESENT MM_NOT_PRESENT CC_NOT_PRESENT CISS_NOT_PRESENT NWSEL_NOT_PRESENT \
+             SMS_NOT_PRESENT SIM_NOT_PRESENT RR_NOT_PRESENT \
+             MMI_NOT_PRESENT SNDCP_NOT_PRESENT SM_NOT_PRESENT REASM_NOT_PRESENT \
+             LLC_NOT_PRESENT DATA_NOT_PRESENT PPP_NOT_PRESENT MED_NOT_PRESENT \
+             WAP_NOT_PRESENT ABM_NOT_PRESENT SOC_NOT_PRESENT TCPIP_NOT_PRESENT \
+             __18V_30V_ME__ MED_V_NOT_PRESENT AT_PROXY_NOT_PRESENT DDM_NOT_PRESENT \
+             SIMMNGR_NOT_PRESENT WO_NOT_PRESENT SSDS_NOT_PRESENT VDM_NOT_PRESENT NAS_NOT_PRESENT
+
+  #For MT6293 EMAC-EL1TX New Arch
+  COM_DEFS += __EL2_EMAC_ONLY__
+
+    # BASIC load
+  ifeq ($(strip $(TEST_LOAD_TYPE)),BASIC)
+    COM_DEFS    +=  L1_NOT_PRESENT NVRAM_NOT_PRESENT
+    COM_DEFS += __MAUI_BASIC__
+    COM_DEFS += __WDT_DISABLE_BY_MD_DBG__
+    ifneq ($(strip $(IC_TEST_TYPE)),IC_BURNIN_TEST)
+      COM_DEFS     += MTK_SYSSERV_DEBUG
+    endif
+
+    ifeq ($(strip $(IC_TEST_TYPE)),IC_MODULE_TEST)
+      COM_DEFS += IC_MODULE_TEST
+      COM_DEFS += DEVDRV_TEST
+    endif
+
+    ifeq ($(strip $(IC_TEST_TYPE)),IC_BURNIN_TEST)
+      COM_DEFS    +=  IC_BURNIN_TEST
+      COM_DEFS += DEVDRV_TEST
+    endif
+  endif
+
+  # L1S load
+  ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+
+    COM_DEFS += __IDLE_INTERF_MEAS__ __PKT_EXT_MEAS__
+    COM_DEFS +=  DUMMY_PROTOCOL __FS_ON__
+
+    ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+      COM_DEFS += __MULTI_BOOT__
+      COM_DEFS += __GSM_RAT__
+    endif
+
+    ifeq ($(strip $(NVRAM_SUPPORT)),TRUE)
+      COM_DEFS  += __MOD_NVRAM__
+    else
+      COM_DEFS  += NVRAM_NOT_PRESENT
+    endif
+
+    ifeq ($(strip $(L1_GPRS)),TRUE)
+      COM_DEFS    +=  __PS_SERVICE__
+    endif
+
+    ifeq ($(strip $(L1_EGPRS)),TRUE)
+
+      COM_DEFS    += __EGPRS_MODE__
+
+      ifeq ($(strip $(L1_EPSK_TX)),TRUE)
+        COM_DEFS    +=  __EPSK_TX__
+      endif
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),1)
+      COM_DEFS    +=  L1D_TEST
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),2)
+      COM_DEFS    +=  L1D_TEST
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),3)
+      COM_DEFS    +=  L1D_TEST
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),5)
+       COM_DEFS    +=  L1D_TEST
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),6)
+       COM_DEFS    +=  L1D_TEST
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),7)
+       COM_DEFS    +=  L1D_TEST
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),8)
+       COM_DEFS    +=  L1D_TEST
+    endif
+
+    ifeq ($(strip $(L1D_COSIM)),TRUE)
+      COM_DEFS    +=  L1D_TEST_COSIM
+    endif
+
+    ifeq ($(strip $(ISP_SUPPORT)),TRUE)
+      COM_DEFS    += ISP_SUPPORT
+    endif
+
+    ifeq ($(strip $(MCF_SUPPORT)),TRUE)
+      COM_DEFS    += __MCF_SUPPORT__
+    endif
+
+   # C2K PS need FLC2 LIB
+   ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+     FLC_LIB_INCLUDE_CONDITION = FALSE
+     ifneq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+       FLC_LIB_INCLUDE_CONDITION = TRUE
+     endif
+     ifneq ($(strip $(CSD_SUPPORT)),NONE)
+       FLC_LIB_INCLUDE_CONDITION = TRUE
+     endif
+     ifeq ($(strip $(FLC_LIB_INCLUDE_CONDITION)),TRUE)
+       COM_DEFS += __FLC2__ __FLC_SUPPORT__
+     endif
+   endif
+  endif
+
+  ifdef L1_UMTS
+    ifeq ($(strip $(L1_UMTS)),TRUE)
+      COM_DEFS    += RATCM_NOT_PRESENT RATDM_NOT_PRESENT UL2D_NOT_PRESENT UL2_NOT_PRESENT URR_NOT_PRESENT
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        COM_DEFS    += __UL1_STANDALONE__
+      endif
+    endif
+  endif
+
+  ifneq ($(strip $(L1_UMTS)),TRUE)
+    COM_DEFS += RATDM_NOT_PRESENT RATCM_NOT_PRESENT
+  endif
+
+endif # end of L1S or BASIC load
+
+# *************************************************************************
+# if not L1S or BASIC load
+# *************************************************************************
+ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+
+  COM_DEFS += __MONITOR_PAGE_DURING_TRANSFER__
+  COM_DEFS += __MOD_L4C__ __MOD_RAC__ __MOD_SMU__ __MOD_SMSAL__ \
+              __MOD_PHB__ __MOD_UEM__ \
+              __MOD_NVRAM__ __MOD_SIM__ \
+              __SAT__ __EM_MODE__ __CPHS__ \
+              __18V_30V_ME__  __PHB_COMPARE_NUMBER_9_DIGIT__ \
+              __MOD_L4B__
+
+  COM_DEFS += __L1MISC_SUPPORT__
+  COM_DEFS += __L5_SUPPORT__
+  COM_DEFS += __MD_CRYPTO_SUPPORT__
+
+  #add upcm compile option if upcm module is added
+  COM_DEFS += __UPCM_ENABLE__
+
+  # Non LTE single-mode
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    COM_DEFS    += __MULTI_BOOT__ __MOD_CC__ __MOD_CISS__ __MOD_CSM__ __MOD_SMS__ __MOD_NWSEL__ __MOD_MM__
+  else
+    COM_DEFS    += MM_NOT_PRESENT ABM_NOT_PRESENT CC_NOT_PRESENT CISS_NOT_PRESENT DATA_NOT_PRESENT LLC_NOT_PRESENT \
+                        MED_NOT_PRESENT MED_V_NOT_PRESENT MMI_NOT_PRESENT PPP_NOT_PRESENT RATCM_NOT_PRESENT RATDM_NOT_PRESENT \
+                        REASM_NOT_PRESENT RR_NOT_PRESENT SM_NOT_PRESENT SNDCP_NOT_PRESENT SOC_NOT_PRESENT \
+                        TCPIP_NOT_PRESENT UL1_NOT_PRESENT UL2D_NOT_PRESENT URR_NOT_PRESENT
+  endif
+
+  COM_DEFS    += __MCD__
+
+  ifneq ($(filter NONE MODEM_ONLY,$(SMART_PHONE_CORE)),)
+    COM_DEFS    += __FS_ON__
+  endif
+
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+     COM_DEFS += __MTK_3G_MRAT_ARCH__
+  endif
+
+  ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+    COM_DEFS += __CS_SERVICE__ __PS_SERVICE__ __MOD_TCM__ __MOD_TFTLIB__ __MOD_SMIC__
+  else
+    ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+      COM_DEFS += __CS_SERVICE__ __PS_SERVICE__ __MOD_TCM__ __MOD_TFTLIB__ __MOD_SMIC__
+    else
+      ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_EGPRS_MODE)
+        COM_DEFS += __CS_SERVICE__ __PS_SERVICE__ __MOD_TCM__ __MOD_TFTLIB__ __MOD_SMIC__
+      else
+        COM_DEFS += __CS_SERVICE__ SNDCP_NOT_PRESENT SM_NOT_PRESENT REASM_NOT_PRESENT LLC_NOT_PRESENT
+      endif
+    endif
+  endif
+
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+    COM_DEFS += __GSM_RAT__
+  endif
+
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    FLC_LIB_INCLUDE_CONDITION = FALSE
+    ifneq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+      FLC_LIB_INCLUDE_CONDITION = TRUE
+    endif
+    ifneq ($(strip $(CSD_SUPPORT)),NONE)
+      FLC_LIB_INCLUDE_CONDITION = TRUE
+    endif
+    ifeq ($(strip $(FLC_LIB_INCLUDE_CONDITION)),TRUE)
+      COM_DEFS += __FLC2__ __FLC_SUPPORT__
+    endif
+  endif
+
+  ifdef CMUX_SUPPORT
+    ifeq ($(strip $(CMUX_SUPPORT)),TRUE)
+      COM_DEFS     += __CMUX_SUPPORT__
+    endif
+  endif
+
+  ifeq ($(strip $(NDIS_SUPPORT)),UPS)
+    COM_DEFS    += __NDIS_SUPPORT__ __UPS_SUPPORT__
+  endif
+
+  COM_DEFS += __STORED_CELL_SELECTION_INFO__
+
+  ifneq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+    COM_DEFS += __STORED_CELL_SELECTION_INFO__
+  endif
+
+  ifeq ($(strip $(PLMN_LIST_PREF_SUPPORT)),DEFAULT)
+      COM_DEFS += __PLMN_LIST_PREF_SUPPORT__
+  endif
+
+  ifeq ($(strip $(MCF_SUPPORT)),TRUE)
+      COM_DEFS += __MCF_SUPPORT__
+      ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+        COM_DEFS  += __MCF_UT_FRAMEWORK_SUPPORT__
+      endif
+  endif
+
+  ifeq ($(strip $(EL2_ARCH_VERSION)), EL2_ARCH_V2)
+      ifneq ($(wildcard protocol/enl2/mac),)
+          COM_DEFS += __EL2_ENABLE__
+      endif
+  endif
+
+  ifeq ($(strip $(R15_DEFLATE_UDC_SUPPORT)), TRUE)
+      COM_DEFS += __SBP_UDC__
+  endif
+
+   COM_DEFS += __PERF_SUPPORT__
+
+   ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      COM_DEFS += __SENSITIVE_DATA_MOSAIC__
+   endif
+   
+   COM_DEFS += __SASE_SUPPORT__
+endif #end of not L1S or BASIC
+
+# *************************************************************************
+# define by filtering
+# *************************************************************************
+
+ifneq ($(filter __MONITOR_PAGE_DURING_TRANSFER__ __GEMINI_MONITOR_PAGE_DURING_TRANSFER__,$(COM_DEFS)),)
+  COM_DEFS  += __ADAPTIVE_PAGING_PERIOD_IN_UNACK_MODE__ __ENABLE_CALL_PREFER_IN_UNACK_MODE__
+endif
+
+ifneq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+  COM_DEFS += KAL_ENH_MUTEX
+else
+  ifneq ($(filter __CS_SERVICE__,$(COM_DEFS)),)
+    ifneq ($(strip $(CSD_SUPPORT)),NONE)
+      COM_DEFS    += KAL_ENH_MUTEX
+    endif
+  endif
+endif
+
+ifneq ($(filter $(strip $(PLATFORM)),$(SV5_PLATFORM)),)
+  COM_DEFS += __SV5_ENABLED__
+endif
+
+#previously compiler arch related COM_DEFS are determined by PLATFORM
+#but since PLATFORM = MT6297 has unique COM_DEFS for Shaolin(I7200) and IA,
+#we can't determine it by a single PLATFORM anymore.
+#therefore we use compiler arch & compiler isa(instruction set architecture) instead
+ifeq ($(strip $(COMPILER_ARCH)),ARM)
+  COM_DEFS += __CR4__ __DYNAMIC_SWITCH_CACHEABILITY__ __IS_NAS_ITCM_DTCM__ ARMV6_INST_ENABLE
+else ifeq ($(strip $(COMPILER_ARCH)),MIPS)
+  COM_DEFS += __DYNAMIC_SWITCH_CACHEABILITY__ __IS_NAS_ITCM_DTCM__
+  ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+    COM_DEFS += __MIPS_I7200__
+  else
+    COM_DEFS += __MIPS_IA__
+  endif
+endif
+
+ifeq ($(filter $(strip $(PLATFORM)),$(SAIC_NOT_SUPPORT_FLATFORM)),)
+  COM_DEFS    +=    __SAIC__
+endif
+ifeq ($(filter $(strip $(PLATFORM)),$(REPEATED_ACCH_NOT_SUPPORT_FLATFORM)),)
+  COM_DEFS    +=    __REPEATED_ACCH__
+endif
+
+ifeq ($(strip $(R7R8_FULL_SET_SUPPORT)),TRUE)
+  COM_DEFS    +=   __CUSTOMIZE_VAMOS__
+else
+  ifneq ($(strip $(OP01_2G_ONLY)),TRUE)
+    ifeq ($(filter $(strip $(PLATFORM)),$(VAMOS_CAP_DEFAULT_NOT_SUPPORT_FLATFORM)),)
+      COM_DEFS    +=   __CUSTOMIZE_VAMOS__
+    endif
+  endif
+endif
+
+ifneq ($(filter __L4_MAX_NAME_60__,$(COM_DEFS)),)
+  MCD_DEFS += __L4_MAX_NAME_60__
+endif
+
+ifneq ($(filter __MTK_INTERNAL__,$(strip $(COM_DEFS))),)
+  COM_DEFS    += __CATCHER_EVENT_INFO__
+endif
+
+ifneq ($(filter __UMTS_RAT__,$(strip $(COM_DEFS))),)
+  COM_DEFS += __R6_OOS__
+endif
+
+ifneq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+  COM_DEFS += __NEW_TBF_ARCH__
+  COM_DEFS += __REMOVE_FA__
+endif
+
+ifneq ($(filter __L1_STANDALONE__,$(COM_DEFS)),)
+  COM_DEFS  +=  DRV_LCD_NOT_EXIST
+endif
+
+ifneq ($(filter %_EVB,$(BOARD_VER)),)
+  COM_DEFS    +=  __EVB__
+else
+  COM_DEFS    +=  __PHONE__
+endif
+
+
+ifneq ($(filter __UMTS_RAT__,$(strip $(COM_DEFS))),)
+  ifeq ($(strip $(FAST_DORMANCY_SUPPORT)),TRUE)
+    COM_DEFS     += __FAST_DORMANCY__
+    COM_DEFS     += __DIALUP_GPRS_COUNTER_SUPPORT__
+  endif
+  ifeq ($(strip $(FAST_DORMANCY_SUPPORT)),FALSE)
+    COM_DEFS     += __NO_PSDATA_SEND_SCRI__
+    COM_DEFS     += __DIALUP_GPRS_COUNTER_SUPPORT__
+  endif
+endif
+
+2G_TX_POWER_CONTROL_SUPPORT_PLATFORM = MT6575 MT6577 MT6280 MT6589 MT6572 MT6582 MT6290 MT6595 MT6755 MT6797 $(strip $(SUPPORT_PLATFORM))
+ifneq ($(filter $(2G_TX_POWER_CONTROL_SUPPORT_PLATFORM), $(strip $(PLATFORM))),)
+  COM_DEFS    +=  __2G_TX_POWER_CONTROL_SUPPORT__
+endif
+
+HSDSCH_HARQ_OFF_NOT_SUPPORT_PLATFORM = MT6280 MT6589 MT6572 MT6582
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  ifeq ($(filter $(HSDSCH_HARQ_OFF_NOT_SUPPORT_PLATFORM), $(strip $(PLATFORM))),)
+    COM_DEFS    +=   __HSDSCH_HARQ_OFF__
+  endif
+endif
+
+ifeq ($(filter __UMTS_R6__,$(strip $(COM_DEFS))),)
+  ifneq ($(filter __R6_DSAC__,$(strip $(COM_DEFS))),)
+    $(error __R6_DSAC__ can only be turned on when __UMTS_R6__ defined)
+  endif
+endif
+
+ifneq ($(filter __UMTS_R6__,$(strip $(COM_DEFS))),)
+  ifeq ($(filter __R6_DSAC__,$(strip $(COM_DEFS))),)
+    COM_DEFS += __R6_DSAC__
+  endif
+endif
+
+ifneq ($(filter __REL7__,$(strip $(COM_DEFS))),)
+  ifeq ($(filter __R7_EHPLMN__,$(strip $(COM_DEFS))),)
+    COM_DEFS += __R7_EHPLMN__
+  endif
+  ifeq ($(filter __PLMN_LIST_WITH_LAC__,$(strip $(COM_DEFS))),)
+    COM_DEFS += __PLMN_LIST_WITH_LAC__
+  endif
+endif
+
+ifneq ($(filter __REL8__,$(strip $(COM_DEFS))),)
+  ifeq ($(filter __ETWS_SUPPORT__,$(strip $(COM_DEFS))),)
+    COM_DEFS += __ETWS_SUPPORT__ __EXT_SEG_CTRL_BLK__
+  endif
+endif
+
+ifdef MMA_MAX_NUM
+  ifneq ($(filter $(strip $(MMA_MAX_NUM)),$(strip $(MMA_MAX_NUM_VALUE))),)
+    COM_DEFS += MMA_MAX_NUM=$(strip $(MMA_MAX_NUM))
+  endif
+else
+  COM_DEFS += MMA_MAX_NUM=12
+endif
+
+ifeq ($(filter __EM_MODE__,$(COM_DEFS)),)
+  COM_DEFS  := $(filter-out __SLIM_MODEM_EM_MODE__ __MODEM_EM_MODE__,$(COM_DEFS))
+endif
+
+ifneq ($(filter __UCM_SUPPORT__,$(COM_DEFS)),)
+  COM_DEFS    += __FORCE_RELEASE__
+endif
+
+ifneq ($(filter __R7_EHPLMN__,$(strip $(COM_DEFS))),)
+  COM_DEFS += __SEARCH_ALL_EHPLMN_TOGETHER__
+endif
+
+NVRAM_REDUCTION_NOT_SUPPORT_PLATFORM = MT6236
+ifeq ($(filter $(strip $(PLATFORM)) ,$(NVRAM_REDUCTION_NOT_SUPPORT_PLATFORM)),)
+   COM_DEFS    += __CAMERA_NVRAM_REDUCTION_ISP_SUPPORT__
+   COM_DEFS    += __CAMERA_NVRAM_REDUCTION__
+endif
+
+ifneq ($(filter __UMTS_RAT__,$(strip $(COM_DEFS))),)
+  COM_DEFS    +=  __SMART_PAGING_3G_FDD__
+  ifeq ($(strip $(PLATFORM)),MT6280)
+    COM_DEFS    +=  __SMART_PAGING_3G_FDD_OFF__
+  endif
+endif
+
+ifdef 32K_XOSC_REMOVE
+  ifeq ($(strip $(32K_XOSC_REMOVE)), TRUE)
+    COM_DEFS     +=  __F32_XOSC_REMOVAL_SUPPORT__
+    ifneq ($(filter $(QUERY_32K_CRYSTAL_FROM_MD_PLATFORM), $(strip $(PLATFORM))),)
+      COM_DEFS     +=  __QUERY_32K_CRYSTAL_FROM_MD__
+    else
+      ifneq ($(filter $(QUERY_32K_CRYSTAL_FROM_AP_PLATFORM), $(strip $(PLATFORM))),)
+        COM_DEFS     +=  __QUERY_32K_CRYSTAL_FROM_AP__
+      endif
+    endif
+  endif
+endif
+
+# Non LTE single-mode
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  ifneq ($(filter __REL7__,$(strip $(COM_DEFS))),)
+    ifneq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+      COM_DEFS    +=   __MEDIATEK_SMART_QOS__
+    endif
+  endif
+endif
+
+EDCH_HRT_IMPROVE_NOT_SUPPORT_PLATFORM = MT6280 MT6589
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  ifeq ($(filter $(EDCH_HRT_IMPROVE_NOT_SUPPORT_PLATFORM), $(strip $(PLATFORM))),)
+    COM_DEFS    +=   __EDCH_HRT_IMPROVE__
+  endif
+endif
+
+
+2G_TX_GAIN_RF_CALIBRATION = MT6165_2G_RF
+ifneq ($(filter $(2G_TX_GAIN_RF_CALIBRATION),$(COM_DEFS_FOR_$(strip $(RF_MODULE)))),)
+  COM_DEFS    += __2G_TX_GAIN_RF_CALIBRATION__
+endif
+
+ifneq ($(filter __23G_PRI_RESEL_SUPPORT__,$(COM_DEFS)),)
+  COM_DEFS    +=  __PRI_RESEL_SUPPORT__
+endif
+
+MULTI_RAT_AFC_TADC_SHARE_PLATFORM = MT6290 MT6595 MT6755 MT6797 $(strip $(SUPPORT_PLATFORM))
+ifneq ($(filter $(MULTI_RAT_AFC_TADC_SHARE_PLATFORM), $(strip $(PLATFORM))),)
+  COM_DEFS    +=  __MULTI_RAT_AFC_TADC_SHARE_SUPPORT__
+endif
+
+# L1 DISABLE Options
+ifneq ($(filter TK6291_FPGA ELBRUS_FPGA,$(strip $(ORIGINAL_PROJECT_NAME))),)
+    COM_DEFS += __L1_ISR_DISABLE__
+    COM_DEFS += __L1_TASK_DISABLE__
+    COM_DEFS += __L1_PCORE_TASK_DISABLE__
+    #COM_DEFS += __DUMMYMPAL_TASK_DISABLE__
+endif
+
+ifneq ($(filter MT6763_FPGA,$(strip $(ORIGINAL_PROJECT_NAME))),)
+    COM_DEFS += __L1_ISR_DISABLE__
+    COM_DEFS += __L1_TASK_DISABLE__
+    COM_DEFS += __L1_PCORE_TASK_DISABLE__
+    COM_DEFS += __L1_2_TASK_DISABLE__
+    #COM_DEFS += __DUMMYMPAL_TASK_DISABLE__
+endif
+
+ifneq ($(filter MT6295M_FPGA,$(strip $(ORIGINAL_PROJECT_NAME))),)
+    COM_DEFS += __L1_ISR_DISABLE__
+    COM_DEFS += __L1_TASK_DISABLE__
+    COM_DEFS += __L1_PCORE_TASK_DISABLE__
+    COM_DEFS += __L1_2_TASK_DISABLE__
+    #COM_DEFS += __DUMMYMPAL_TASK_DISABLE__
+    COM_DEFS += __NO_MD2G_HW_PLATFORM__
+endif
+
+ifneq ($(findstring FPGA,$(ORIGINAL_PROJECT_NAME)),)
+  ifneq ($(findstring EL1S,$(ORIGINAL_FLAVOR)),)
+    COM_DEFS += __L1_ISR_DISABLE__
+    COM_DEFS += __L1_TASK_DISABLE__
+    COM_DEFS += __L1_PCORE_TASK_DISABLE__
+    #COM_DEFS += __DUMMYMPAL_TASK_DISABLE__
+    COM_DEFS += __UL1_TASK_DISABLE__
+    COM_DEFS += __EL1D_ENABLE__
+  endif
+endif
+
+ifneq ($(findstring L1DISABLE,$(ORIGINAL_FLAVOR)),)
+  COM_DEFS += __L1_ISR_DISABLE__
+  COM_DEFS += __L1_TASK_DISABLE__
+  COM_DEFS += __L1_PCORE_TASK_DISABLE__
+  #COM_DEFS += __DUMMYMPAL_TASK_DISABLE__
+  COM_DEFS += __UL1_TASK_DISABLE__
+  COM_DEFS += __EL1_TASK_DISABLE__
+  COM_DEFS += __MMRF_TASK_DISABLE__
+  COM_DEFS += __TL1_TASK_DISABLE__
+  COM_DEFS += __TL1DATA_TASK_DISABLE__
+  COM_DEFS += __AUDIO_TASK_DISABLE__
+  COM_DEFS += __NL1_TASK_DISABLE__
+  COM_DEFS += __MMRF_XL1TST_TASK_DISABLE__
+endif
+
+ifneq ($(findstring L1S_TL1,$(ORIGINAL_FLAVOR)),)
+  COM_DEFS += __L1_ISR_DISABLE__
+  COM_DEFS += __L1_TASK_DISABLE__
+  COM_DEFS += __L1_PCORE_TASK_DISABLE__
+  #COM_DEFS += __DUMMYMPAL_TASK_DISABLE__
+  COM_DEFS += __UL1_TASK_DISABLE__
+  COM_DEFS += __EL1_TASK_DISABLE__
+  #COM_DEFS += __MMRF_TASK_DISABLE__
+  #COM_DEFS += __TL1_TASK_DISABLE__
+  #COM_DEFS += __TL1DATA_TASK_DISABLE__
+
+  COM_DEFS += __GL1TST_TASK_DISABLE__
+  COM_DEFS += __UL1TST_TASK_DISABLE__
+  COM_DEFS += __EL1TST_TASK_DISABLE__
+  COM_DEFS += __ETSTM_TASK_DISABLE__
+  COM_DEFS += __MMRF_XL1TST_TASK_DISABLE__
+endif
+
+# Inherit from L1S_L1DISABLE Flavor
+ifneq ($(findstring CL1S,$(ORIGINAL_FLAVOR)),)
+  COM_DEFS += __L1_ISR_DISABLE__
+  COM_DEFS += __L1_TASK_DISABLE__
+  COM_DEFS += __L1_PCORE_TASK_DISABLE__
+  COM_DEFS += __UL1_TASK_DISABLE__
+  COM_DEFS += __EL1_TASK_DISABLE__
+  COM_DEFS += __TL1_TASK_DISABLE__
+  COM_DEFS += __TL1DATA_TASK_DISABLE__
+  COM_DEFS += __AUDIO_TASK_DISABLE__
+endif
+
+ifneq ($(filter NL1S NL1_EMULATION NL1S_TX_IN_SLM NL1S_MT6190,$(ORIGINAL_FLAVOR)),)
+  COM_DEFS += __L1_ISR_DISABLE__
+  COM_DEFS += __L1_TASK_DISABLE__
+  COM_DEFS += __L1_PCORE_TASK_DISABLE__
+  COM_DEFS += __UL1_TASK_DISABLE__
+  COM_DEFS += __EL1_TASK_DISABLE__
+  #COM_DEFS += __MMRF_TASK_DISABLE__
+  COM_DEFS += __TL1_TASK_DISABLE__
+  COM_DEFS += __TL1DATA_TASK_DISABLE__
+  COM_DEFS += __AUDIO_TASK_DISABLE__
+  #COM_DEFS += __NL1_TASK_DISABLE__
+  COM_DEFS += __NL1S_ENABLE_NRRC__
+endif
+
+ifeq ($(strip $(UL1_SUPPORT)),TRUE)
+  ifdef L1_WCDMA
+    ifeq ($(strip $(L1_WCDMA)),TRUE)
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        ifneq ($(filter $(strip $(PLATFORM)),$(UL1_HS_PLUS_PLATFORM)),)
+          ifeq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+            COM_DEFS       +=   __U4G_ADAPTOR__
+          endif
+          COM_DEFS       +=   __UL1_HS_PLUS_PLATFORM__
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(FPGA_L1_ROUTER_SUPPORT)),TRUE)
+  COM_DEFS += __FPGA_L1_ROUTER__ __UESIM_KS_FPGA_SIDE__  __DUMMY_L1_ON_TARGET_4G5G__
+endif
+
+ifeq ($(strip $(N5G_ADAPTOR_SUPPORT)),TRUE)
+  COM_DEFS += __N5G_ADAPTOR__ __NL1_TX_C_FILE__ __NL1_C_FILE__ __NL1_RX_C_FILE__
+endif
+
+PPP_MODULE_BUILD=FALSE
+ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+    PPP_MODULE_BUILD=TRUE
+  else
+    ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_EGPRS_MODE)
+      PPP_MODULE_BUILD=TRUE
+    endif
+  endif
+endif
+
+ifeq ($(strip $(PPP_MODULE_BUILD)),TRUE)
+  ifndef PPP_SUPPORT
+    ifeq ($(strip $(EUTRAN_MODE_SUPPORT)), EUTRAN_MODE)
+      COM_DEFS += PPP_NOT_PRESENT
+    endif
+  else
+     ifneq ($(strip $(PPP_SUPPORT)),NONE)
+       ifeq ($(strip $(EUTRAN_MODE_SUPPORT)), EUTRAN_MODE)
+         COM_DEFS += PPP_NOT_PRESENT
+       endif
+     endif
+  endif
+endif
+
+
+ifeq ($(strip $(SMART_PHONE_CORE)),MODEM_HOST)
+  COM_DEFS += __MODEM_CCCI_EXIST__
+endif
+
+ifeq ($(strip $(SMART_PHONE_CORE)),MODEM_ONLY)
+  COM_DEFS += __MODEM_ONLY__
+  COM_DEFS += __WDT_DISABLE_BY_MD_DBG__
+endif
+
+ifeq ($(strip $(SMART_PHONE_CORE)),NONE)
+  ifeq ($(strip $(MODEM_CARD)),FULL)
+    COM_DEFS += __TRADITIONAL_MODEM_CARD__
+  endif
+endif
+
+ifdef LTE_GTT_SUPPORT
+  ifeq ($(strip $(LTE_GTT_SUPPORT)),TRUE)
+      COM_DEFS += __LTE_GTT_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(HIF_CCCI_SUPPORT)),TRUE)
+  COM_DEFS += __MODEM_CCCI_EXIST__
+endif
+
+##merge from smart_phone_option.mak
+ifeq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+# global compile option: __SMART_PHONE_MODEM__
+  COM_DEFS += __SMART_PHONE_MODEM__
+  COM_DEFS += __SP_BOOTTRC_ENABLE__
+  COM_DEFS += __MODEM_CCCI_EXIST__
+  COM_DEFS += __ANDROID_MODEM__
+  COM_DEFS += __ANDROID_RIL_SUPPORT__ __SP_RIL_SUPPORT__ __CUSD_UNICODE_INPUT_SUPPORT__ __CSMSS_EXPLICIT_SS_OPERATION__ __AUTO_CALL_REJECTION__
+  COM_DEFS += __DISABLE_MODEM_AUTO_POWER_OFF__
+  COM_DEFS += __DISABLE_MODEM_AUTO_STARTUP__
+  COM_DEFS += __EIGHT_PORT_MODULE__
+  COM_DEFS += __VTS_LATE_RESPONSE__
+  COM_DEFS += __ATD_EXPLICIT_ECC__
+  COM_DEFS += __CMUX_REDIRECT_DATA_CHANNEL__
+  COM_DEFS += __RUN_AT_COMMAND_BY_AP__
+  COM_DEFS += __CPI_SUPPORT__
+  COM_DEFS += __LONG_MULTIPLE_CMD_SUPPORT__
+  COM_DEFS += __CGSMS_FULL_SUPPORT__
+  COM_DEFS += __CPBW_SUPPORT_ENCODING_FIELD__
+  COM_DEFS += __CSSU_EXTEND__
+  COM_DEFS += __DHL_SP_LOGGING_SUPPORT__
+  COM_DEFS += __LTE_ATTACH_PDN_ESM_BLOCK_INVALID_APN__
+  COM_DEFS += __2STAGE_NW_SELECTION__
+  COM_DEFS += __REPORT_AVAILABLE_PLMN__
+  COM_DEFS += __L5_CALL_SUPPORT__
+
+  ifdef GEMINI
+    ifneq ($(strip $(GEMINI)),FALSE)
+      COM_DEFS += __SINGLE_AP_DUAL_MODEM__
+    endif
+  endif
+
+  ifeq ($(strip $(DEMO_PROJECT)),TRUE)
+    COM_DEFS += __SIM_UNIT_TEST__
+  endif
+
+  ifdef MTK_BT_CHIP
+    ifneq ($(filter $(strip $(MTK_BT_CHIP)),$(BLUETOOTH_SCO_SW_CODEC_BT_CHIP)),)
+      COM_DEFS +=  __BT_SCO_CODEC_SUPPORT__
+      COM_DEFS +=  __CVSD_CODEC_SUPPORT__
+    endif
+  else
+    #Add in case of MTK_BT_CHIP missing definition
+    ifneq ($(filter $(strip $(PLATFORM)),$(BLUETOOTH_SCO_SW_CODEC_PLATFORM)),)
+      COM_DEFS +=  __BT_SCO_CODEC_SUPPORT__
+      COM_DEFS +=  __CVSD_CODEC_SUPPORT__
+    endif
+  endif
+
+  ifeq ($(strip $(VOLTE_SUPPORT)),TRUE)
+    COM_DEFS +=  __MCU_DTMF_SUPPORT__
+    COM_DEFS +=  __G_CODEC_SUPPORT__
+  endif
+endif
+##merge from smart_phone_option.mak
+
+##for AGPS feature, Disable OTDOA capability report
+ifneq ($(filter __GEN93_MP1__,$(COM_DEFS)),)
+      # MP1 enable option list
+endif
+
+ifdef KAL_HW_ITC_CUSTOM_LOG_SUPPORT
+  ifeq ($(strip $(KAL_HW_ITC_CUSTOM_LOG_SUPPORT)),TRUE)
+    COM_DEFS += __KAL_HW_ITC_SLA_LOG__
+  endif
+endif
+
+ifdef TASK_BATCH_SCHEDULING
+  ifeq ($(strip $(TASK_BATCH_SCHEDULING)),TRUE)
+    COM_DEFS += __LP_SCHEDULE_ENABLE__
+    COM_DEFS += __LP_SCHEDULE_EL12_RESCHEDULE__
+    COM_DEFS += __LP_SCHEDULE_HMU_RESCHEDULE__
+  endif
+endif
+
+ifdef LWA_SUPPORT
+  ifeq ($(strip $(LWA_SUPPORT)),TRUE)
+      COM_DEFS += __LWA_SUPPORT__
+  endif
+endif
+
+ifdef IDC_PTA_VERSION
+  ifeq ($(strip $(IDC_PTA_VERSION)),IDC_PTA_DEFAULT)
+      COM_DEFS += __IDC_PTA_DEFAULT__
+  else
+      ifeq ($(strip $(IDC_PTA_VERSION)),IDC_PTA_3.0)
+          COM_DEFS += __IDC_PTA_3_0__
+      else
+          ifeq ($(strip $(IDC_PTA_VERSION)),IDC_PTA_5.0)
+              COM_DEFS += __IDC_PTA_5_0__
+          endif
+      endif
+  endif
+endif
+
+ifdef SECURITY_FEATURE_TEST
+  ifeq ($(strip $(SECURITY_FEATURE_TEST)),TRUE)
+    COM_DEFS += __NVRAM_CRYPT_TEST__
+    COM_DEFS += __NVRAM_SML_ACCESSIBLE__
+    COM_DEFS += __SEC_TEST__
+    COM_DEFS += __NVRAM_CRITICAL_DATA_SIGN_SUPPORT__
+    COM_DEFS += DBG_FIXED_CPUID_AND_PRODUCT
+    COM_DEFS += TEST_TASK_ENABLE
+    COM_DEFS += TEST_SECTEST_TASK
+    COM_DEFS += __SEC_DRV_TEST__
+endif
+endif
+
+ifeq ($(strip $(UMTS_TDD_SUPPORT)),NONE)
+  COM_DEFS += __MODEM_PACKAGE_DISABLE_UMTS_TDD__
+endif
+
+ifdef GEMINI
+  ifneq ($(strip $(GEMINI)),FALSE)
+    ifeq ($(strip $(C2K_MODE_SUPPORT)),C2K_SRLTE)
+      COM_DEFS += __SRLTE_ENHANCE__
+    endif
+  endif
+endif
+
+ifdef NVRAM_OTA_SMART_RESET
+  ifeq ($(strip $(NVRAM_OTA_SMART_RESET)), TRUE)
+    COM_DEFS += __NVRAM_STRUCTURE_CHANGE_RESET__
+    COM_DEFS += __NVRAM_DEFVAL_CHANGE_RESET__
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6295)
+  ifeq ($(strip $(MD95_IS_2CORES)),TRUE)
+    COM_DEFS    += __MD95_IS_2CORES__
+  endif
+endif
+
+ifdef DYNAMIC_ANTENNA_TUNING
+ ifeq ($(strip $(DYNAMIC_ANTENNA_TUNING)),TRUE)
+    COM_DEFS    +=  __DYNAMIC_ANTENNA_TUNING__
+  endif
+endif
+
+ifeq ($(filter REL_CR_%,$(strip $(RELEASE_PACKAGE))),)
+  COM_DEFS += __MTK_INTERNAL_ENG_USER__
+endif
+
+ifdef MT6177M_RFCCA_SUPPORT
+  ifeq ($(strip $(MT6177M_RFCCA_SUPPORT)),TRUE)
+    COM_DEFS += __MT6177M_RFCCA_SUPPORT__
+  endif
+endif
+
+ifdef IWLAN_FUNCTION_DISABLE
+  ifeq ($(strip $(IWLAN_FUNCTION_DISABLE)),TRUE)
+    COM_DEFS += __IWLAN_FUNCTION_DISABLE__
+  endif
+endif
+
+ifeq ($(strip $(MT_FRAMEWORK_ENABLE)),TRUE)
+  COM_DEFS += __MT_FRAMEWORK_SUPPORT__
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifdef MCIF_SUPPORT #MD Consys Interface
+    ifeq ($(strip $(MCIF_SUPPORT)), TRUE)
+      #
+      # MCIF common compiler option
+      #
+      COM_DEFS         += __MCIF_SUPPORT__
+
+      #WiFi
+      ifdef MCIF_WIFI_SUPPORT
+        ifeq ($(strip $(MCIF_WIFI_SUPPORT)), TRUE)
+            #
+            # MCIF_WIFI common compiler option
+            #
+            COM_DEFS         += __MCIF_WIFI_SUPPORT__
+            COM_DEFS         += __MCIF_PDMA_SUPPORT__
+            COM_DEFS         += __ETHERNET_SERVICE_SUPPORT__
+        endif
+      endif # MCIF_WIFI_SUPPORT
+
+      #
+      # Low layer compoment
+      #
+
+      # Consys Interface Share Memory Management
+      ifdef MCIF_SHM_SUPPORT
+        ifeq ($(strip $(MCIF_SHM_SUPPORT)), TRUE)
+          ifeq ($(strip $(HIF_CCCI_SUPPORT)),TRUE)
+            #
+            # MCIF_SHM common compiler option
+            #
+            COM_DEFS         += __MCIF_SHM_SUPPORT__
+          endif # HIF_CCCI_SUPPORT
+        endif # MCIF_SHM_SUPPORT
+      endif # MCIF_SHM_SUPPORT
+
+      # EINT
+      ifdef MCIF_EINT_SUPPORT
+        ifeq ($(strip $(MCIF_EINT_SUPPORT)), TRUE)
+          #
+          # MCIF_EINT common compiler option
+          #
+          COM_DEFS         += __MCIF_EINT_SUPPORT__
+        endif
+      endif # MCIF_EINT_SUPPORT
+
+      # PCCIF
+      ifdef MCIF_PCCIF_SUPPORT
+        ifeq ($(strip $(MCIF_PCCIF_SUPPORT)), TRUE)
+          #
+          # MCIF_PCCIF common compiler option
+          #
+          COM_DEFS         += __MCIF_PCCIF_SUPPORT__
+        endif
+      endif # MCIF_PCCIF_SUPPORT
+
+      # PDMA (Packet DMA)
+      ifdef MCIF_PDMA_SUPPORT
+        ifeq ($(strip $(MCIF_PDMA_SUPPORT)), TRUE)
+          #
+          # MCIF_PDMA common compiler option
+          #
+          COM_DEFS         += __MCIF_PDMA_SUPPORT__
+        endif
+      endif # MCIF_PDMA_SUPPORT
+
+    endif #MCIF_SUPPORT = TRUE
+  endif
+endif #MODIS_CONFIG != TRUE
+
+ifdef NV_CHKSUM_ENHANCE
+  ifeq ($(strip $(NV_CHKSUM_ENHANCE)), TRUE)
+    COM_DEFS += __NV_CHKSUM_ENHANCE__
+  endif
+endif
+
+ifdef NVRAM_LID_HASH_CHECK
+  ifeq ($(strip $(NVRAM_LID_HASH_CHECK)), TRUE)
+    COM_DEFS += __NVRAM_LID_HASH_CHECK__
+  endif
+endif
+
+ifdef NVRAM_LID_CACHE
+  ifeq ($(strip $(NVRAM_LID_CACHE)), TRUE)
+    COM_DEFS += __NVRAM_LID_CACHE__
+    COM_DEFS += __NVRAM_LID_PREREAD__
+    COM_DEFS += __NVRAM_CACHE_BYPASS_W_LIST__
+    ifeq ($(strip $(NVRAM_PARTIAL_CACHE)), TRUE)
+      COM_DEFS += __NVRAM_PARTIAL_CACHE__
+    endif
+  endif
+endif
+
+ifdef NVRAM_AUTOGEN_V2
+  ifeq ($(strip $(NVRAM_AUTOGEN_V2)), TRUE)
+    COM_DEFS += __NVRAM_AUTOGEN_V2__   
+  endif
+endif
+
+# ENLARGE BAT OPTION
+ifdef ENLARGE_BAT_OPTION
+  COM_DEFS += _ENLARGE_BAT_OPTION_=$(strip $(ENLARGE_BAT_OPTION))
+endif
+
+# $(info RFUT_BUILD_ENABLED="$(RFUT_BUILD_ENABLED)")
+ifdef RFUT_BUILD_ENABLED
+  ifeq ($(strip $(RFUT_BUILD_ENABLED)),TRUE)
+    COM_DEFS += RFUT_SCRIPT_TEST_ENABLED
+  endif
+endif
+
+ifeq ($(strip $(GLOBAL_TRACE_DEBUG_LEVEL)),0)
+    COM_DEFS += _GLOBAL_TRACE_DEBUG_LEVEL_=0
+endif
+ifeq ($(strip $(GLOBAL_TRACE_DEBUG_LEVEL)),1)
+    COM_DEFS += _GLOBAL_TRACE_DEBUG_LEVEL_=1
+endif
+ifeq ($(strip $(GLOBAL_TRACE_DEBUG_LEVEL)),2)
+    COM_DEFS += _GLOBAL_TRACE_DEBUG_LEVEL_=2
+endif
+ifeq ($(strip $(GLOBAL_TRACE_DEBUG_LEVEL)),3)
+    COM_DEFS += _GLOBAL_TRACE_DEBUG_LEVEL_=3
+endif
+ifeq ($(strip $(GLOBAL_TRACE_DEBUG_LEVEL)),4)
+    COM_DEFS += _GLOBAL_TRACE_DEBUG_LEVEL_=4
+endif
+ifeq ($(strip $(GLOBAL_TRACE_DEBUG_LEVEL)),5)
+    COM_DEFS += _GLOBAL_TRACE_DEBUG_LEVEL_=5
+endif
+
+ifdef OS_TICK_PERIOD_IN_US
+  COM_DEFS      += OS_TICK_PERIOD_US=$(strip $(OS_TICK_PERIOD_IN_US))
+endif
+
+ifeq ($(strip $(HIF_USB_SUPPORT)),TRUE)
+  COM_DEFS += __CREATE_USB_HISR__
+endif
+
+ifeq ($(strip $(HIF_SDIO_SUPPORT)),TRUE)
+  COM_DEFS      += __CREATE_SDIO_HISR__
+endif
+
+ifeq ($(strip $(SYS_TEST_EMSC_ENABLE)),TRUE)
+  COM_DEFS      += SYS_TEST_EMSC_ENABLE
+endif
+
+ifdef SUBMARINE_SUPPORT
+  ifeq ($(strip $(SUBMARINE_SUPPORT)),TRUE)
+    ifdef MD_TCPIP_SUPPORT
+      ifeq ($(strip $(MD_TCPIP_SUPPORT)),TRUE)
+        ifeq ($(strip $(IMS_SUPPORT)),TRUE)
+          COM_DEFS += __SUBMARINE_SUPPORT__
+          COM_DEFS += __MD_IPSEC_SUPPORT__
+          COM_DEFS += __MD_CRYPTO_SUPPORT__
+          COM_DEFS += __IMSM_TASK_ENABLE__
+          COM_DEFS += __DISPATCHER_SUPPORT__
+          COM_DEFS += __MD_CERT_SUPPORT__
+          COM_DEFS += __MD_WLC_SUPPORT__
+          ifeq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+            COM_DEFS += __UESIM_WIFI_ADAPTOR__
+          endif
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifdef 2G_FDD_FLIGHT_MODE_RETAIN_STORED_SI
+  ifeq ($(strip $(2G_FDD_FLIGHT_MODE_RETAIN_STORED_SI)),TRUE)
+    COM_DEFS += __2G_FDD_FLIGHT_MODE_RETAIN_STORED_SI__
+  endif
+endif
+
+ifdef 2G_FDD_USE_STORED_SI
+  ifeq ($(strip $(2G_FDD_USE_STORED_SI)),TRUE)
+    COM_DEFS += __2G_FDD_USE_STORED_SI__
+  endif
+endif
+
+ifdef MTK_CSFB_APPROVE_SUPPORT
+  ifeq ($(strip $(MTK_CSFB_APPROVE_SUPPORT)),TRUE)
+    COM_DEFS += __MT_CSFB_APPROVE_SUPPORT__
+  endif
+endif
+
+ifdef FR1_PLUS_FR2
+  ifeq ($(strip $(FR1_PLUS_FR2)),FR1_PLUS_FR2)
+    COM_DEFS += __IS_NR_FR2_SUPPORT__
+    COM_DEFS += __IS_NR_FR1_SUPPORT__
+  endif
+  ifeq ($(strip $(FR1_PLUS_FR2)),FR1_ONLY)
+    COM_DEFS += __IS_NR_FR1_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(DMF_SUPPORT)),TRUE)
+  COM_DEFS += __DMF_SUPPORT__
+  COM_DEFS += __DMF_OP01_NW_KPI__
+endif
+
+ifdef FIVEG_MODE_SUPPORT
+  ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+    ifeq ($(strip $(IMS_SUPPORT)), TRUE)
+       COM_DEFS += __FIVEG_VOICE__
+    endif
+    COM_DEFS += __EPSFB_SUPPORT__
+  endif
+endif
+
+ifdef MTK_GWSD_MT_SUPPORT
+  ifeq ($(strip $(MTK_GWSD_MT_SUPPORT)),TRUE)
+    COM_DEFS += __MT_CSFB_APPROVE_SUPPORT__
+    ifdef GEMINI_L
+      ifneq ($(strip $(GEMINI_L)),FALSE)
+        COM_DEFS += __VOLTE_SI_ENH__
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(MCF_SUPPORT)),TRUE)
+  COM_DEFS += __MCF_COMBINE_FILE_SUPPORT__
+endif
+
+#LTE LAA define, enable for MT6297 and later
+ifdef MTK_MODEM_ARCH
+  ifeq ($(filter MT6293 MT6295,$(MTK_MODEM_ARCH)),)
+    COM_DEFS += __MP_LTE_DOWNLINK_LAA_R13__
+  endif
+endif
+
+ifdef NSFT_ADJUST_TX_POWER_OFFSET_SUPPORT
+  ifeq ($(strip $(NSFT_ADJUST_TX_POWER_OFFSET_SUPPORT)),TRUE)
+    COM_DEFS    +=  __NSFT_ADJUST_TX_POWER_OFFSET_SUPPORT__
+  endif
+ endif
+ 
+# for NLWCTG_C2K_STANDBY flavor
+ifeq ($(strip $(ORIGINAL_FLAVOR)),NLWCTG_C2K_STANDBY)
+  COM_DEFS += MTK_DEV_93M_LL1A_BYPASS_ENABLE
+  COM_DEFS += C2K_LL1_STUB_TARGET_SUPPORT
+  UIM_DISABLE = TRUE
+endif
+ifeq ($(strip $(ORIGINAL_FLAVOR)),NLWCTG_MP2_CN_C2K_STANDBY)
+  COM_DEFS += MTK_DEV_93M_LL1A_BYPASS_ENABLE
+  COM_DEFS += C2K_LL1_STUB_TARGET_SUPPORT
+  UIM_DISABLE = TRUE
+endif
+
+ifeq ($(strip $(ET_SMART_CHAR_SUPPORT)), TRUE)
+  COM_DEFS += __ET_SMART_CHAR_SUPPORT__
+endif
+
+ifeq ($(strip $(VPA_ACOUSTIC_REMOVE)), TRUE)
+  COM_DEFS += __IS_VPA_ACOUSTIC_REMOVE__
+endif
+
+ifeq ($(strip $(DHL_RAM_LOGGING_SUPPORT)),TRUE)
+  COM_DEFS    += __DHL_RAM_LOGGING_SUPPORT__
+endif
+
+ifdef DHL_DISABLE_DATA_OUTPUT
+  ifeq ($(strip $(DHL_DISABLE_DATA_OUTPUT)),TRUE)
+    COM_DEFS += __DHL_DISABLE_DATA_OUTPUT__
+  endif
+endif
+
+ifdef DHL_BOOT_UP_TRACE_SUPPORT
+  ifeq ($(strip $(DHL_BOOT_UP_TRACE_SUPPORT)),TRUE)
+    COM_DEFS += __DHL_BOOT_UP_TRACE_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(AES256_SUPPORT)), TRUE)
+  COM_DEFS += __AES256_SUPPORT__
+endif
+
+ifeq ($(strip $(MAIF_SUPPORT)),TRUE)
+  COM_DEFS += __MAIF_SUPPORT__
+  COM_DEFS += __MAIF_MODULE__
+endif
+
+ifdef N3GPP_OFFLOAD_OVER_DATA
+  ifeq ($(strip $(N3GPP_OFFLOAD_OVER_DATA)), TRUE)
+    COM_DEFS += __N3GPP_OVER_DATA__
+  endif
+endif
+
+ifdef WIFIPROXY_SUPPORT
+  ifeq ($(strip $(WIFIPROXY_SUPPORT)),TRUE)
+        COM_DEFS += __WIFIPROXY_SUPPORT__
+  endif
+endif
+
+ifdef NVM_GLOBAL_CABC 
+  ifeq ($(strip $(NVM_GLOBAL_CABC)),TRUE) 
+    COM_DEFS += __NVM_GLOBAL_CABC__ 
+  endif 
+endif
+
+ifeq ($(strip $(L5_F001)),TRUE) 
+  COM_DEFS += __L5_F001__
+  COM_DEFS += __SML_PUK__
+endif
+
+ifdef ONE_BUTTON_CALL_REJECT
+  ifeq ($(strip $(ONE_BUTTON_CALL_REJECT)),TRUE)
+    COM_DEFS += __ONE_BUTTON_CALL_REJECT__
+  endif
+endif
+
+ifeq ($(strip $(TA_SAR_TX_POWER_BACKOFF_SUPPORT)),TRUE)
+    COM_DEFS += __TA_SAR_TX_POWER_BACKOFF_SUPPORT__
+endif
+
+ifdef SA_PLUS_SA_SUPPORT
+  ifeq ($(strip $(SA_PLUS_SA_SUPPORT)),TRUE)
+    COM_DEFS += __SA_PLUS_SA_SUPPORT__
+  endif
+endif
+
+ifdef NR_DL_MAX_CC
+  ifeq ($(strip $(NR_DL_MAX_CC)),2)
+    COM_DEFS +=__NR_CA_DL_2CC__
+  endif
+endif
+
+ifdef MOB_HST_GAME
+  ifeq ($(strip $(MOB_HST_GAME)),TRUE) 
+    COM_DEFS += __MOB_HST_GAME__
+  endif 
+endif
+
+ifdef GAME_LATENCY_OPT_SMART_HANDOVER
+  ifeq ($(strip $(GAME_LATENCY_OPT_SMART_HANDOVER)),TRUE) 
+    COM_DEFS += __GAME_LATENCY_OPT_SMART_HANDOVER__
+  endif 
+endif
+
+ifdef NR_N25_40M_SUPPORT
+  ifeq ($(strip $(NR_N25_40M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N25_40M_SUPPORT__
+  endif
+endif
+
+ifdef NR_N3_40M_SUPPORT
+  ifeq ($(strip $(NR_N3_40M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N3_40M_SUPPORT__
+  endif
+endif
+
+ifdef NR_N1_40M_50M_SUPPORT
+  ifeq ($(strip $(NR_N1_40M_50M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N1_40M_50M_SUPPORT__
+  endif
+endif
+
+ifdef NR_70M_SUPPORT
+  ifeq ($(strip $(NR_70M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_70M_SUPPORT__
+  endif
+endif
+
+ifdef NR_N28_30M_SUPPORT
+  ifeq ($(strip $(NR_N28_30M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N28_30M_SUPPORT__
+  endif
+endif
+
+ifdef NR_N1_25M_30M_SUPPORT
+  ifeq ($(strip $(NR_N1_25M_30M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N1_25M_30M_SUPPORT__
+  endif
+endif
+
+ifdef MD_TFWK
+  ifeq ($(strip $(MD_TFWK)),TRUE)
+    COM_DEFS += __MD_TFWK__
+  endif
+endif
+
+ifdef WHITE_CELL_LOCK 
+  ifeq ($(strip $(WHITE_CELL_LOCK)),TRUE) 
+    COM_DEFS += __WHITE_CELL_LOCK__ 
+  endif 
+endif
+
+ifdef DMF_SUPPORT 
+  ifeq ($(strip $(DMF_SUPPORT)),TRUE) 
+    ifdef DMF_THIN_MODEM
+      ifeq ($(strip $(DMF_THIN_MODEM)),TRUE)
+        COM_DEFS += __DMF_THIN_MODEM__
+        ifdef DMF_QUERY_OTA_MSG
+          COM_DEFS += __DMF_QUERY_OTA_MSG__=$(strip $(DMF_QUERY_OTA_MSG))
+        endif
+      endif
+    endif      
+  endif 
+endif
+
+ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+  COM_DEFS += __L5_CALL_SUPPORT__
+endif
+
+ifdef MBIM_MS_NETWORK_BLACKLIST 
+  ifeq ($(strip $(MBIM_MS_NETWORK_BLACKLIST)),TRUE) 
+    COM_DEFS += __MBIM_MS_NETWORK_BLACKLIST__ 
+  endif 
+endif
+
+ifdef EONS_SUPPORT 
+  ifeq ($(strip $(EONS_SUPPORT)),TRUE) 
+    COM_DEFS += __EONS_SUPPORT__ 
+  endif 
+endif
+
+ifeq ($(strip $(HIF_PCIE_SUPPORT)),TRUE)
+  ifeq ($(strip $(PCIE_LTR_SUPPORT)),TRUE)
+    COM_DEFS += __PCIE_LTR_SUPPORT__
+  endif
+  ifeq ($(strip $(PCIE_TRAS_SUPPORT)),TRUE)
+    COM_DEFS += __PCIE_TRAS_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(TX_PWR_EXTENSION)),TRUE)
+  COM_DEFS += __TX_PWR_EXTENSION__
+endif
+
+ifeq ($(strip $(DEL_READ_SMS_EXTENSION)),TRUE)
+  COM_DEFS += __DEL_READ_SMS_EXTENSION__
+endif
+
+ifdef THIN_MODEM_SIM 
+  ifeq ($(strip $(THIN_MODEM_SIM)),TRUE) 
+    COM_DEFS += __SIM_TERMINAL_CAP__
+    COM_DEFS += __SIM_PASS_THROUGH__
+    COM_DEFS += __SIM_ACCESS_INTEGRATION__
+    COM_DEFS += __SIM_MULTI_PIN__
+    COM_DEFS += __EUICC_SUPPORT__
+    COM_DEFS += __SIM_RECOVERY_SWITCH__
+  endif 
+endif
+
+ifeq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+  COM_DEFS += __RSRA_UL_BYPASS__
+endif
+
+ifdef DISABLE_RAT
+  COM_DEFS += RAT_NEED_DISABLE=$(strip $(DISABLE_RAT))
+endif
+
+ifdef NR_N2_25M_30M_SUPPORT
+  ifeq ($(strip $(NR_N2_25M_30M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N2_25M_30M_SUPPORT__
+  endif
+endif
+
+ifdef NR_N5_25M_30M_SUPPORT
+  ifeq ($(strip $(NR_N5_25M_30M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N5_25M_30M_SUPPORT__
+  endif
+endif
+
+ifdef NR_N48_SUPPORT
+  ifeq ($(strip $(NR_N48_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N48_SUPPORT__
+  endif
+endif
+
+ifdef IVT_RF_WIDE_TEMPERATURE_SUPPORT
+  ifeq ($(strip $(IVT_RF_WIDE_TEMPERATURE_SUPPORT)),TRUE)
+    COM_DEFS += __RF_WIDE_TEMPERATURE_SUPPORT__
+  endif
+endif
+
+ifdef IVT_COTMS_TELEMATICS_SUPPORT
+  ifeq ($(strip $(IVT_COTMS_TELEMATICS_SUPPORT)),TRUE)
+    COM_DEFS += __COTMS_TELEMATICS_SUPPORT__
+  endif
+endif
+
+ifdef NR_N38_25M_30M_40M_SUPPORT
+  ifeq ($(strip $(NR_N38_25M_30M_40M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N38_25M_30M_40M_SUPPORT__
+  endif
+endif
+
+ifdef NR_N7_25M_30M_40M_50M_SUPPORT
+  ifeq ($(strip $(NR_N7_25M_30M_40M_50M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_N7_25M_30M_40M_50M_SUPPORT__
+  endif
+endif
+
+ifeq ($(strip $(NR_CA_MAX_BW)), 100M)
+  COM_DEFS += __NR_CA_DL_BW_100M__
+else ifeq ($(strip $(NR_CA_MAX_BW)), 120M)
+  COM_DEFS += __NR_CA_DL_BW_120M__
+else ifeq ($(strip $(NR_CA_MAX_BW)), 200M)
+  COM_DEFS += __NR_CA_DL_BW_200M__
+else
+  ifeq ($(strip $(PLATFORM)),MT6880)
+      COM_DEFS +=  __NR_CA_DL_BW_200M__
+  endif
+  ifeq ($(strip $(PLATFORM)),MT6890)
+      COM_DEFS +=  __NR_CA_DL_BW_200M__
+  endif
+  ifeq ($(strip $(PLATFORM)),MT2735)
+      COM_DEFS +=  __NR_CA_DL_BW_200M__
+  endif
+endif
+
+ifdef SKIP_VG_OPTION_DURING_INIT
+    COM_DEFS += __SKIP_VG_OPTION_DURING_INIT__=$(strip $(SKIP_VG_OPTION_DURING_INIT)) 
+endif
+
+ifeq ($(strip $(TELEMATICS_RXONLY_BAND_QUERY)),TRUE)
+  COM_DEFS += __TELEMATICS_RXONLY_BAND_QUERY__
+endif
+
+ifeq ($(strip $(RRC_TELEMATICS_RXONLY_BAND_QUERY)),TRUE)
+  COM_DEFS += __RRC_TELEMATICS_RXONLY_BAND_QUERY__
+endif
+
+ifdef NR_35M_45M_SUPPORT
+  ifeq ($(strip $(NR_35M_45M_SUPPORT)),TRUE)
+    COM_DEFS += __NR_35M_45M_SUPPORT__
+  endif
+endif
+
diff --git a/mcu/make/common/rule_def/complist_def.mak b/mcu/make/common/rule_def/complist_def.mak
new file mode 100644
index 0000000..df7fe58
--- /dev/null
+++ b/mcu/make/common/rule_def/complist_def.mak
@@ -0,0 +1,770 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+# *************************************************************************
+# always define
+# *************************************************************************
+COMPLIST := 
+COMPLIST += audio
+COMPLIST += che
+COMPLIST += config
+COMPLIST += custom
+COMPLIST += custom_driver
+COMPLIST += custom_service
+COMPLIST += custom_middleware
+COMPLIST += custom_protocol
+COMPLIST += devdrv
+COMPLIST += devdrv_sec
+COMPLIST += dsmgr
+COMPLIST += dsp_ram
+COMPLIST += dvfs_drv
+COMPLIST += kal
+COMPLIST += mtkdebug
+COMPLIST += qmu_bm
+COMPLIST += sib_drv
+COMPLIST += sleep_drv
+COMPLIST += sph_ipc
+COMPLIST += sst
+COMPLIST += sst_sec
+COMPLIST += sys_drv
+COMPLIST += sys_svc
+COMPLIST += sys_svc_sec
+COMPLIST += tdd_drv
+COMPLIST += tty
+COMPLIST += tfwk_drv
+COMPLIST += verno
+
+# *************************************************************************
+# defined by rules
+# *************************************************************************
+ifeq ($(strip $(CCCI_FS_SUPPORT)),TRUE)
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    COMPLIST += fs
+  else
+    COMPLIST += fs_internal
+  endif
+else
+  COMPLIST += fs_internal
+endif
+
+ifeq ($(strip $(HTTP_TLS_SUPPORT)),TRUE)
+COMPLIST += http_tls
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+COMPLIST += cxif_check
+endif
+
+ifneq ($(filter __MD97__ __MD97P__, $(COM_DEFS)),)
+COMPLIST 	   += serdes_drv
+endif
+
+ifeq ($(strip $(BIP_SUPPORT)),TRUE)
+COMPLIST       += bip
+endif
+
+ifeq ($(strip $(XCAP_SUPPORT)),TRUE)
+COMPLIST       += xcap
+COMPLIST       += libroxml
+endif
+
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifneq ($(ORIGINAL_FLAVOR),BASIC_HIF)
+    ifeq ($(strip $(KPALV_SUPPORT)),TRUE)
+      COMPLIST       += kpalv
+    endif
+  endif
+endif
+
+ifeq ($(strip $(EL1_IT)),TRUE)
+COMPLIST       += ll1_pcore
+endif
+
+ifeq ($(strip $(RTOS)),MERTOS)
+COMPLIST       +=  mertos mertos_config
+endif
+
+ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+    COMPLIST += ll1
+else
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+    COMPLIST += ll1
+  endif
+endif
+
+ifdef EMAIL_SUPPORT
+  ifneq ($(strip $(EMAIL_SUPPORT)),NONE)
+      COMPLIST += email emlst
+  endif
+endif
+
+ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+    COMPLIST    += dhl
+    COMPLIST    += dhl_ext
+    COMPLIST    += dhl_sub
+else
+  ifeq ($(strip $(TST_SUPPORT)),TRUE)
+    COMPLIST    += tst
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+  ifeq ($(strip $(ICD_SUPPORT)),TRUE)
+    COMPLIST    += pmc
+  endif
+endif
+
+ifeq ($(strip $(IRDA_SUPPORT)),TRUE)
+  COMPLIST += irda ircomm obex
+endif
+
+ifeq ($(strip $(XML_SUPPORT)),TRUE)
+  COMPLIST += xmlp
+endif
+
+ifdef SDP_SUPPORT
+  ifneq ($(strip $(SDP_SUPPORT)),FALSE)
+     COMPLIST += sdp
+  endif   
+endif
+
+ifdef XDM_SUPPORT
+  ifneq ($(strip $(XDM_SUPPORT)),FALSE)
+    COMPLIST += xdm
+  endif
+endif
+
+ifdef IPERF_SUPPORT
+  ifneq ($(strip $(IPERF_SUPPORT)),NONE)
+     COMPLIST += iperf
+  endif   
+endif
+
+#add for BASIC_TL1D_COSIM project
+ifneq ($(filter __TL1D_PHASE3__, $(COM_DEFS)),)
+    COMPLIST += tl1d
+endif
+
+ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+  ifdef L1_TDD128
+    ifeq ($(strip $(L1_TDD128)),TRUE)
+      COMPLIST += tl1 ll1       # DM (EGPRS + 3G TD) or DM (GPRS + 3G TD)
+    endif
+  endif
+endif
+
+ifeq ($(strip $(IMS_SUPPORT)),TRUE)
+  COMPLIST += imc imcsms
+  COMPLIST += sdm
+  COMPLIST += rtp ltecsr_src ltecsr
+  ifdef MD_TCPIP_SUPPORT
+    ifeq ($(strip $(MD_TCPIP_SUPPORT)),TRUE)
+      ifdef SUBMARINE_SUPPORT
+        ifeq ($(strip $(SUBMARINE_SUPPORT)),TRUE)
+          COMPLIST += wifi_proxy
+          COMPLIST += ims imsm
+          COMPLIST += ipsec
+          COMPLIST += crypto
+          COMPLIST += cert
+          COMPLIST += wtunnel
+          COMPLIST += dispatcher
+          COMPLIST += eap
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(SUBMARINE_SUPPORT)),TRUE)
+  COMPLIST += con10
+  COMPLIST += wlc
+endif
+
+ifdef MD_TCPIP_SUPPORT
+  ifeq ($(strip $(MD_TCPIP_SUPPORT)),TRUE)
+    COMPLIST += rsra
+  endif
+endif
+
+ifeq ($(strip $(WIFIPROXY_SUPPORT)),TRUE)
+  COMPLIST += wifi_proxy
+endif
+
+ifneq ($(filter __N3GPP_OFFLOAD_ENABLE__, $(COM_DEFS)),)
+  COMPLIST += con10
+  COMPLIST += n3cf
+  COMPLIST += n3epc
+  COMPLIST += n3sam
+  COMPLIST += n3sys
+  COMPLIST += eap
+  ifneq ($(strip $(OS_VERSION)),MSWin32)
+    COMPLIST += n3ans
+  endif
+endif
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+    COMPLIST += utt
+  else  # FOR UESIM
+    ifneq ($(strip $(call Upper,$(C2K_MODE_SUPPORT))),NONE)  # FOR C2K
+      COMPLIST += xsim_framework c2k_xsim_platform c2k_xsim_gw c2ksim_hw c2k_vmmi_bridge
+    else
+      ifneq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+        COMPLIST += xsim_framework xsim_gw gbst_bridge esim_evrf_bridge vmmi_bridge
+      else
+        COMPLIST += xsim_framework xsim_gw gbst_bridge vmmi_bridge u4ghlsim_hw esim_hl_evrf_bridge usim_uvrf_hl_bridge nrvrf_bridge whlsim_hw wvrf_bridge
+      endif
+      ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+        COMPLIST += xsim_platform gsim_hw gsim_nw
+        ifneq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+          COMPLIST += usim_hw usim_nw
+        endif
+      endif
+    endif
+  endif
+endif
+
+
+# GEMINI
+ifdef GEMINI
+  ifneq ($(strip $(GEMINI)),FALSE)
+    COMPLIST += rsva
+    COMPLIST += as_semaphore_utility
+  endif
+endif
+
+ifdef IC_TEST_TYPE
+  ifneq ($(strip $(IC_TEST_TYPE)),NONE)
+    ifeq ($(findstring _SLT,$(IC_TEST_TYPE)),_SLT)
+      COMPLIST += slt
+    endif
+  endif
+endif
+
+ifneq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    ifneq ($(filter NONE MODEM_ONLY,$(strip $(SMART_PHONE_CORE))),)
+      COMPLIST += media
+    endif
+  endif
+endif
+
+ifdef TEST_LOAD_TYPE
+  ifeq ($(strip $(TEST_LOAD_TYPE)),NONE)
+    COMPLIST += dp_engine
+  endif
+endif
+
+ifdef ECALL_SUPPORT
+  ifeq ($(strip $(ECALL_SUPPORT)),TRUE)
+    COMPLIST += dp_engine
+  endif
+endif
+
+
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  ifeq ($(strip $(LPP_SUPPORT)),CONTROL_PLANE)
+    COMPLIST += lpp
+  endif
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    #MODEM
+    COMPLIST += tft_pf upcm ratdm ratdm_sec
+    COMPLIST += pam
+    #BSP
+    COMPLIST += el1d_ext
+    ifneq (,$(findstring __EL1_IT__,$(COM_DEFS)))
+    COMPLIST += ll1_pcore
+    endif
+  endif
+  ifneq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+    COMPLIST += el1d_ext
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      COMPLIST += el1d_pub
+      COMPLIST += el1d_fec
+    endif
+  endif
+endif
+
+ifdef AGPS_SUPPORT
+  ifneq ($(strip $(AGPS_SUPPORT)), NONE)
+    COMPLIST += rrlp asn1_common
+    COMPLIST += ulcs
+  endif
+endif
+
+ifdef IPSEC_SUPPORT
+  ifneq ($(strip $(IPSEC_SUPPORT)),FALSE)
+    COMPLIST += ipsec netkey ike
+  endif
+endif
+
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  COMPLIST += drv mc
+endif
+
+ifdef SSS_SUPPORT
+  ifeq ($(strip $(SSS_SUPPORT)),SSS_SOURCE)
+    COMPLIST  += sss
+  endif
+endif
+
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  COMPLIST += cipher
+endif
+
+ifdef SSDVT_TEST
+  ifeq ($(strip $(SSDVT_TEST)),TRUE)
+    COMPLIST += ssdvt
+  endif
+endif
+
+ifeq ($(strip $(FS_RAMDISK)),TRUE)
+  COMPLIST += mtd
+endif
+
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+  COMPLIST += cipher
+endif
+
+ifneq ($(filter __MDVSIM__,$(COM_DEFS)),)
+  COMPLIST += keygen
+endif
+
+ifdef MD_TCPIP_SUPPORT
+  ifeq ($(strip $(MD_TCPIP_SUPPORT)),TRUE)
+    COMPLIST += nucleus_tcpip_v3
+    COMPLIST += nal
+    ifeq ($(strip $(FCS_SUPPORT)),TRUE)
+      COMPLIST += fcs
+    endif
+  endif
+endif
+
+ifeq ($(strip $(MT_FRAMEWORK_ENABLE)),TRUE)
+    COMPLIST += mtf
+endif
+
+ifeq ($(strip $(DMF_SUPPORT)),TRUE)
+    COMPLIST       += dmf
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifdef MCIF_SUPPORT #MD Consys Interface
+    ifeq ($(strip $(MCIF_SUPPORT)), TRUE)
+      #
+      # MCIF common components
+      #
+      COMPLIST         += mcif
+
+      #
+      # Low layer components
+      #
+      COMPLIST         += mcif_drv
+
+      ifdef MCIF_WIFI_SUPPORT #MD Consys Interface - WiFi 
+        ifeq ($(strip $(MCIF_WIFI_SUPPORT)), TRUE)
+          COMPLIST         += wfpm
+          COMPLIST         += wrpm
+          COMPLIST         += ethsvc
+        endif #MCIF_WIFI_SUPPORT = TRUE
+      endif
+    endif #MCIF_SUPPORT = TRUE
+  endif
+endif #MODIS_CONFIG != TRUE
+
+ifeq ($(strip $(LGE_SECURITY)),TRUE)
+  COMPLIST += lgesecurity
+  COM_DEFS += LGE_FW_COMMON
+  COM_DEFS += __CUSTOMER_TC01_DISK__
+else
+  COM_DEFS += __TC01_SIM_LOCK_OFF__
+endif
+
+# *************************************************************************
+# if not BASIC load
+# *************************************************************************
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  COMPLIST += ft ftc media
+  COMPLIST += mml1 mml1_rf mml1_rf_ext mml1_pcore mml1_rf_pcore mml1_rf_ext_pcore
+  COMPLIST += dbinfo
+  COMPLIST += event_info
+  COMPLIST += gl1 l1_ext gl1_pcore l1_ext_pcore
+  COMPLIST += l2_sec_utility
+  COMPLIST += md_sm
+  COMPLIST += custom_l1
+
+  ifeq ($(strip $(WIFI_LTE_DPP_SUPPORT)),TRUE)
+    COMPLIST += gmmgr
+  endif
+
+  ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    COMPLIST += l4
+  endif
+
+  ifeq ($(strip $(HIF_USB_SUPPORT)),TRUE)
+    COMPLIST += drv_hif
+  else
+    ifeq ($(strip $(HIF_SDIO_SUPPORT)),TRUE)
+      COMPLIST += drv_hif
+    endif
+  endif
+  ifneq ($(call Upper,$(strip $(FIVEG_MODE_SUPPORT))),NONE)
+    COMPLIST += nl1_ext
+  endif
+
+endif
+
+# *************************************************************************
+# if L1S or BASIC load
+# *************************************************************************
+ifneq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    COMPLIST += md_drv
+  endif
+  
+  ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  
+    ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+      COMPLIST += dummyps
+    endif
+    ifeq ($(strip $(NVRAM_SUPPORT)),TRUE)
+      COMPLIST  += nvram nvram_sec sbp gmss_public
+    endif
+    ifneq ($(strip $(L1_UMTS)),TRUE)
+      ifeq ($(strip $(L1_GPRS)),TRUE)
+        COMPLIST += md_drv                       # GPRS classb
+      else
+        ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+          COMPLIST += md_drv                     # GSM only
+        endif
+      endif
+    endif
+    
+    ifeq ($(strip $(L1_GPRS)),TRUE)
+      ifeq ($(strip $(L1_WCDMA)),TRUE)
+        COMPLIST += md_drv dummyps dummyups ll1  # DM (EGPRS + 3G) or DM (GPRS + 3G)
+      endif
+      ifeq ($(strip $(L1_WCDMA)),FALSE)
+        COMPLIST += md_drv dummyps               # 2G Only (EGPRS) or 2G Only (GPRS)
+      endif
+    endif
+
+    ifeq ($(strip $(L1_GPRS)),FALSE)
+      ifeq ($(strip $(L1_EGPRS)),FALSE)
+        ifeq ($(strip $(L1_WCDMA)),FALSE)
+          ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+            COMPLIST       += md_drv dummyps     # 2G Only (GSM)
+          endif
+        endif
+      endif
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),1)
+      COMPLIST         +=  l1d_lp1
+    endif
+    ifeq ($(strip $(L1D_LOOPBACK)),2)
+      COMPLIST         +=  l1d_lp2
+    endif
+    ifeq ($(strip $(L1D_LOOPBACK)),3)
+      COMPLIST         +=  l1d_lp3
+    endif
+    ifeq ($(strip $(L1D_LOOPBACK)),5)
+      COMPLIST         +=  l1d_lp5
+    endif
+    ifeq ($(strip $(L1D_LOOPBACK)),6)
+      COMPLIST         +=  l1d_lp6
+    endif
+    ifeq ($(strip $(L1D_LOOPBACK)),7)
+      COMPLIST         +=  l1d_lp7
+    endif
+    ifeq ($(strip $(L1D_LOOPBACK)),8)
+      COMPLIST         +=  l1d_lp8
+    endif
+
+    ifeq ($(strip $(MCF_SUPPORT)),TRUE)
+      COMPLIST += mcf
+    endif
+
+  endif
+
+endif # end of L1S or BASIC load
+
+# *************************************************************************
+# if not L1S or BASIC load
+# *************************************************************************
+ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+
+  COMPLIST += nvram nvram_sec l4misc sim nwsel gmss gmss_sec nas_common_utility
+  COMPLIST += sbp gmss_public
+  COMPLIST += tft_pf upcm
+  COMPLIST += mrs mrs_sec
+  COMPLIST += las
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+    COMPLIST += tlas
+  endif
+  COMPLIST += lbs
+  COMPLIST += l4 tftlib asn1_common smic
+  COMPLIST += l1misc
+  ifeq ($(strip $(TA_SAR_TX_POWER_BACKOFF_SUPPORT)),TRUE)
+    COMPLIST += l1misc_tasar
+  endif
+  COMPLIST += l5 l5_sec
+  ifeq ($(strip $(L5_F001)),TRUE)
+    COMPLIST += l5_f001
+  endif
+  COMPLIST += crypto
+  COMPLIST += ddm
+  COMPLIST += con10
+  COMPLIST += n3epc
+  COMPLIST += n3sys
+  COMPLIST += simmngr
+  COMPLIST += iwlan
+  COMPLIST += ssds
+  COMPLIST += rfc2507
+  COMPLIST += vdm
+  COMPLIST += sase
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    COMPLIST += cc ciss sms 
+    ifneq ($(strip $(CSD_SUPPORT)),NONE)
+      COMPLIST += data
+    endif
+  endif
+  
+  ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+    COMPLIST += sms
+  endif
+
+  ifdef SP_VIDEO_CALL_SUPPORT
+    ifeq ($(strip $(SP_VIDEO_CALL_SUPPORT)),TRUE)
+      COMPLIST += 3g324m_tvt
+    endif
+  endif
+
+  ifdef CMUX_SUPPORT
+    ifeq ($(strip $(CMUX_SUPPORT)),TRUE)
+      COMPLIST += cmux
+    endif
+  endif
+
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    COMPLIST += scsi
+  endif
+
+  ifeq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    # add scci for LTE single-mode
+    COMPLIST += scsi 
+  else
+    COMPLIST += md_drv mm gas_fdd gas_smp ratcm gas_fdd_sec
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COMPLIST += gas_tdd gas_smp_tdd gas_tdd_sec
+    endif    
+  endif
+  
+  ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+    COMPLIST += erac etcm mbmsal
+  endif
+
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+    COMPLIST += ratdm ratdm_sec urr_fdd urr_fdd_sec fsm sndcp sm llc asinterfaces pam llc_sec
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COMPLIST += urr_tdd ul2_tdd
+    endif
+    ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+      COMPLIST += ul2_fdd ul2_secure_fdd
+    endif
+  else
+    ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_EGPRS_MODE)
+      COMPLIST += ratdm ratdm_sec sndcp sm llc pam llc_sec
+    endif
+  endif
+
+  COMPLIST += nas_sv
+  COMPLIST += mcd
+
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    FLC_LIB_INCLUDE_CONDITION = FALSE
+    ifneq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+      FLC_LIB_INCLUDE_CONDITION = TRUE
+    endif
+    ifneq ($(strip $(CSD_SUPPORT)),NONE)
+      FLC_LIB_INCLUDE_CONDITION = TRUE
+    endif
+    ifeq ($(strip $(FLC_LIB_INCLUDE_CONDITION)),TRUE)
+      COMPLIST += flc2_v2 flc2_v2_sec
+    endif
+  endif
+
+  ifeq ($(strip $(MCF_SUPPORT)),TRUE)
+    COMPLIST += mcf
+  endif
+
+  ifneq ($(filter __PERF_SUPPORT__,$(COM_DEFS)),)
+    COMPLIST += perf
+  endif
+
+endif #end of not L1S or BASIC
+
+# *************************************************************************
+# define by filtering
+# *************************************************************************
+ifeq ($(strip $(UL1_SUPPORT)),TRUE)
+  COMPLIST += ll1
+  ifdef L1_WCDMA
+    ifeq ($(strip $(L1_WCDMA)),TRUE)
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        ifneq ($(filter $(strip $(PLATFORM)),$(UL1_HS_PLUS_PLATFORM)),)
+          ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+            ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+              COMPLIST += ul1_modis      # DM (EGPRS + 3G) or DM (GPRS + 3G)
+            endif
+          endif
+          ifeq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+            COMPLIST += ul1b
+          endif
+          COMPLIST += ul1 ul1_fec      # DM (EGPRS + 3G) or DM (GPRS + 3G)
+          ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+          	COMPLIST += ul1_ext      # Remove ul1_ext when Modis build             
+          endif
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+    COMPLIST += mnwi
+endif
+
+ifeq ($(strip $(N5G_ADAPTOR_SUPPORT)),TRUE)
+  COMPLIST += nhlsim_hw 
+endif
+
+ifneq ($(filter __RF_DESENSE_TEST__,$(COM_DEFS)),)
+  COMPLIST += btmt
+endif
+
+ifneq ($(filter __KTEST__,$(COM_DEFS)),)
+  COMPLIST += ktest
+endif
+
+# *************************************************************************
+# C2K Modules
+# *************************************************************************
+# *************************************************************************
+#For BASIC CoSIM Load
+# *************************************************************************
+ifneq ($(filter MTK_C2K_COSIM, $(COM_DEFS)),)
+COMPLIST += cl1
+COMPLIST += cph
+endif
+
+# supply query API for five multi mode query whether C2K is exist
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+COMPLIST += cl1_public
+endif
+
+ifneq ($(filter __CL1_TASK_ENABLE__, $(COM_DEFS)),)
+COMPLIST += rfd
+COMPLIST += rfd_ext
+endif
+
+ifneq ($(strip $(call Upper,$(C2K_MODE_SUPPORT))),NONE)      
+
+# *************************************************************************
+# if not BASIC load
+# *************************************************************************
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+COMPLIST += cph
+COMPLIST += cl1
+COMPLIST += ota ps_custom c2k_sms
+COMPLIST += pe locsrv psw scc
+COMPLIST += lmd
+COMPLIST += l1d
+COMPLIST += lec
+COMPLIST += rcp
+COMPLIST += rmc
+COMPLIST += css
+COMPLIST += clc
+COMPLIST += slc
+COMPLIST += val
+COMPLIST += rlpe
+COMPLIST += rlpw
+COMPLIST += rpc
+COMPLIST += atc
+COMPLIST += fcp
+COMPLIST += hlp
+COMPLIST += cl2_sec
+COMPLIST += sec
+COMPLIST += hsc
+COMPLIST += rfd
+COMPLIST += rfd_ext
+COMPLIST += sys
+COMPLIST += xl1
+COMPLIST += evl1
+COMPLIST += cl1tst
+COMPLIST += uim
+COMPLIST += cust
+ifeq ($(strip $(USE_ENCRYPT_VOICE)),TRUE)
+  COMPLIST += crypt
+endif
+
+#FLC2 should be included in L1S for C2K
+COMPLIST += flc2_v2 flc2_v2_sec
+
+# *************************************************************************
+# define by filtering
+# *************************************************************************
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  # Target Only Modules
+  COMPLIST += tas
+  COMPLIST += ratdm_c2k_sec
+else
+  # MoDIS Modules
+  COMPLIST += c2k_dma_model
+  ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+    # UESIM Only Modules
+    COMPLIST += stub
+  endif
+endif
+
+endif # if not BASIC load
+
+endif #C2K_MODE_SUPPORT
+
+# *************************************************************************
+# if driver test load
+# *************************************************************************
+ifneq ($(strip $(DRIVER_LOAD_MODE)),)
+  COMPLIST := $(filter-out devdrv_sec mtkdebug,$(COMPLIST))
+endif
diff --git a/mcu/make/common/rule_def/dep_def.mak b/mcu/make/common/rule_def/dep_def.mak
new file mode 100644
index 0000000..788660a
--- /dev/null
+++ b/mcu/make/common/rule_def/dep_def.mak
@@ -0,0 +1,1028 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+# *************************************************************************
+# *************************************************************************
+# merge from checkvalue.mak
+# *************************************************************************
+ifdef CSD_SUPPORT
+CSD_SUPPORT_VALUE = NONE T_NT NT_ONLY 
+  ifeq ($(findstring $(strip $(CSD_SUPPORT)) ,$(CSD_SUPPORT_VALUE)),)
+    $(warning ERROR: CSD_SUPPORT value ($(strip $(CSD_SUPPORT))) is not in the valid list: $(strip $(CSD_SUPPORT_VALUE)))
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef CAMCORDER_SUPPORT
+CAMCORDER_SUPPORT_VALUE = NONE FULL SLIM STANDARD CUSTOM 
+  ifeq ($(findstring $(strip $(CAMCORDER_SUPPORT)) ,$(CAMCORDER_SUPPORT_VALUE)),)
+    $(warning ERROR: CAMCORDER_SUPPORT value ($(strip $(CAMCORDER_SUPPORT))) is not in the valid list: $(strip $(CAMCORDER_SUPPORT_VALUE)))
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef WAP_SUPPORT
+  $(warning ERROR: WAP_SUPPORT has been renamed to BROWSER_SUPPORT, please Do Not use the OLD option name anymore!)
+  DEPENDENCY_CONFLICT = TRUE    
+endif
+  
+ifdef TELECA_FEATURE
+  $(warning ERROR: TELECA_FEATURE has been renamed to OBIGO_FEATURE, please Do Not use the OLD option name anymore!)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+ifdef GADGET_SUPPORT
+GADGET_SUPPORT_VALUE = NONE STANDARD SHARED_MEMORY 
+  ifeq ($(findstring $(strip $(GADGET_SUPPORT)),$(GADGET_SUPPORT_VALUE)),)
+    $(warning ERROR: GADGET_SUPPORT value ($(strip $(GADGET_SUPPORT))) is not in the valid list: $(strip $(GADGET_SUPPORT_VALUE)))
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef JOGBALL_SUPPORT
+JOGBALL_SUPPORT_VALUE = NONE JOGBALL OFN
+  ifeq ($(findstring $(strip $(JOGBALL_SUPPORT)),$(JOGBALL_SUPPORT_VALUE)),)
+    $(warning ERROR: JOGBALL_SUPPORT value ($(strip $(JOGBALL_SUPPORT))) is not in the valid list: $(strip $(JOGBALL_SUPPORT_VALUE)))
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+#end of checkvalue merged
+
+ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifeq ($(strip $(L1_GPRS)),FALSE)
+    ifeq ($(strip $(L1_EGPRS)),TRUE)
+      $(error: Not support EDGE wihtout GPRS)
+    endif
+  endif
+
+  ifeq ($(strip $(L1_GPRS)),FALSE)
+    ifeq ($(strip $(L1_WCDMA)),TRUE)
+      $(error: Not support WCDMA wihtout GPRS)
+    endif
+  endif
+endif
+
+ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+  #enable 4G
+  ifeq ($(filter TRUE,$(FDD_LTE_SUPPORT) $(TDD_LTE_SUPPORT)),)
+    $(warning ERROR: One of FDD_LTE_SUPPORT/TDD_LTE_SUPPORT need to be supported at least when EUTRAN_MODE_SUPPORT is supported.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+else
+  #do not enable 4G
+  ifdef FDD_LTE_SUPPORT
+    ifeq ($(strip $(FDD_LTE_SUPPORT)),TRUE)
+      $(warning ERROR: FDD_LTE_SUPPORT only can be supported when EUTRAN_MODE_SUPPORT is not supported.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+  ifdef TDD_LTE_SUPPORT
+    ifeq ($(strip $(TDD_LTE_SUPPORT)),TRUE)
+      $(warning ERROR: TDD_LTE_SUPPORT only can be supported when EUTRAN_MODE_SUPPORT is not supported.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifneq ($(filter __SMART_PAGING_IN_IDLE__,$(COM_DEFS)),)
+  ifeq ($(filter __SMART_PAGING__,$(COM_DEFS)),)
+    $(warning ERROR: __SMART_PAGING_IN_IDLE__ can only be defined when __SMART_PAGING__ is defined.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef GEMINI_L
+  ifneq ($(strip $(GEMINI_L)),FALSE)
+    ifeq ($(call gt,$(strip $(GEMINI_L)),$(strip $(GEMINI))),T)
+      $(warning ERROR: GEMINI_L shall not large than GEMINI, GEMINI_L = $(GEMINI_L), GEMINI = $(GEMINI))
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+    ifeq ($(call gt,$(strip $(GEMINI_L)),$(strip $(GEMINI_W))),T)
+      $(warning ERROR: GEMINI_L shall not large than GEMINI_W, GEMINI_L = $(GEMINI_L), GEMINI_W = $(GEMINI_W))
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifdef GEMINI_W
+  ifneq ($(strip $(GEMINI_W)),FALSE)
+    ifeq ($(call gt,$(strip $(GEMINI_W)),$(strip $(GEMINI))),T)
+      $(warning ERROR: GEMINI_W shall not large than GEMINI, GEMINI_W = $(GEMINI_W), GEMINI = $(GEMINI))
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+# GEMINI
+ifdef GEMINI
+  ifneq ($(strip $(GEMINI)),FALSE)
+    ifneq ($(strip $(GEMINI)),2)
+      ifneq ($(filter __LOWCOST_MERGE_TASK__,$(COM_DEFS)),)
+            $(warning ERROR: __LOWCOST_MERGE_TASK__ cannot be defined when GEMINI_PLUS is larger than 2)
+            DEPENDENCY_CONFLICT = TRUE
+      endif
+    endif
+
+    ifdef UNIFIED_MESSAGE_FOLDER
+      ifeq ($(strip $(UNIFIED_MESSAGE_FOLDER)),TRUE)
+        ifneq ($(strip $(MMS_SUPPORT)), OBIGO_Q03C_MMS_V02)
+          $(call DEP_ERR_ONA_OR_OFFB,MMS_SUPPORT,GEMINI & UNIFIED_MESSAGE)
+          DEPENDENCY_CONFLICT = TRUE
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifndef $(COM_DEFS_FOR_PLATFORM)
+  $(warning ERROR: [COM_DEFS_FOR_$(strip $(PLATFORM))] was not defined)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+ifndef $(COM_DEFS_FOR_RF_MODULE)
+  $(warning ERROR: [COM_DEFS_FOR_$(strip $(RF_MODULE))] was not defined)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+ifdef UMTS_RF_MODULE
+ifneq ($(strip $(UMTS_RF_MODULE)),NONE)
+  ifndef $(COM_DEFS_FOR_RF_MODULE)
+    $(warning ERROR: [COM_DEFS_FOR_$(strip $(UMTS_RF_MODULE))] was not defined)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+endif
+
+ifdef UMTS_TDD128_RF_MODULE
+ifneq ($(strip $(UMTS_TDD128_RF_MODULE)),NONE)
+  ifndef $(COM_DEFS_FOR_RF_MODULE)
+    $(warning ERROR: [COM_DEFS_FOR_$(strip $(UMTS_TDD128_RF_MODULE))] was not defined) 
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+endif
+
+ifdef LTE_RF_MODULE
+ifneq ($(strip $(LTE_RF_MODULE)),NONE)
+  ifndef $(COM_DEFS_FOR_RF_MODULE)
+    $(warning ERROR: [COM_DEFS_FOR_$(strip $(LTE_RF_MODULE))] was not defined) 
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+endif
+
+ifdef C2K_RF_MODULE
+ifneq ($(strip $(C2K_RF_MODULE)),NONE)
+  ifndef $(COM_DEFS_FOR_RF_MODULE)
+    $(warning ERROR: [COM_DEFS_FOR_$(strip $(C2K_RF_MODULE))] was not defined) 
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+endif
+# check AFC_VCXO_TYPE matches RF_MODULE
+ifdef AFC_VCXO_TYPE
+  ifdef RF_MODULE
+    VCXO_PLATFORM = MT6139B MT6139C MT6139E
+    ifneq ($(filter $(strip $(RF_MODULE)),$(VCXO_PLATFORM)),)
+      ifneq ($(strip $(AFC_VCXO_TYPE)),VCXO)
+        ifeq ($(filter MT6268A MT6270A MT6276,$(strip $(PLATFORM))),)
+          $(warning ERROR: MT6139 series RF_MODULE project must set AFC_VCXO_TYPE = VCXO )
+          DEPENDENCY_CONFLICT = TRUE
+        endif
+      endif
+    endif
+    VCTCXO_RF_MODULE_LIST = MT6129D MT6129 MT6119 BRIGHT4 MT6140A SKY74117 SKY74045 BRIGHT5P FOUNTAIN
+    ifneq ($(filter $(strip $(VCTCXO_RF_MODULE_LIST)),$(strip $(RF_MODULE))),)
+      VCTCXO_RF_MODULE = $(filter $(strip $(VCTCXO_RF_MODULE_LIST)),$(strip $(RF_MODULE)))
+      ifneq ($(strip $(AFC_VCXO_TYPE)),VCTCXO)
+        $(warning WARNING $(VCTCXO_RF_MODULE) series RF_MODULE project must set AFC_VCXO_TYPE = VCTCXO )
+      endif
+    endif
+    VCXO_RF_MODULE_LIST = AERO MT6139
+    ifneq ($(filter $(strip $(VCXO_RF_MODULE_LIST)),$(strip $(RF_MODULE))),)
+      VCXO_RF_MODULE = $(filter $(strip $(VCXO_RF_MODULE_LIST)),$(strip $(RF_MODULE)))
+      ifneq ($(strip $(AFC_VCXO_TYPE)),VCXO)
+        $(warning WARNING $(VCXO_RF_MODULE) series RF_MODULE project must set AFC_VCXO_TYPE = VCXO )
+      endif
+    endif
+  endif
+endif
+
+# Due to uas ul2 RRC Specification (InterRATHandoverInfo message) limitation, UE at most supports 4 bands in band I~VII.
+UMTS_SUPPORT_BAND_I_TO_VII_COUNT = $(words $(filter __UMTS_BAND_I__ __UMTS_BAND_II__ __UMTS_BAND_III__ __UMTS_BAND_IV__ __UMTS_BAND_V__ __UMTS_BAND_VI__ __UMTS_BAND_VII__,$(sort $(strip $(UMTS_SUPPORT_BAND)))))
+ifeq ($(call gt,$(strip $(UMTS_SUPPORT_BAND_I_TO_VII_COUNT)),4),T)
+  $(warning ERROR: UE at most supports 4 bands in band I~VII due to RRC Specification limitation (UE supports $(strip $(UMTS_SUPPORT_BAND))))
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+ifdef PMIC  
+  PMIC_MT6339_SUPPORT_PLATFORM = MT6290 $(strip $(SUPPORT_PLATFORM))
+  ifeq ($(strip $(PMIC)),MT6339)
+    ifeq ($(filter $(strip $(PLATFORM)) ,$(PMIC_MT6339_SUPPORT_PLATFORM)),)
+      $(warning ERROR: PLATFORM $(strip $(PLATFORM)) does not support PMIC=$(strip $(PMIC))) 
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+  
+  PMIC_MT6331_MT6332_SUPPORT_PLATFORM = MT6595
+  ifeq ($(strip $(PMIC)),MT6331)
+    ifeq ($(filter $(strip $(PLATFORM)) ,$(PMIC_MT6331_MT6332_SUPPORT_PLATFORM)),)
+      $(warning ERROR: PLATFORM $(strip $(PLATFORM)) does not support PMIC=$(strip $(PMIC)))
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+
+  ifeq ($(strip $(PMIC)),MT6332)
+    ifeq ($(filter $(strip $(PLATFORM)) ,$(PMIC_MT6331_MT6332_SUPPORT_PLATFORM)),)
+      $(warning ERROR: PLATFORM $(strip $(PLATFORM)) does not support PMIC=$(strip $(PMIC)))
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+  
+  ifeq ($(strip $(PMIC)),MT6331_PLUS_MT6332)
+    ifeq ($(filter $(strip $(PLATFORM)) ,$(PMIC_MT6331_MT6332_SUPPORT_PLATFORM)),)
+      $(warning ERROR: PLATFORM $(strip $(PLATFORM)) does not support PMIC=$(strip $(PMIC)))
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+  
+  PMIC_MT6325_SUPPORT_PLATFORM = MT6752 $(strip $(SUPPORT_PLATFORM))
+  ifeq ($(strip $(PMIC)),MT6325)
+    ifeq ($(filter $(strip $(PLATFORM)) ,$(PMIC_MT6325_SUPPORT_PLATFORM)),)
+      $(warning ERROR: PLATFORM $(strip $(PLATFORM)) does not support PMIC=$(strip $(PMIC)))
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+  
+  PMIC_MT6351_SUPPORT_PLATFORM = $(strip $(SUPPORT_PLATFORM))
+  ifeq ($(strip $(PMIC)),MT6351)
+    ifeq ($(filter $(strip $(PLATFORM)) ,$(PMIC_MT6351_SUPPORT_PLATFORM)),)
+      $(warning ERROR: PLATFORM $(strip $(PLATFORM)) does not support PMIC=$(strip $(PMIC)))
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif  
+endif
+
+ifdef NAND_SUPPORT
+  ifdef SYSTEM_DRIVE_ON_NAND
+    ifeq ($(strip $(NAND_SUPPORT)),FALSE)
+      ifeq ($(strip $(SYSTEM_DRIVE_ON_NAND)),TRUE)
+         $(call DEP_ERR_ONA_OR_OFFB,NAND_SUPPORT,SYSTEM_DRIVE_ON_NAND)
+         DEPENDENCY_CONFLICT = TRUE
+      endif
+    endif
+  endif
+endif
+
+ifdef NAND_SUPPORT
+  ifdef SYSTEM_DRIVE_ON_NAND
+    ifeq ($(strip $(SYSTEM_DRIVE_ON_NAND)),TRUE)
+      SYSTEM_DRIVE_ON_NAND_SUPPORT_PLATFORM =  MT6575 MT6577 MT6280
+      ifeq ($(filter $(strip $(PLATFORM)) ,$(SYSTEM_DRIVE_ON_NAND_SUPPORT_PLATFORM)),)
+        $(warning ERROR: PLATFORM $(strip $(PLATFORM)) does not support SYSTEM_DRIVE_ON_NAND.)
+        DEPENDENCY_CONFLICT = TRUE
+      endif
+    endif
+  endif
+endif
+
+ifdef AEC_ENABLE
+  ifneq ($(strip $(AEC_ENABLE)),TRUE)
+    ifdef IC_TEST_TYPE
+      ifneq ($(strip $(IC_TEST_TYPE)),IC_BURNIN_TEST)
+        $(warning ERROR: AEC_ENABLE is a mandatory feature. Please turn on AEC_ENABLE!)
+        DEPENDENCY_CONFLICT = TRUE
+      endif
+    endif
+  endif
+endif
+
+ifdef EDGE_SUPPORT
+  ifeq ($(strip $(EDGE_SUPPORT)),TRUE)
+    EDGE_SUPPORT_PLATFORM = MT6575 MT6577 MT6280 MT6589 MT6290 MT6595 $(strip $(SUPPORT_PLATFORM))
+    ifeq ($(filter $(strip $(PLATFORM)) ,$(EDGE_SUPPORT_PLATFORM)),)
+      $(warning ERROR: PLATFORM $(strip $(PLATFORM)) does not support EGPRS.) 
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  else
+     ifdef L1_EPSK_TX
+       ifeq ($(strip $(L1_EPSK_TX)),TRUE)
+         $(call DEP_ERR_ONA_OR_OFFB,EDGE_SUPPORT,L1_EPSK_TX)
+         DEPENDENCY_CONFLICT = TRUE
+       endif
+     endif
+   endif
+endif
+
+ifeq ($(strip $(TST_LOGACC_SUPPORT)),TRUE)
+  ifneq ($(strip $(TST_SUPPORT)),TRUE)
+    $(call DEP_ERR_ONA_OR_OFFB,TST_SUPPORT,TST_LOGACC_SUPPORT)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(strip $(AMRWB_LINK_SUPPORT)),TRUE)
+  AMRWB_LINK_SUPPORT_PLATFORM = MT6575 MT6577 MT6280 MT6589 MT6290 MT6595 $(strip $(SUPPORT_PLATFORM))
+  ifeq ($(filter $(strip $(PLATFORM)) ,$(AMRWB_LINK_SUPPORT_PLATFORM)),)
+    $(warning ERROR: PLATFORM $(strip $(PLATFORM)) does not support AMRWB_LINK_SUPPORT)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef UMTS_MODE_SUPPORT
+  ifneq ($(strip $(UMTS_MODE_SUPPORT)),NONE)
+    ifeq ($(filter __UMTS_RAT__,$(strip $(COM_DEFS))),)
+      $(warning ERROR: UMTS_MODE_SUPPORT can only be turned on when __UMTS_RAT__ defined)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifeq ($(strip $(USB_MASS_STORAGE_CDROM_SUPPORT)),TRUE)
+  ifeq ($(strip $(USB_MASS_STORAGE_SUPPORT)),FALSE)
+    $(call DEP_ERR_ONA_OR_OFFB,USB_MASS_STORAGE_SUPPORT,USB_MASS_STORAGE_CDROM_SUPPORT )
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef RM_FILE_FORMAT_SUPPORT
+  ifneq ($(strip $(RM_FILE_FORMAT_SUPPORT)),TRUE)
+    ifeq ($(strip $(COOK_DECODE)),TRUE)
+      $(call DEP_ERR_ONA_OR_OFFB,RM_FILE_FORMAT_SUPPORT,COOK_DECODE)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+    ifeq ($(strip $(RM_DECODE)),TRUE)
+      $(call DEP_ERR_ONA_OR_OFFB,RM_FILE_FORMAT_SUPPORT,RM_DECODE)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifneq ($(filter FMT_NOT_PRESENT,$(COM_DEFS)),)
+  ifneq ($(filter fmt,$(COMPLIST)),)
+    $(warning ERROR: Please remove FMT_NOT_PRESENT from COM_DEFS when fmt module is defined in COMPLIST)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(strip $(IC_TEST_TYPE)),IC_BURNIN_TEST)
+  ifneq ($(strip $(KAL_DEBUG_LEVEL)), RELEASE_KAL)
+    $(warning ERROR: Please set KAL_DEBUG_LEVEL=RELEASE_KAL when  IC_TEST_TYPE = IC_BURNIN_TEST ) 
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef CSD_SUPPORT
+  ifneq ($(strip $(CSD_SUPPORT)),NONE)
+    ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+      $(warning ERROR: Please turn off CSD_SUPPORT in $(strip $(TEST_LOAD_TYPE)) project.) 
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+    # Support CSD
+    ifneq ($(strip $(CSD_SUPPORT)),T_NT)
+      ifneq ($(strip $(CSD_SUPPORT)),NT_ONLY)
+        $(warning ERROR: CSD_SUPPORT setting is wrong) 
+        DEPENDENCY_CONFLICT = TRUE
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(filter __KBD_JOYSTICK_SUPPORT__,$(COM_DEFS)),__KBD_JOYSTICK_SUPPORT__)
+   ifeq ($(filter __TWO_KEY_DETECTION_SWITCHABLE__,$(COM_DEFS)),__TWO_KEY_DETECTION_SWITCHABLE__)
+      $(call DEP_ERR_OFFA_OR_OFFB,__TWO_KEY_DETECTION_SWITCHABLE__,__KBD_JOYSTICK_SUPPORT__)
+      DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifndef FS_SORT_MAX_ENTRY
+  FS_SORT_MAX_ENTRY = 256
+endif
+ifdef FS_SORT_MAX_ENTRY
+  FS_SORT_MAX_ENTRY_PLATFORM =  MT6280
+  ifneq ($(filter $(strip $(PLATFORM)),$(FS_SORT_MAX_ENTRY_PLATFORM)),)
+    ifeq ($(call gt,$(strip $(FS_SORT_MAX_ENTRY)),20000),T)
+      $(warning ERROR: FS_SORT_MAX_ENTRY value ($(FS_SORT_MAX_ENTRY)) on $(strip $(PLATFORM)) should not be larger than 20000)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+    ifeq ($(call lt,$(strip $(FS_SORT_MAX_ENTRY)),64),T)
+      $(warning ERROR: FS_SORT_MAX_ENTRY value ($(FS_SORT_MAX_ENTRY)) on $(strip $(PLATFORM)) should not be less than 64)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  else
+    ifeq ($(call gt,$(strip $(FS_SORT_MAX_ENTRY)),256),T)
+      $(warning ERROR: FS_SORT_MAX_ENTRY value ($(FS_SORT_MAX_ENTRY)) on $(strip $(PLATFORM)) should not be larger than 256)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+    ifeq ($(call lt,$(strip $(FS_SORT_MAX_ENTRY)),64),T)
+      $(warning ERROR: FS_SORT_MAX_ENTRY value ($(FS_SORT_MAX_ENTRY)) on $(strip $(PLATFORM)) should not be less than 64)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifdef TST_SUPPORT
+  ifeq ($(strip $(TEST_LOAD_TYPE)),BASIC)
+    ifeq ($(strip $(TST_SUPPORT)),TRUE)
+      $(warning ERROR: TST_SUPPORT should be FALSE in BASIC project)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifdef FS_TRACE_SUPPORT
+  ifdef TST_SUPPORT
+    ifeq ($(strip $(FS_TRACE_SUPPORT)),TRUE)
+      ifneq ($(strip $(DHL_SUPPORT)),TRUE)
+        $(call DEP_ERR_ONA_OR_OFFB,DHL_SUPPORT,FS_TRACE_SUPPORT)
+        DEPENDENCY_CONFLICT = TRUE
+      endif
+    endif
+  endif
+endif
+
+ifneq ($(filter __DISABLE_SMS_CONTROLLED_BY_SIM__,$(strip $(COM_DEFS))),)
+  ifeq ($(filter __SAT__,$(strip $(COM_DEFS))),)
+    $(warning ERROR: Please define __SAT__ or do not define __DISABLE_SMS_CONTROLLED_BY_SIM__)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(strip $(CLIB_TIME_SUPPORT)), TRUE)
+  ifneq ($(strip $(CCCI_DEV_SUPPORT)), TRUE)
+    $(warning ERROR: please turn on CCCI_DEV_SUPPORT and HIF_CCCI_SUPPORT, when CLIB_TIME_SUPPORT is set.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+  ifneq ($(strip $(HIF_CCCI_SUPPORT)), TRUE)
+    $(warning ERROR: please turn on CCCI_DEV_SUPPORT and HIF_CCCI_SUPPORT, when CLIB_TIME_SUPPORT is set.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif	
+endif
+
+ifneq ($(filter __SAIC__,$(COM_DEFS)),)
+  ifneq ($(filter $(strip $(PLATFORM)),$(SAIC_NOT_SUPPORT_FLATFORM)),)
+    $(warning ERROR: __SAIC__ cannot be defined for PLATFORM $(strip $(PLATFORM)).)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifneq ($(filter __REPEATED_ACCH__,$(COM_DEFS)),)
+  ifneq ($(filter $(strip $(PLATFORM)),$(REPEATED_ACCH_NOT_SUPPORT_FLATFORM)),)
+    $(warning ERROR: __REPEATED_ACCH__ cannot be defined for PLATFORM $(strip $(PLATFORM)).)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(strip $(LPP_SUPPORT)),CONTROL_PLANE)
+  ifeq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+    $(warning ERROR: please turn on EUTRAN_MODE_SUPPORT, when LPP_SUPPORT is set.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+ifeq ($(strip $(LPP_SUPPORT)),CONTROL_PLANE)
+  ifeq ($(call Upper,$(strip $(LTE_OTDOA_SUPPORT))),FALSE)
+  ifeq ($(call Upper,$(strip $(LTE_ECID_SUPPORT))),FALSE)
+    $(warning ERROR: please turn on at least one of AGPS_SUPPORT, LTE_OTDOA_SUPPORT, LTE_ECID_SUPPORT, when LPP_SUPPORT is set.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+  endif
+endif
+
+ifeq ($(strip $(LTE_OTDOA_SUPPORT)),TRUE)
+  ifeq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+    $(warning ERROR: please turn on EUTRAN_MODE_SUPPORT and LPP_SUPPORT, when LTE_OTDOA_SUPPORT is set to TRUE.)
+    DEPENDENCY_CONFLICT = TRUE
+  else
+    ifeq ($(strip $(LPP_SUPPORT)),NONE)
+      $(warning ERROR: please turn on EUTRAN_MODE_SUPPORT and LPP_SUPPORT, when LTE_OTDOA_SUPPORT is set to TRUE.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifeq ($(strip $(LTE_ECID_SUPPORT)),TRUE)
+  ifeq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+    $(warning ERROR: please turn on EUTRAN_MODE_SUPPORT and LPP_SUPPORT, when LTE_ECID_SUPPORT is set to TRUE.)
+    DEPENDENCY_CONFLICT = TRUE
+  else
+    ifeq ($(strip $(LPP_SUPPORT)), NONE)
+        $(warning ERROR: please turn on EUTRAN_MODE_SUPPORT and LPP_SUPPORT, when LTE_ECID_SUPPORT is set to TRUE.)
+        DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifndef SMS_PHONE_ENTRY
+  $(warning ERROR: Please define SMS_PHONE_ENTRY in project makefile.)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+ifndef SMS_TOTAL_ENTRY
+  $(warning ERROR: Please define SMS_TOTAL_ENTRY in project makefile.)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+ifdef PRODUCTION_RELEASE
+  ifeq ($(strip $(PRODUCTION_RELEASE)),FALSE)
+      ifneq ($(strip $(DEMO_PROJECT)),TRUE)
+        ifeq ($(findstring REL_CR_OBJ_JAL_SRC,$(strip $(RELEASE_PACKAGE))),)
+          $(call DEP_ERR_ONA_OR_ONB,PRODUCTION_RELEASE,DEMO_PROJECT)
+          DEPENDENCY_CONFLICT = TRUE
+        endif
+      endif
+  else
+    ifeq ($(strip $(DEMO_PROJECT)),TRUE)
+      $(call DEP_ERR_OFFA_OR_OFFB,DEMO_PROJECT,PRODUCTION_RELEASE)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifneq ($(filter __SMS_DEPERSONALIZATION__,$(COM_DEFS)),)
+  ifeq ($(filter __MOD_SMU__,$(COM_DEFS)),)
+    $(call DEP_ERR_ONA_OR_OFFB,__MOD_SMU__,__SMS_DEPERSONALIZATION__)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+  ifeq ($(filter __MOD_SMS__,$(COM_DEFS)),)
+    $(call DEP_ERR_ONA_OR_OFFB,__MOD_SMS__,__SMS_DEPERSONALIZATION__)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef PHB_NAME_LENGTH
+  ifeq ($(call gt,$(strip $(PHB_NAME_LENGTH)),80),T)
+    $(warning ERROR: PHB_NAME_LENGTH value should not be larger than 80)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifneq ($(filter __MONITOR_PAGE_DURING_TRANSFER__,$(COM_DEFS)),)
+  ifeq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+    $(warning ERROR: __MONITOR_PAGE_DURING_TRANSFER__ can only be defined when __PS_SERVICE__ is defined.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(call gt,$(strip $(PHB_SIM_ENTRY)),1000),T)
+  $(warning ERROR: PHB_SIM_ENTRY value ($(PHB_SIM_ENTRY)) of USIM projects should not be larger than 1000)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+ifneq ($(filter __ECC_RETRY_ENHANCEMENT__ ,$(strip $(COM_DEFS))),)
+  ifeq ($(filter __UMTS_RAT__,$(strip $(COM_DEFS))),)
+    $(warning ERROR: __ECC_RETRY_ENHANCEMENT__ can only be turned on when __UMTS_RAT__ defined)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+  ifeq ($(filter __GSM_RAT__,$(strip $(COM_DEFS))),)
+    $(warning ERROR: __ECC_RETRY_ENHANCEMENT__ can only be turned on when __GSM_RAT__ defined)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+# Copro dependency check is valid only for FDD mode and non l1s project
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifeq ($(strip $(TEST_LOAD_TYPE)), NONE)
+    ifeq ($(call gt,$(strip $(GPRS_MAX_PDP_SUPPORT)),8),T)
+      $(warning ERROR: GPRS_MAX_PDP_SUPPORT maximum value is 8 when HSDPA Copro exist due to hardware limitation, please reduce GPRS_MAX_PDP_SUPPORT value)
+      DEPENDENCY_CONFLICT = TRUE 
+    endif
+  endif
+endif
+
+ifeq ($(strip $(TST_DNT_LOGGING)),TRUE)
+  ifneq ($(strip $(TST_SUPPORT)),TRUE)
+    $(call DEP_ERR_ONA_OR_OFFB,TST_SUPPORT,TST_DNT_LOGGING)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(filter MTK_SLEEP_ENABLE,$(strip $(COM_DEFS))),)
+  ifneq ($(strip $(DEMO_PROJECT)),TRUE)
+    $(warning ERROR: MTK_SLEEP_ENABLE must be defined in all customer projects .)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(filter __TC02__,$(strip $(COM_DEFS))),)
+  ifneq ($(filter __TC02_SECURITY_REQUIREMENT__,$(strip $(COM_DEFS))),)
+    $(warning ERROR: __TC02_SECURITY_REQUIREMENT__ can only be turned on for MOTO project)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef SML_SUPPORT
+  ifneq ($(strip $(SML_SUPPORT)),TRUE)
+    ifneq ($(filter __TC02_SECURITY_REQUIREMENT__,$(strip $(COM_DEFS))),)
+      $(warning ERROR: __TC02_SECURITY_REQUIREMENT__ need set SML_SUPPORT = TRUE)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifdef COSMOS_3D_VERSION
+  ifneq ($(strip $(COSMOS_3D_VERSION)),NONE)
+    ifeq ($(filter __VENUS_3D_UI_ENGINE__,$(strip $(COM_DEFS))),)
+      $(call DEP_ERR_SETA_OR_OFFB,VENUS_MMI,VENUS_3D,COSMOS_3D_VERSION)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifneq ($(filter __L4_INIT_MULTIUSB_COM__,$(COM_DEFS)),)
+  ifeq ($(filter __USB_MULTIPLE_COMPORT_SUPPORT__,$(COM_DEFS)),)
+    $(warning ERROR: __L4_INIT_MULTIUSB_COM__ can only be defined when __USB_MULTIPLE_COMPORT_SUPPORT__ is defined.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifneq ($(strip $(SSS_SUPPORT)),SSS_LIB)
+  ifneq ($(strip $(SSS_SUPPORT)),SSS_SOURCE)
+    $(warning ERROR: Please define SSS_SUPPORT as SSS_LIB or SSS_SOURCE)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifneq ($(filter __DYNAMIC_HSPA_PREFERENCE__,$(COM_DEFS)),)
+  ifeq ($(filter __HSPA_PREFERENCE_SETTING__,$(strip $(COM_DEFS))),)
+    $(error ERROR: PLEASE turn off __DYNAMIC_HSPA_PREFERENCE__ when __HSPA_PREFERENCE_SETTING__ is not defined.)
+  endif
+endif
+
+ifeq ($(filter __CPHS__,$(COM_DEFS)),)
+  ifeq ($(filter __REL4__,$(COM_DEFS)),)
+    ifneq ($(filter __SS_CPHS_QUERY_CFU_ALWAYS__,$(strip $(COM_DEFS))),)
+      $(error ERROR: PLEASE turn on __CPHS__ or __REL4__ when __SS_CPHS_QUERY_CFU_ALWAYS__ is on)
+    endif
+  endif
+endif
+
+ifeq ($(strip $(LATENCY_REDUCTION)),TRUE)
+  ifneq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R7_SUPPORT)
+    ifneq ($(strip $(GERAN_RELEASE_SUPPORT)),GERAN_R8_SUPPORT)
+      $(call DEP_ERR_SETA_OR_OFFB,GERAN_RELEASE_SUPPORT,GERAN_R7_SUPPORT,LATENCY_REDUCTION)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifneq ($(filter DUAL_LCD,$(COM_DEFS)),)
+  ifeq ($(strip $(SUB_LCD_SIZE)),NONE)
+    ifneq ($(strip $(PLATFORM)),TK6516)
+        $(warning ERROR: Please set SUB_LCD_SIZE when DUAL LCD (LCD_MODULE=$(strip $(LCD_MODULE))) is used)
+        DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifdef TC01_ERS_LOCATION
+  ifeq ($(strip $(TC01_ERS_LOCATION)),BACKUP)
+    ifneq ($(strip $(SYSDRV_BACKUP_DISK_SUPPORT)),FAT)
+      $(warning ERROR: PLEASE set SYSDRV_BACKUP_DISK_SUPPORT to be FAT or set TC01_ERS_LOCATION to be NVRAM)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifneq ($(filter __ACL_SUPPORT__,$(COM_DEFS)),)
+  ifeq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+    $(warning ERROR:  __ACL_SUPPORT__ cannot be defined if __PS_SERVICE__ not defined)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef MMA_MAX_NUM
+  ifeq ($(filter $(strip $(MMA_MAX_NUM)),$(strip $(MMA_MAX_NUM_VALUE))),)
+    $(warning ERROR: Please set MMA_MAX_NUM to 2-12.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(strip $(DATA_CARD_SPEECH)),TRUE)
+  DATA_CARD_SUPPORT_PLATFORM = MT6280 MT6290 $(strip $(SUPPORT_PLATFORM))
+  ifeq ($(filter $(strip $(PLATFORM)) ,$(DATA_CARD_SUPPORT_PLATFORM)),)
+    $(warning ERROR: PLATFORM $(strip $(PLATFORM)) not support DATA_CARD_SPEECH.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+  ifeq ($(filter __MODEM_CARD__,$(COM_DEFS)),)
+    $(warning ERROR: only __MODEM_CARD__ project support DATA_CARD_SPEECH.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifneq ($(filter __CTP_SHIFT_FOR_HVGA_LCM__,$(strip $(COM_DEFS))),)
+  ifeq ($(filter __MTK_INTERNAL__,$(strip $(COM_DEFS))),)
+    $(warning ERROR: __CTP_SHIFT_FOR_HVGA_LCM__ is only available for VICTOR56V12 MTK internal project)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+#Rachel 20131125 add dependency for __4G_SW_DISABLE__
+ifneq ($(filter __4G_SW_DISABLE__,$(strip $(COM_DEFS))),)
+  ifeq ($(filter __MTK_INTERNAL__,$(strip $(COM_DEFS))),)
+    $(warning ERROR: __4G_SW_DISABLE__ is only available for MTK internal project)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif 
+
+ifeq ($(strip $(EMS_SUPPORT)),EMS_ULC_SLIM)
+    $(warning ERROR: MMI_VERSION must be PLUTO_MMI/COSMOS_MMI,when EMS_SUPPORT is set to EMS_ULC_SLIM)
+    DEPENDENCY_CONFLICT = TRUE
+endif
+
+ifeq ($(strip $(TDD_RF_CUSTOM_TOOL_SUPPORT)),TRUE)
+  ifneq ($(strip $(L1_TDD128)),TRUE)
+    $(warning ERROR: TDD_RF_CUSTOM_TOOL_SUPPORT can NOT be TRUE when L1_TDD128 is not TRUE)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(strip $(NVRAM_BIND_TO_CHIP_CIPHER)),ENABLE)
+  ifeq ($(strip $(IC_TEST_TYPE)),IC_MODULE_TEST)
+    $(warning ERROR: please enable NVRAM_BIND_TO_CHIP_CIPHER only when IC_TEST_TYPE is not set as IC_MODULE_TEST.)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+CHK_UPPER_CASE = $(shell perl ./tools/chkUpperCase.pl "$(PROJECT_MAKEFILE)")
+ifneq ($(strip $(CHK_UPPER_CASE)),)
+  $(warning ERROR: $(strip $(CHK_UPPER_CASE)).)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+##############rule_2
+ifneq ($(filter MT6575,$(PLATFORM)),)
+  ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+    ifeq ($(filter MT6162_RF,$(strip $(COM_DEFS))),)
+      $(warning ERROR: please define MT6162_RF when PLATFORM = MT6575 & UMTS_FDD_SUPPORT = UMTS_FDD_MODE_SUPPORT.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+    ifneq ($(strip $(AFC_VCXO_TYPE)),VCTCXO)
+      $(warning ERROR: please set AFC_VCXO_TYPE as VCTCXO, when PLATFORM = MT6575 & UMTS_FDD_SUPPORT = UMTS_FDD_MODE_SUPPORT.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+##############rule_6
+ifeq ($(strip $(PLATFORM)),MT6575)
+  ifeq ($(strip $(UMTS_MODE_SUPPORT)),NONE)
+    ifneq ($(filter MT6162_RF AD6548_RF MT6140D_RF,$(strip $(COM_DEFS))),)
+      ifneq ($(filter AD6548_RF MT6140D_RF,$(strip $(COM_DEFS))),)
+        ifneq ($(strip $(AFC_VCXO_TYPE)),VCXO)
+          $(warning ERROR: please set AFC_VCXO_TYPE as VCXO, when PLATFORM = MT6575 & UMTS_MODE_SUPPORT = NONE & AD6548_RF/MT6140D_RF is defined.)
+          DEPENDENCY_CONFLICT = TRUE
+        endif
+      else
+        ifneq ($(strip $(AFC_VCXO_TYPE)),VCTCXO)
+          $(warning ERROR: please set AFC_VCXO_TYPE as VCTCXO, when PLATFORM = MT6575 & UMTS_MODE_SUPPORT = NONE & MT6162_RF is defined.)
+          DEPENDENCY_CONFLICT = TRUE
+        endif
+      endif
+    else
+      $(warning ERROR: please define MT6162_RF/AD6548_RF/MT6140D_RF, when PLATFORM = MT6575 & UMTS_MODE_SUPPORT = NONE .)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifeq ($(strip $(TST_MALMO_SUPPORT)),TRUE)
+  ifneq ($(strip $(TST_SUPPORT)),TRUE)
+    $(call DEP_ERR_ONA_OR_OFFB,TST_SUPPORT,TST_MALMO_SUPPORT)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+
+ifdef 32K_XOSC_REMOVE
+  ifeq ($(strip $(32K_XOSC_REMOVE)), TRUE)
+    ifeq ($(filter $(32K_CRYSTAL_REMOVAL_SUPPORT_PLATFORM), $(strip $(PLATFORM))),)
+      DEPENDENCY_CONFLICT = TRUE
+      $(warning ERROR: 32K_XOSC_REMOVE only can be supported in $(32K_CRYSTAL_REMOVAL_SUPPORT_PLATFORM), $(PLATFORM) can not be supported)
+    endif
+  endif
+endif
+ifdef 32K_XOSC_REMOVE
+  ifeq ($(strip $(32K_XOSC_REMOVE)), TRUE)
+    ifeq ($(filter $(QUERY_32K_CRYSTAL_FROM_MD_PLATFORM), $(strip $(PLATFORM))),)
+      ifeq ($(filter $(QUERY_32K_CRYSTAL_FROM_AP_PLATFORM), $(strip $(PLATFORM))),)
+        $(warning ERROR: MUST define query 32K crystal in MD or AP side )
+        DEPENDENCY_CONFLICT = TRUE
+      endif
+    endif
+  endif
+endif
+
+DUAL_TALK_SUPPORT_PLATFORM = MT6589 MT6290 MT6595 $(strip $(SUPPORT_PLATFORM))
+ifdef MDSYS
+  ifneq ($(strip $(MDSYS)),NONE)
+    ifeq ($(filter $(PLATFORM), $(strip $(DUAL_TALK_SUPPORT_PLATFORM))),)
+      DEPENDENCY_CHECK = TRUE
+      $(warning ERROR: MDSYS only can be set on $(DUAL_TALK_SUPPORT_PLATFORM).)
+    endif
+  endif
+endif
+
+COMBO_MEMORY_SUPPORT_PLATFORM = MT6280 MT6290 $(strip $(SUPPORT_PLATFORM))
+ifdef COMBO_MEMORY_SUPPORT
+  ifeq ($(strip $(COMBO_MEMORY_SUPPORT)),TRUE)
+    ifeq ($(filter $(PLATFORM), $(strip $(COMBO_MEMORY_SUPPORT_PLATFORM))),)
+      $(warning ERROR: COMBO_MEMORY_SUPPORT = TRUE just can be supported on $(COMBO_MEMORY_SUPPORT_PLATFORM).)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifdef GEMINI
+ ifeq ($(strip $(GEMINI)),2)
+    ifeq ($(strip $(GEMINI_VERSION)),V1)
+      $(warning ERROR: Please set GEMINI_VERSION other than V1 when GEMINI = 2!)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+DHL_SUPPORT_PLATFORM = MT6290 MT6595 $(strip $(SUPPORT_PLATFORM))
+ifdef DHL_SUPPORT
+ ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+    ifeq ($(filter $(PLATFORM), $(strip $(DHL_SUPPORT_PLATFORM))),)
+      $(warning ERROR: DHL_SUPPORT can NOT be TRUE when PLATFORM = $(strip $(PLATFORM))!)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+endif
+
+ifdef RTOS
+  ifeq ($(strip $(RTOS)),NUCLEUS)
+    ifneq ($(strip $(PLATFORM)),MT6589)
+    ifneq ($(strip $(MDSYS)),MD2)
+      $(warning ERROR: Only allow RTOS = NUCLEUS, when PLATFORM = MT6589 and MDSYS = MD2. Otherwise, RTOS = NUCLEUS_V2.)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(DUAL_SIM_HOT_SWAP_CO_DECK)),TRUE)
+  ifeq ($(strip $(SIM_HOT_SWAP)),NONE)
+    $(warning ERROR: DUAL_SIM_HOT_SWAP_CO_DECK only can be TRUE when SIM_HOT_SWAP != NONE)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifeq ($(strip $(UL1_SUPPORT)),TRUE)
+  ifdef L1_WCDMA
+    ifeq ($(strip $(L1_WCDMA)),TRUE)
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        ifneq ($(strip $(UMTS_FDD_PLATFORM)),TRUE)
+          $(warning ERROR: PLATFORM $(strip $(PLATFORM)) is not vaild UMTS_FDD_MODE_SUPPORT platform.) 
+          DEPENDENCY_CONFLICT = TRUE
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(COMPILER_ISA)),NANOMIPS)
+  ifeq ($(strip $(COMPILER_VER)),MIPS_GCCV4)
+    $(warning ERROR: COMPILER_VER only can be MIPS_GCCV4 when COMPILER_ISA != NANOMIPS)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+ifdef KAL_DEBUG_LEVEL
+  ifeq ($(strip $(KAL_DEBUG_LEVEL)),RICH_DEBUG_KAL)
+    DEP_DEBUG_COMPILE_OPTION =DEBUG_KAL DEBUG_BUF2 DEBUG_BUF3 DEBUG_ITC DEBUG_TIMER DEBUG_TIMER2
+    ENABLED_DEBUG_COMPILE_OPTION = $(sort $(filter $(strip $(DEP_DEBUG_COMPILE_OPTION)),$(COM_DEFS)))
+  endif
+  ifeq ($(strip $(KAL_DEBUG_LEVEL)),NORMAL_DEBUG_KAL)
+    DEP_DEBUG_COMPILE_OPTION =DEBUG_KAL DEBUG_BUF2 DEBUG_ITC DEBUG_TIMER
+    ENABLED_DEBUG_COMPILE_OPTION = $(sort $(filter $(strip $(DEP_DEBUG_COMPILE_OPTION)),$(COM_DEFS)))
+  endif
+  ifeq ($(strip $(KAL_DEBUG_LEVEL)),SLIM_DEBUG_KAL)
+    DEP_DEBUG_COMPILE_OPTION = DEBUG_KAL DEBUG_BUF1
+    ENABLED_DEBUG_COMPILE_OPTION = $(sort $(filter $(strip $(DEP_DEBUG_COMPILE_OPTION)),$(COM_DEFS)))
+  endif
+  # dependency rule for KAL,BUFFER & ITC debug compile options
+  ifneq ($(strip $(ENABLED_DEBUG_COMPILE_OPTION)),)
+    ifneq ($(strip $(ENABLED_DEBUG_COMPILE_OPTION)),$(sort $(strip $(DEP_DEBUG_COMPILE_OPTION))))
+      DISABLED_DEBUG_COMPILE_OPTION = $(filter-out $(strip $(ENABLED_DEBUG_COMPILE_OPTION)),$(strip $(DEP_DEBUG_COMPILE_OPTION)))
+      $(warning ERROR: PLEASE turn on $(DISABLED_DEBUG_COMPILE_OPTION) or turn off $(ENABLED_DEBUG_COMPILE_OPTION))
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  endif
+  # end
+  ifeq ($(strip $(KAL_DEBUG_LEVEL)),RELEASE_KAL)
+    DEP_DEBUG_COMPILE_OPTION =
+    ENABLED_DEBUG_COMPILE_OPTION = $(sort $(filter $(strip $(DEP_DEBUG_COMPILE_OPTION)),$(COM_DEFS)))
+  endif
+endif
+
+# *************************************************************************
+# check no_dsp and update_dsp
+# *************************************************************************
+ifeq ($(strip $(UPDATE_DSP)),TRUE)
+  ifeq ($(strip $(NO_DSP)),TRUE) 
+    $(warning ERROR: NO_DSP can only be FALSE when update_dsp is enabled, please check!)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+  ifneq ($(filter BASIC L1S,$(TEST_LOAD_TYPE)),)
+    $(warning ERROR: update_dsp flow cannot be enabled for the project of BASIC or L1S, please check!)
+    DEPENDENCY_CONFLICT = TRUE
+  endif
+endif
+
+# *************************************************************************
+# check custom folder exist or not
+# *************************************************************************
+ifndef MM_DEVICE
+  $(warning ERROR: Please define MM_DEVICE in project makefile.)
+  DEPENDENCY_CONFLICT = TRUE
+endif
+
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+define CheckCusFolder
+  ifneq ($(1),RF_MODULE)
+    ifeq ($$(wildcard $$(call CUSTOM_FLD_MAPPING,$$(strip $(2)))),)
+      $$(warning ERROR: $$(strip $(2))/$(BOARD_VER) or $(2)/_Default_BB does not exist, please help to check!)
+      DEPENDENCY_CONFLICT = TRUE
+    endif
+  else
+    ifneq ($$(strip ${3}),NONE)    
+      ifeq ($$(wildcard $$(strip $(2))),)
+        $$(warning ERROR: $$(strip $(2)) does not exist, please help to check!)
+        DEPENDENCY_CONFLICT = TRUE
+      endif
+    endif
+  endif
+endef
+
+CUS_FLD_SYS = ./custom/system
+CUS_FLD_DRV_GEN = ./custom/driver/drv_gen
+CUS_FLD_PS = ./custom/modem/ps
+CUS_FLD_AUDIO = ./custom/driver/audio
+CUS_FLD_MISC_DRV = ./custom/driver/drv/misc_drv
+CUS_FLD_META = ./custom/middleware/meta
+CUS_FLD_RF = custom/l1/gl1_rf/$(strip $(RF_MODULE))
+CUS_FLD_MM_RF = custom/l1/mml1_rf/$(strip $(MM_RF_MODULE))
+CUS_FLD_LTE_RF = custom/l1/el1_rf/$(strip $(LTE_RF_MODULE))
+
+$(eval $(call CheckCusFolder,OTHERS,$(strip ${CUS_FLD_SYS})))
+$(eval $(call CheckCusFolder,OTHERS,$(strip ${CUS_FLD_DRV_GEN})))
+$(eval $(call CheckCusFolder,OTHERS,$(strip ${CUS_FLD_PS})))
+$(eval $(call CheckCusFolder,OTHERS,$(strip ${CUS_FLD_AUDIO})))
+$(eval $(call CheckCusFolder,OTHERS,$(strip ${CUS_FLD_MISC_DRV})))
+ifneq ($(strip $(MTK_SW_DOMAIN)),TRUE)
+$(eval $(call CheckCusFolder,OTHERS,$(strip ${CUS_FLD_META})))
+endif
+$(eval $(call CheckCusFolder,RF_MODULE,$(strip ${CUS_FLD_RF}),$(strip $(RF_MODULE))))
+$(eval $(call CheckCusFolder,RF_MODULE,$(strip ${CUS_FLD_MM_RF}),$(strip $(MM_RF_MODULE))))
+$(eval $(call CheckCusFolder,RF_MODULE,$(strip ${CUS_FLD_LTE_RF}),$(strip $(LTE_RF_MODULE))))
+
+
+define CheckRfCusFolder
+  ifneq ($$(strip ${1}),NONE)
+    ifneq ($$(strip ${3}),NONE)
+      ifeq ($$(wildcard $$(strip $(2))),)
+        $$(warning ERROR: $$(strip $(2)) does not exist, please help to check!)
+        DEPENDENCY_CONFLICT = TRUE
+      endif
+    endif
+  endif
+endef
+
+CUS_FLD_UMTS_RF = custom/l1/ul1_rf/$(strip $(UMTS_RF_MODULE))
+CUS_FLD_UMTS_TDD128_RF = custom/l1/tl1_rf/$(strip $(UMTS_TDD128_RF_MODULE))
+CUS_FLD_C2K_RF = custom/l1/cl1_rf/$(strip $(C2K_RF_MODULE))
+$(eval $(call CheckRfCusFolder,$(strip ${UMTS_FDD_SUPPORT}),$(strip ${CUS_FLD_UMTS_RF}),$(strip $(UMTS_RF_MODULE))))
+$(eval $(call CheckRfCusFolder,$(strip ${UMTS_TDD_SUPPORT}),$(strip ${CUS_FLD_UMTS_TDD128_RF}),$(strip $(UMTS_TDD128_RF_MODULE))))
+$(eval $(call CheckRfCusFolder,$(strip ${C2K_MODE_SUPPORT}),$(strip ${CUS_FLD_C2K_RF}),$(strip $(C2K_RF_MODULE))))
+endif
diff --git a/mcu/make/common/rule_def/hif_main.mak b/mcu/make/common/rule_def/hif_main.mak
new file mode 100644
index 0000000..5f30edd
--- /dev/null
+++ b/mcu/make/common/rule_def/hif_main.mak
@@ -0,0 +1,659 @@
+#

+# HIF service interface exported to other catagories (e.g. modem)

+#

+COMMINCDIRS += ./interface/service/hif

+COMMINCDIRS += ./interface/service/hif

+

+#

+# HIF service . components

+#

+COMPLIST         += hmu

+COM_DEFS         += __HMU_ENABLE__

+

+ifneq ($(ORIGINAL_FLAVOR),BASIC_HIF)

+  COMPLIST         += hmu_sec

+endif

+

+#

+# HIF middleware interface exported to other catagories (e.g. modem)

+#

+COMMINCDIRS += interface/middleware/hif

+

+#

+# HIF middleware . compnents

+#

+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)

+  ifneq ($(ORIGINAL_FLAVOR),BASIC_HIF)

+    COMPLIST         += nmu

+    COM_DEFS         += __NMU_ENABLE__

+    COMP_TRACE_DEFS_MODEM += middleware/hif/nmu/core/inc/nmu_trace_mod_nmu_utmd.json 

+    COMP_TRACE_DEFS_MODEM += middleware/hif/nmu/dhcp4c/include/dhcp4c_trace_mod_dhcp4c_utmd.json 

+    COMP_TRACE_DEFS_MODEM += middleware/hif/nmu/ndpc/include/ndpc_trace_mod_ndpc_utmd.json 

+  endif

+endif

+

+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)

+  ifneq ($(ORIGINAL_FLAVOR),BASIC_HIF)

+    COMPLIST         += ipcore

+    COMPLIST         += tmc

+    COMPLIST         += ipc_fragment

+    COMPLIST         += dpfm

+    COMPLIST         += vnif

+    COM_DEFS         += __IPCORE_SUPPORT__

+    COM_DEFS         += __TMC_SUPPORT__

+    COM_DEFS         += __IPC_FRAG_SUPPORT__

+    COM_DEFS         += __DPFM_SUPPORT__

+    COM_DEFS         += __VNIF_SUPPORT__

+

+    COMP_TRACE_DEFS_MODEM += middleware/hif/ipcore/include/ipc_trace_mod_ipcore_utmd.json 

+    COMP_TRACE_DEFS_MODEM += middleware/hif/tmc/include/tmc_trace_mod_tmc_utmd.json 

+    COMP_TRACE_DEFS_MODEM += middleware/hif/dpfm/include/dpfm_trace_mod_dpfm_utmd.json

+    COMP_TRACE_DEFS_MODEM += middleware/hif/vnif/include/vnif_trace_mod_vnif_utmd.json

+    ifneq ($(strip $(MTK_MODEM_ARCH)),MT6293)

+        COMPLIST         += ipfcore

+        COMP_TRACE_DEFS_MODEM  += middleware/hif/ipfcore/core/include/ipfc_core_trace_mod_ipfcore_utmd.json 

+        COMMON_UTMD_FILES += middleware/hif/ipfcore/core/include/ipfcore_data_path_trace_utmd.json

+        COM_DEFS         += __IPFCORE_SUPPORT__

+    endif

+  endif

+endif

+

+ifeq ($(strip $(MCIF_WIFI_SUPPORT)),TRUE)

+    COMPLIST         += mdfpm

+    COM_DEFS         += __MDFPM_SUPPORT__

+    COMP_TRACE_DEFS_MODEM += service/mdfpm/include/mdfpm_trace_mod_mdfpm_utmd.json

+endif

+

+

+#

+# HIF data path trace log

+#

+COMMON_UTMD_FILES += driver/hif_drv/src/hif_drv_data_path_trace_utmd.json

+COMMON_UTMD_FILES += middleware/hif/interface/hif_mw_data_path_ipcore_trace_utmd.json

+

+#COM_DEFS	+= __TTY_UT__

+#COM_DEFS	+= __EXCEPT_TTY_UT__

+

+#

+# HIF dependent makefile

+#

+ifneq ($(strip $(MODIS_CONFIG)),TRUE)

+ifdef HIF_USB_SUPPORT

+ifeq ($(strip $(HIF_USB_SUPPORT)), TRUE)

+  #

+  # USB . compiler option

+  #

+  COM_DEFS         += __HIF_USB_SUPPORT__

+  COM_DEFS         += __USE_USB_CTRL_MD__

+

+  ifdef USB_PORT_CUSTOMIZATION

+    ifeq ($(strip $(USB_PORT_CUSTOMIZATION)), TRUE)

+         COM_DEFS += __USB_PORT_CUSTOMIZATION__

+    endif

+  endif

+  

+  ifdef HIF_USB_ENUM_PORT_FOR_AP

+    ifeq ($(strip $(HIF_USB_ENUM_PORT_FOR_AP)), TRUE)

+         COM_DEFS         += __HIF_USB_ENUM_PORT_FOR_AP__

+    endif

+  endif

+  #

+  # USB service . components

+  #

+    COMPLIST        += ubm

+    COM_DEFS        += __UBM_ENABLE__

+    ifdef UBM_UT

+        ifeq ($(strip $(UBM_UT)), TRUE)

+            COM_DEFS += __UBM_UT__

+        endif

+    endif

+

+  #

+  # USB . components

+  #

+    COMPLIST         += usbcore

+    COMPLIST         += usbidle

+    COM_DEFS         += __USBCORE_SUPPORT__

+    COMP_TRACE_DEFS_MODEM += middleware/hif/usbcore/include/usbcore_trace_mod_usbcore_utmd.json 

+

+    ifdef MDDP_USB_SUPPORT

+      ifeq ($(strip $(MDDP_USB_SUPPORT)), TRUE)

+          COMPLIST         += ufpm

+          COM_DEFS         += __MTK_MD_DIRECT_USB_SUPPORT__

+          COM_DEFS         += __MTK_MD_DIRECT_TETHERING_SUPPORT__

+          COM_DEFS         += __MDDP_USB_SUPPORT__

+          COMP_TRACE_DEFS_MODEM += middleware/hif/ufpm/include/ufpm_trace_mod_ufpm_utmd.json

+      endif

+    endif

+    

+    ifdef MTK_MD_DIRECT_LOGGING_SUPPORT

+      ifeq ($(strip $(MTK_MD_DIRECT_LOGGING_SUPPORT)), TRUE)

+          COMPLIST         += ufpm

+          COM_DEFS         += __MTK_MD_DIRECT_USB_SUPPORT__

+          COM_DEFS         += __MTK_MD_DIRECT_LOGGING_SUPPORT__

+          COMP_TRACE_DEFS_MODEM += middleware/hif/ufpm/include/ufpm_trace_mod_ufpm_utmd.json 

+      endif

+    endif

+  

+    COMPLIST         += usbclass

+    COM_DEFS         += __USBCLASS_SUPPORT__

+    COMP_TRACE_DEFS_MODEM += middleware/hif/usbclass/task/include/ucd_trace_mod_usbclass_utmd.json 

+

+    ifneq ($(strip $(MTK_MODEM_ARCH)),MT6293)

+        COM_DEFS  += __USB_HEADER_GENERATOR_SUPPORT__

+    endif

+

+  #

+  # USB Class specific makefile macro and compiler option

+  #

+  ifdef USB_ACM_SUPPORT

+    ifeq ($(strip $(USB_ACM_SUPPORT)), TRUE)

+         COM_DEFS += __USB_ACM_SUPPORT__

+		 COM_DEFS += __USB_ADB_SUPPORT__

+         COMP_TRACE_DEFS_MODEM += middleware/hif/usbclass/acm/include/cdcacm_trace_mod_acm_utmd.json 

+    endif

+  endif

+  

+  ifdef USB_RNDIS_SUPPORT

+    ifeq ($(strip $(USB_RNDIS_SUPPORT)), TRUE) 

+       COM_DEFS += __USB_RNDIS_SUPPORT__

+       COMP_TRACE_DEFS_MODEM += middleware/hif/usbclass/rndis/include/rndis_trace_mod_rndis_utmd.json 

+  

+       # RNDIS needs to attach with ETHERCORE

+       ETHERCORE_SUPPORT = TRUE

+    endif

+  endif

+

+  ifdef USB_ETHERCORE_VIRTUAL_INTERFACE_SUPPORT

+    ifeq ($(strip $(USB_ETHERCORE_VIRTUAL_INTERFACE_SUPPORT)), TRUE) 

+       COM_DEFS += __USB_ETHERCORE_VIRTUAL_INTERFACE_SUPPORT__

+    endif

+  endif

+  

+  ifdef USB_ECM_SUPPORT

+    ifeq ($(strip $(USB_ECM_SUPPORT)), TRUE) 

+       COM_DEFS += __USB_ECM_SUPPORT__

+       COMP_TRACE_DEFS_MODEM += middleware/hif/usbclass/ecm/include/cdcecm_trace_mod_ecm_utmd.json 

+

+       # ECM needs to attach with ETHERCORE

+       ETHERCORE_SUPPORT = TRUE

+    endif

+  endif

+ 

+  ifdef USB_MBIM_SUPPORT

+    ifeq ($(strip $(USB_MBIM_SUPPORT)), TRUE) 

+         COM_DEFS += __USB_MBIM_SUPPORT__

+         COMP_TRACE_DEFS_MODEM += middleware/hif/usbclass/mbim/include/mbim_trace_mod_mbim_utmd.json 

+    endif

+  endif

+

+  ifdef USB_MSD_SUPPORT

+    ifeq ($(strip $(USB_MSD_SUPPORT)), TRUE) 

+         COM_DEFS += __USB_MSD_SUPPORT__

+		 COM_DEFS += __USBMSD_TASK_DISABLE__

+         #COMP_TRACE_DEFS_MODEM += middleware/hif/usbclass/msd/include/ms_trace_mod_usbmsd_utmd.json 

+    endif

+  endif

+endif

+endif

+endif

+

+ifdef HIF_CLDMA_SUPPORT

+  ifeq ($(strip $(HIF_CLDMA_SUPPORT)), TRUE)

+    #

+    # CLDMA . compiler option

+    #

+    COM_DEFS         += __HIF_CLDMA_SUPPORT__

+    COM_DEFS        += __APOLLO_CLDMA_SUPPORT__

+    COM_DEFS        += __CLDMA1_SUPPORT__

+

+    ifeq ($(strip $(MTK_MODEM_ARCH)), MT6293)

+        #don't build CLDMA Core

+    else ifeq ($(strip $(MTK_MODEM_ARCH)), MT6295)

+        #don't build CLDMA Core

+    else

+        #

+        # CLDMACORE common compiler option

+        #

+        HIF_CLDMACORE_SUPPORT = TRUE

+        COM_DEFS         += __HIF_CLDMACORE_SUPPORT__

+        COMP_TRACE_DEFS_MODEM += driver/cldmacore/include/cldmacore_trace_mod_cldmacore_utmd.json 

+        COMP_TRACE_DEFS_MODEM += driver/cl_hif/hif_cldmadev/inc/hifcldma_trace_mod_hifcldma_utmd.json 	

+

+        #

+        # CLDMA common components

+        #

+        COMPLIST         += cldmacore

+        COMPLIST         += cldmadev    

+        COM_DEFS         += __CLDMACORE_SUPPORT__

+        #COM_DEFS         += __CLDMAIPC_SUPPORT__

+        #

+        # CLDMA . Include Path

+        #

+        INC_DIR += interface/driver/regbase \

+                   driver/hif/inc/hif_cldmadev

+        

+        COMMINCDIRS += interface/driver/cldmacore

+    endif

+  endif

+endif

+

+ifdef HIF_DPMAIF_SUPPORT

+  ifeq ($(strip $(HIF_DPMAIF_SUPPORT)), TRUE)

+    #

+    # DPMAIF . compiler option

+    #

+    COM_DEFS += __HIF_DPMAIF_SUPPORT__

+  endif

+  ifdef HIF_DPMAIF_DP_MD_SUPPORT

+    ifeq ($(strip $(HIF_DPMAIF_DP_MD_SUPPORT)), TRUE)

+      ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)

+        ifneq ($(ORIGINAL_FLAVOR),BASIC_HIF)

+          COM_DEFS += __HIF_DPMAIF_DP_SUPPORT__

+          COMPLIST += dpmaifdrv_dp

+        endif

+      endif

+    endif

+  endif

+endif

+

+ifdef HIF_CCISM_SUPPORT

+  ifeq ($(strip $(HIF_CCISM_SUPPORT)), TRUE)

+    #

+    # CCISM . compiler option

+    #

+    COM_DEFS         += __HIF_CCISM_SUPPORT__

+

+    #

+    # CCISM . components

+    #

+    COMPLIST         += ccismcore

+    COM_DEFS         += __CCISMCORE_SUPPORT__

+

+    #

+    # CCISM IT

+    #

+    #COM_DEFS         += __CCISMCORE_IT__

+    #COM_DEFS         += __CCISMCORE_IT_BUFF__

+    #COM_DEFS         += __CCISMCORE_IT_TTY__

+

+    COMP_TRACE_DEFS_MODEM += driver/ccismcore/include/ccismcore_trace_mod_ccismcore_utmd.json 

+

+    #

+    # CCISM interface exported to other catagories (e.g. service/CCCI)

+    #

+    COMMINCDIRS += interface/driver/ccismcore

+  endif

+endif

+

+ifdef HIF_CCISM_SCP_SUPPORT

+  ifeq ($(strip $(HIF_CCISM_SCP_SUPPORT)), TRUE)

+    #

+    # CCISM . compiler option

+    #

+    COM_DEFS         += __HIF_CCISM_SCP_SUPPORT__

+

+    #

+    # CCISM . components

+    #

+    COMPLIST         += scpccismcore

+

+    COMP_TRACE_DEFS_MODEM += driver/ccismcore_scp/include/ccismcore_scp_trace_mod_scpccism_utmd.json 

+

+    #

+    # CCISM interface exported to other catagories (e.g. service/CCCI)

+    #

+    COMMINCDIRS += interface/driver/ccismcore_scp

+  endif

+endif

+

+ifdef HIF_WCCIF_SUPPORT

+  ifeq ($(strip $(HIF_WCCIF_SUPPORT)), TRUE)

+    #

+    # CCIF . compiler option

+    #

+    COM_DEFS         += __HIF_WCCIF_SUPPORT__

+    COMPLIST += wccifdev

+    #

+    # CCIF . components

+    #

+    #COMPLIST         += wccifcore

+    ifeq ($(strip $(HIF_CLDMA_SUPPORT)), FALSE)

+      COM_DEFS         += __CCIFCORE_SUPPORT__  __CCIFRX_HISR_DISABLE__

+      COMPLIST += ccifcore

+    endif

+    #

+    # CCIF . Include Path

+    #

+    INC_DIR = interface/driver/regbase \

+          driver/hif/inc/hif_ccif

+

+    #COMMINCDIRS += interface/driver/wccifcore

+  endif

+endif

+

+ifdef HIF_MHCCIF_SUPPORT

+  ifeq ($(strip $(HIF_MHCCIF_SUPPORT)), TRUE)

+    COM_DEFS         += __HIF_MHCCIF_SUPPORT__

+    COMPLIST += mhccifdev

+

+    INC_DIR = interface/driver/regbase \

+	    driver/hif/inc/hif_mhccifdev 

+

+  endif

+endif

+

+ifdef HIF_PCIE_SUPPORT

+  ifeq ($(strip $(HIF_PCIE_SUPPORT)), TRUE)

+    COM_DEFS += __HIF_PCIE_SUPPORT__

+    COMPLIST += pciedev

+

+    INC_DIR = interface/driver/regbase \

+              driver/hif/inc/hif_pciedev

+

+  endif

+endif

+ifdef HIF_PCCIF_ARM7_SUPPORT

+  ifeq ($(strip $(HIF_PCCIF_ARM7_SUPPORT)), TRUE)

+    #

+    # PCCIF . compiler option

+    #

+    COM_DEFS         += __HIF_PCCIF_ARM7_SUPPORT__

+    COMPLIST += pccifdev

+    #

+    # PCCIF . components

+    #

+    #COMPLIST         += wccifcore

+    #ifeq ($(strip $(HIF_CLDMA_SUPPORT)), FALSE)

+    #  COM_DEFS         += __CCIFCORE_SUPPORT__  __CCIFRX_HISR_DISABLE__

+    #  COMPLIST += ccifcore

+    #endif

+    #

+    # PCCIF . Include Path

+    #

+    INC_DIR = interface/driver/regbase \

+          driver/hif/inc/hif_pccif

+    #COMMINCDIRS += interface/driver/wccifcore

+  endif

+endif

+

+ifneq ($(strip $(MODIS_CONFIG)),TRUE)

+  ifdef HIF_PCCIF4_SUPPORT 

+    ifeq ($(strip $(HIF_PCCIF4_SUPPORT)), TRUE)

+      COM_DEFS      += __HIF_PCCIF4_SUPPORT__

+      COMPLIST += pccif4dev

+    endif

+  endif # HIF_PCCIF4_SUPPORT

+

+  ifdef HIF_PCCIF5_SUPPORT 

+    ifeq ($(strip $(HIF_PCCIF5_SUPPORT)), TRUE)

+      COM_DEFS      += __HIF_PCCIF5_SUPPORT__

+      COMPLIST += pccif5dev

+    endif

+  endif # HIF_PCCIF5_SUPPORT

+endif

+

+ifdef HIF_SECPCCIF_SUPPORT

+  ifeq ($(strip $(HIF_SECPCCIF_SUPPORT)), TRUE)

+    #

+    # PCCIF . compiler option

+    #

+    COM_DEFS         += __HIF_SECPCCIF_SUPPORT__

+    COMPLIST += secpccifdev

+    #

+    # PCCIF . components

+    #

+    #COMPLIST         += wccifcore

+    #ifeq ($(strip $(HIF_CLDMA_SUPPORT)), FALSE)

+    #  COM_DEFS         += __CCIFCORE_SUPPORT__  __CCIFRX_HISR_DISABLE__

+    #  COMPLIST += ccifcore

+    #endif

+    #

+    # PCCIF . Include Path

+    #

+    #INC_DIR = interface/driver/regbase \

+    # driver/hif/inc/hif_pccif

+  endif

+endif

+

+ifdef HIF_UART_SUPPORT

+  ifeq ($(strip $(HIF_UART_SUPPORT)), TRUE)

+    #

+    # UART . compiler option

+    #

+    COM_DEFS += __HIF_UART_SUPPORT__

+

+    #

+    # UART . components

+    #

+    COMPLIST += uartcore

+    COM_DEFS += __UARTCORE_SUPPORT__

+  endif

+endif

+

+#

+# HIF optional components

+#

+ifdef ETHERCORE_SUPPORT

+  ifeq ($(strip $(ETHERCORE_SUPPORT)), TRUE)

+    COMPLIST         += ethercore

+    COM_DEFS += __ETHERCORE_SUPPORT__

+

+    COMP_TRACE_DEFS_MODEM += 

+    COMMON_UTMD_FILES += middleware/hif/interface/ethercore_data_path_trace_utmd.json

+  endif

+endif

+

+ifdef LTM_SIMULATION_SUPPORT

+  ifeq ($(strip $(LTM_SIMULATION_SUPPORT)), TRUE)

+       COMPLIST         += ltm_sim

+       COM_DEFS         += __LTM_SIMULATION_SUPPORT__

+  endif

+endif

+

+ifdef HIF_LHIF_SUPPORT

+  ifeq ($(strip $(HIF_LHIF_SUPPORT)), TRUE)

+    LHIF_ENABLE := TRUE

+  endif

+endif

+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)

+    LHIF_ENABLE := TRUE

+endif

+ifeq ($(strip $(HIF_USB_SUPPORT)), TRUE)

+    LHIF_ENABLE := TRUE

+endif

+

+ifeq ($(strip $(LHIF_ENABLE)), TRUE)

+    #

+    # LHIF . compiler option

+    #

+    COM_DEFS         += __HIF_LHIF_SUPPORT__

+    

+    #

+    # LHIF . components

+    #

+    COMPLIST         += lhifcore

+    COM_DEFS         += __LHIFCORE_SUPPORT__ 

+    COMP_TRACE_DEFS_MODEM += driver/lhifcore/include/lhifcore_trace_mod_lhifcore_utmd.json 

+    COMMINCDIRS += interface/driver/lhifcore

+    COMMINCDIRS += interface/driver/hif/hif_lhifdev

+endif

+

+

+ifdef HIF_SDIO_SUPPORT

+  ifeq ($(strip $(HIF_SDIO_SUPPORT)), TRUE)

+    #

+    # SDIO . compiler option

+    #

+    COM_DEFS         += __HIF_SDIO_SUPPORT__

+    

+    #

+    # SDIO . components

+    #

+    COMPLIST         += sdiocore

+    COM_DEFS         += __SDIOCORE_SUPPORT__

+    

+    COMP_TRACE_DEFS_MODEM += driver/sdiocore/include/sdiocore_trace_mod_sdiocore_utmd.json 

+

+	#

+	# SDIO interface exported to other catagories (e.g. ./service/CCCI)

+	#

+    COMMINCDIRS += interface/driver/sdiocore

+  endif

+endif

+

+ifdef HIF_CCCI_SUPPORT

+  ifeq ($(strip $(HIF_CCCI_SUPPORT)), TRUE)

+    #

+    # For support multi-product - compile option

+    # SMART_PHONE_CORE == ANDROID_MODEM --> SOC

+    # SMART_PHONE_CORE != ANDROID_MODEM --> Thin Modem

+    #

+    ifeq ($(strip $(SMART_PHONE_CORE)), ANDROID_MODEM)

+      COM_DEFS         += __CCCI_PRODUCT_TYPE_SOC__

+    else

+      COM_DEFS         += __CCCI_PRODUCT_TYPE_THIN_MODEM__

+      ifeq ($(strip $(HIF_CLDMACORE_SUPPORT)), TRUE)

+        COM_DEFS         += __CCCI_PRODUCT_TYPE_PCIE_THIN_MODEM__

+      else

+        # COM_DEFS         += __CCCI_PRODUCT_TYPE_USB_THIN_MODEM__ //no need USB option

+      endif

+    endif

+

+    #

+    # CCCI . compiler option

+    #

+    COM_DEFS         += __HIF_CCCI_SUPPORT__

+    COM_DEFS         += __HIF_NCCCI_SUPPORT__

+    #

+    # CCCI . components

+    #

+    COMPLIST         += nccci

+    COM_DEFS         += __CCCI_SUPPORT__

+

+    #

+    # For CCCI MT6575 loopback test

+    #

+    #COM_DEFS         += __CCCI_LB_IT__  #conflict with __CCCI_FS_IT__

+

+    COMP_TRACE_DEFS_MODEM += service/hif/nccci/include/ccci_trace_mod_ccci_utmd.json 

+    

+  endif

+

+  ifdef CCCI_DEV_SUPPORT

+    ifeq ($(strip $(CCCI_DEV_SUPPORT)), TRUE)

+      COMPLIST         += ncccidev ncccisrv

+      COM_DEFS         += __CCCIDEV_SUPPORT__ __CCCITTY_SUPPORT__ __CCCIIPC_SUPPORT__ __CCCIRPC_SUPPORT__

+

+      #

+      # For CCCI_FS/EMCS IT 

+      #

+      #COM_DEFS         += __CCCI_FS_IT__  #conflict with __CCCI_LB_IT__

+

+      #

+      # For CCCI_TTY IT 

+      #

+      #COM_DEFS         += __CCCI_TTY_IT__  #conflict with __CCCI_LB_IT__

+

+      #

+      # For CCCI IT MODE CONTROL

+      #

+      #COM_DEFS		 += __CCCI_IT_CTRL__ CCCI_IT_MODE_CONTROL_CCCI_IPC CCCI_IT_MODE_CONTROL_CCCI_RPC

+

+      COMP_TRACE_DEFS_MODEM += middleware/hif/ncccidev/cccidev_task/include/cccidev_trace_mod_cccidev_utmd.json 

+      COMP_TRACE_DEFS_MODEM += middleware/hif/ncccidev/ccci_tty/include/cccitty_trace_mod_cccitty_utmd.json 

+      ifdef CCCI_CCMNI_SUPPORT

+        ifeq ($(strip $(CCCI_CCMNI_SUPPORT)), TRUE)

+          COM_DEFS += __NCCMNI_SUPPORT__

+          COMP_TRACE_DEFS_MODEM += middleware/hif/ncccidev/ccci_nccmni/include/nccmni_trace_mod_nccmni_utmd.json 

+        endif

+      endif

+      COMP_TRACE_DEFS_MODEM += service/hif/ncccisrv/ccci_ipc/include/ccci_ipc_trace_mod_ccciipc_utmd.json 

+      COMP_TRACE_DEFS_MODEM += service/hif/ncccisrv/ccci_rpc/include/ccci_rpc_trace_mod_cccirpc_utmd.json 

+      COMP_TRACE_DEFS_MODEM += service/hif/ncccisrv/cccisrv_task/include/cccisrv_trace_mod_cccisrv_utmd.json 

+      COMP_TRACE_DEFS_MODEM += service/hif/ncccisrv/ccci_sys_msg/include/ccci_sys_msg_trace_mod_cccimsg_utmd.json 

+      #RPC IPC shall add here like ccci_fs

+

+      ifdef CCCI_FS_SUPPORT

+        ifeq ($(strip $(CCCI_FS_SUPPORT)), TRUE)

+          COMP_TRACE_DEFS_MODEM += service/hif/ncccisrv/ccci_fs/include/ccci_fs_trace_mod_cccifs_utmd.json 

+        endif

+      endif

+    endif

+  endif

+endif

+

+

+#

+# HIF Latency Trace

+#

+COMPLIST         += hlt

+COM_DEFS         += __HLT_SUPPORT__

+COMP_TRACE_DEFS_MODEM += 

+ 

+ifeq ($(strip $(call Upper,$(UE_SIMULATOR))),TRUE)

+    #

+    # CSCD . compiler option

+    #

+    COM_DEFS         += __HIF_CSCDCORE_SUPPORT__

+

+    #

+    # cscd . components

+    #

+    COMPLIST         += cscdcore

+

+    #

+    # cscd IT

+    #

+    #COM_DEFS         += __CSCDCORE_IT__  #should open with __CSCDCORE_IT2__

+    #COM_DEFS         += __CSCDCORE_IT2__ #should open with __CSCDCORE_IT__

+

+    COMP_TRACE_DEFS_MODEM += driver/cscdcore/include/cscdcore_trace_mod_cscdcore_utmd.json 

+

+    #

+    # CSCD interface exported to other catagories (e.g. service/CCCI)

+    #

+    COMMINCDIRS += interface/driver/cscdcore

+endif

+

+ifeq ($(strip $(call Upper,$(UE_SIMULATOR))),TRUE)

+    #

+    # CSCD . compiler option

+    #

+    COM_DEFS         += __HIF_CSCD_SUPPORT__

+

+    #

+    # cscd . components

+    #

+    COMPLIST         += cscdev

+

+    #COMP_TRACE_DEFS_MODEM += driver/cscdcore/include/cscdcore_trace_mod_cscdcore_utmd.json 

+

+    #

+    # CSCD interface exported to other catagories (e.g. service/CCCI)

+    #

+    COMMINCDIRS += interface/driver/hif/hif_cscdev

+endif

+

+ifneq ($(strip $(MODIS_CONFIG)),TRUE)

+    ifdef MDDP_WH_SUPPORT

+      ifeq ($(strip $(MDDP_WH_SUPPORT)), TRUE)

+          COM_DEFS         += __MDDP_WH_SUPPORT__

+          COM_DEFS         += __TEMP_MDDP_WH_SUPPORT__

+      endif

+    endif

+endif

+

+ifneq ($(strip $(MODIS_CONFIG)),TRUE)

+  ifdef MCIF_SUPPORT

+    ifeq ($(strip $(MCIF_SUPPORT)), TRUE)

+      COMMON_UTMD_FILES += driver/mcif_drv/common/inc/mcifdrv_trace_utmd.json 

+      ifdef MCIF_WIFI_SUPPORT

+          ifeq ($(strip $(MCIF_WIFI_SUPPORT)), TRUE)

+            COMMON_UTMD_FILES += service/mcif/wsvc/inc/wsvc_trace_l2_utmd.json

+            COMMON_UTMD_FILES += service/ethsvc/inc/ethsvc_data_path_trace_utmd.json

+          endif

+      endif

+    endif

+  endif

+endif

diff --git a/mcu/make/common/rule_def/mpd_sp_def.mak b/mcu/make/common/rule_def/mpd_sp_def.mak
new file mode 100644
index 0000000..12c4eb5
--- /dev/null
+++ b/mcu/make/common/rule_def/mpd_sp_def.mak
@@ -0,0 +1,568 @@
+#------------------------------
+#Initial parameter
+#------------------------------
+COMP_TRACE_DEFS_MODEM_4G :=
+L1_UTMD_FILES_4G :=
+FOURG_COMP :=
+FIVEG_COMP :=
+#------------------------------
+# 4G Components
+#------------------------------
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    FOURG_COMP      += prbm
+    L1_UTMD_FILES_4G += service/prbm/src/prbm_trace_utmd.json
+  endif
+
+  ifeq ($(strip $(LTE_DUMMY_PROTOCOL_ENABLE)),TRUE)
+    FOURG_COMP += l1edps  
+  endif
+
+  ifneq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      ifneq ($(strip $(LTE_EL1S_COSIM)),TRUE)
+        FOURG_COMP += el1
+        ifneq ($(filter __LTE_PHY_TEST__,$(COM_DEFS)),)
+          FOURG_COMP += tstm
+        else
+          FOURG_COMP += tstm_meta
+        endif
+      endif     
+      FOURG_COMP += el1d edsphwram el1d_tpc el1d_agc
+    else
+      FOURG_COMP += el1
+      ifneq ($(wildcard l1/el1/el1c),)
+        ifeq ($(strip $(LTE_DUMMY_PROTOCOL_ENABLE)),TRUE)
+          COMMINCDIRS += l1/el1/el1c/comm/l1edps/include/internal \
+                         interface/protocol/lte
+        endif
+      endif
+    endif
+  endif
+
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+      FOURG_COMP += rohc_v2
+    else
+      FOURG_COMP += rohc
+    endif
+  endif
+ 
+  ifneq ($(strip $(LTE_DUMMY_PROTOCOL_ENABLE)),TRUE)
+    FOURG_COMP      += emm emm_sec esm eval errc errc_sec etc 
+  endif
+
+  ifeq ($(strip $(FPGA_L1_ROUTER_SUPPORT)),TRUE)
+    FOURG_COMP      += el1b u4ghlsim_l1_sec
+  endif
+
+  ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+    COMP_TRACE_DEFS_MODEM_NR_SEC += protocol/enl2/pdcp/epdcp/src/epdcp_trc_mod_enpdcp_utmd.json  \
+                                    protocol/enl2/pdcp/common/src/enpdcp_trc_mod_enpdcp_utmd.json  \
+                                    protocol/enl2/common/enl2_free/src/enl2_free_trc_mod_enl2_free_utmd.json 
+
+    COMP_TRACE_DEFS_MODEM_4G += protocol/enl2/trace/el2/el2_trc_mod_el2portal_utmd.json 
+
+    L1_UTMD_FILES_4G += protocol/enl2/trace/el2/emac_trace_public_1_utmd.json
+    L1_UTMD_FILES_4G += protocol/enl2/trace/el2/emac_trace_public_2_utmd.json
+    L1_UTMD_FILES_4G += protocol/enl2/trace/el2/emac_trace_internal_1_utmd.json
+    L1_UTMD_FILES_4G += protocol/enl2/trace/el2/emac_trace_internal_2_utmd.json
+    L1_UTMD_FILES_4G += protocol/enl2/trace/el2/emac_trace_protect_internal_utmd.json
+    L1_UTMD_FILES_4G += protocol/enl2/trace/el2/emac_trace_protect_public_utmd.json
+  endif
+
+  COMP_TRACE_DEFS_MODEM_LTE_SEC += protocol/el2/rohc/interface/rohc_trc_mod_rohc_utmd.json 
+
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+      L1_UTMD_FILES_4G += protocol/enl2/trace/enl2_rb_idx_api_trace_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/enpdcp_trace_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/enpdcp_trace_internal_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/enpdcp_trace_public_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/enpdcp_trace_protect_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/enpdcp_trace_pcl_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcdl_trace_protect_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcul_trace_protect_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcdl_trace_internal_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcul_trace_internal_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcdl_trace_designinfo_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcul_trace_designinfo_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcdl_trace_public_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcul_trace_public_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcdl_trace_pcl_public_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcul_trace_pcl_public_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcdl_trace_pcl_internal_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcul_trace_pcl_internal_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcdl_trace_pcl_protect_utmd.json
+      L1_UTMD_FILES_4G += protocol/enl2/trace/el2/erlcul_trace_pcl_protect_utmd.json
+    endif
+  endif
+
+  ifeq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+    FOURG_COMP      += el1b u4ghlsim_hw_sec u4ghlsim_l1_sec
+  else
+    ifeq ($(strip $(UE_SIMULATOR)), TRUE)
+      ifeq ($(strip $(C2K_MODE_SUPPORT)), NONE)
+        FOURG_COMP   += esim_phy
+      endif
+    endif
+  endif
+
+  ifeq ($(__ESL_COSIM_LTE__),TRUE)
+    ifeq ($(MPD_SOURCE_FULL_BUILD),TRUE)
+      COMMINCDIRS += interface/driver/l2copro
+    endif
+  endif
+
+  ifeq ($(strip $(MPD_SOURCE_4G_BUILD)),TRUE)
+    COMMINCDIRS += protocol/lte_sec
+    COMMINCDIRS += protocol/interface/lte_sec
+
+
+    # L1 TRACE FILES
+    ifneq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+       ifneq ($(strip $(LTE_DUMMY_PROTOCOL_ENABLE)),TRUE)
+          #ifneq ($(wildcard protocol/nrrc),)
+            L1_UTMD_FILES_4G += protocol/lte_sec/errc/common/include/errc_lisr_trc_utmd.json
+          #else
+          #  COMMON_UTMD_FILES  += CuStOm_StArT_ERRC protocol/lte_sec/errc/common/include/errc_lisr_trc_utmd.json CuStOm_EnD_ERRC
+          #endif
+       endif
+       ifeq ($(strip $(FPGA_L1_ROUTER_SUPPORT)),TRUE)
+           COMP_TRACE_DEFS_MODEM_LTE_SEC += protocol/lte_sec/smt/u4gHlAdaptor/el1b/intf/el1b_trc_mod_el1b_utmd.json
+           COMP_TRACE_DEFS_MODEM_NR_SEC += protocol/smt/uesim_lte/nl1b/intf/nl1b_trc_mod_nl1_utmd.json
+       endif
+    else
+      COMP_TRACE_DEFS_MODEM_LTE_SEC += protocol/lte_sec/smt/u4gHlAdaptor/el1b/intf/el1b_trc_mod_el1b_utmd.json
+      COMP_TRACE_DEFS_MODEM_NR_SEC += protocol/smt/uesim_lte/nl1b/intf/nl1b_trc_mod_nl1_utmd.json
+    endif
+
+    # MT6290 FPGA setting
+    ifeq ($(strip $(MT6290_FIRST_CALL)),TRUE)
+      ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+        COM_DEFS       += __MT6290_FIRST_CALL__
+      endif
+    endif
+    ifeq ($(strip $(MT6290_FPGA)),TRUE)
+      COM_DEFS       += __MT6290_FPGA__
+    endif
+
+    # EVAL trace
+    COMMINCDIRS += protocol/lte_sec/enas/eval/include
+    COMP_TRACE_DEFS_MODEM_4G += protocol/lte_sec/enas/eval/include/eval_trc_mod_eval_utmd.json 
+
+    COMPLIST         += $(FOURG_COMP)
+  else
+      COMPOBJS += $(call sort,$(foreach lib,$(FOURG_COMP),$(CUS_MTK_LIB)/$(lib).a))
+  endif#ifeq ($(MPD_SOURCE_4G_BUILD),TRUE)
+endif
+
+# L2 TRACE FILES (re-use L1_UTMD_FILES_LTE_SEC)
+
+
+ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_dl_trace_internal_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_dl_trace_public_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_dl_trace_normal_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_dl_trace_protect_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_main_trace_internal_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_main_trace_public_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_main_trace_normal_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_main_trace_protect_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_mux_trace_internal_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_mux_trace_public_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_mux_trace_normal_utmd.json
+  L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nmac_mux_trace_protect_utmd.json
+
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcdl_trace_designinfo_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcdl_trace_internal_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcdl_trace_public_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcdl_trace_protect_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcdl_trace_pcl_internal_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcdl_trace_pcl_public_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcul_trace_designinfo_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcul_trace_internal_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcul_trace_public_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcul_trace_protect_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcul_trace_pcl_internal_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nrlcul_trace_pcl_public_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nl2txrlc_trace_designinfo_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nl2txrlc_trace_internal_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nl2txrlc_trace_public_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/nl2txrlc_trace_protect_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/npdcp_trace_internal_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/npdcp_trace_protect_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/npdcp_trace_public_utmd.json
+    L1_UTMD_FILES_LTE_SEC += protocol/enl2/trace/nl2/npdcp_trace_pcl_utmd.json
+  endif
+endif
+
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  include make/common/rule_def/hif_main.mak
+else
+  ifeq ($(ORIGINAL_FLAVOR),BASIC_HIF)
+    include make/common/rule_def/hif_main.mak
+  else
+    COMMINCDIRS += interface/middleware/hif
+    COMMINCDIRS += interface/service/hif
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+  ifdef FIVEG_MODE_SUPPORT
+  ifeq ($(strip $(FIVEG_MODE_SUPPORT)), FIVEG_MODE)
+    COMP_TRACE_DEFS_MODEM_NR_SEC += l1/nl1/public/md97/ps_trc/nl1_ctrl_trc_mod_nl1_utmd.json  \
+                                    l1/nl1/public/md97/ps_trc/nl1_csm_trc_mod_nl1_csm_utmd.json  \
+                                    l1/nl1/public/md97/ps_trc/nl1_mob_trc_mod_nl1_mob_utmd.json  \
+                                    l1/nl1/public/md97/ps_trc/nl1_icd_trc_mod_nl1_icd_utmd.json 
+  endif
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+  ifdef FIVEG_MODE_SUPPORT
+  ifeq ($(strip $(FIVEG_MODE_SUPPORT)), FIVEG_MODE)
+    COMP_TRACE_DEFS_MODEM_NR_SEC += l1/nl1/public/md97/ps_trc/nl1_ctrl_trc_mod_nl1_utmd.json  \
+                                    l1/nl1/public/md97/ps_trc/nl1_csm_trc_mod_nl1_csm_utmd.json  \
+                                    l1/nl1/public/md97/ps_trc/nl1_mob_trc_mod_nl1_mob_utmd.json  \
+                                    l1/nl1/public/md97/ps_trc/nl1_icd_trc_mod_nl1_icd_utmd.json 
+  endif
+  endif
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+        L1_UTMD_FILES_LTE_SEC +=  l1/nl1/public/md97/trc/nl1_trace_mpc_cm_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_mpc_cmpbch_utmd.json \
+							  l1/nl1/public/md97/trc/nl1_trace_mpc_cs_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_mpc_ps_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_mpc_csr_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_fwk_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_tc_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_rfcc_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_tst_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_tx_0_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_rx_0_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_rx_1_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_nbi_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_rx_public_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_tx_public_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_tpc_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_txdfe_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_sched_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_sched_2_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_sched_3_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_bm_0_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_lpwr_dvfs_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_lpwr_sm_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_lpwr_comm_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_rxagc_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_rxdfe_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_tx_1_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_rfd_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_sched_public_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_hrt_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_et_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_etdpd_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_bwp_chg_utmd.json \
+                              l1/nl1/public/md97/trc/nl1_trace_cap_utmd.json
+    ifneq ($(filter __NR_PHY_TEST__,$(COM_DEFS)),)
+         L1_UTMD_FILES_LTE_SEC +=  l1/nl1/public/md97/trc/nl1_trace_phytest_utmd.json
+    endif
+  endif
+  ifneq ($(filter __NL1_COSIM_EMULATION__, $(strip $(COM_DEFS))),)
+        L1_UTMD_FILES_LTE_SEC += l1/nl1/public/md97/trc/nl1_trace_cosim_utmd.json
+  endif
+endif
+
+ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+  L1_UTMD_FILES_LTE_SEC += l1/nl1/public/md97/trc/nl1_trace_ctrl_utmd.json
+endif
+
+COM_DEFS += $(foreach mod,$(call Upper,$(FOURG_COMP)), __$(mod)_ENABLE__)
+# ETC CODEGEN PATH
+ifneq (,$(findstring __ETC_ENABLE__,$(COM_DEFS)))
+  COMMINCDIRS += protocol/lte_sec/enas/etc/include
+  COMP_TRACE_DEFS_MODEM_4G += protocol/lte_sec/enas/etc/include/etc_trc_mod_etc_utmd.json 
+endif
+
+# ERRC CODEGEN PATH
+# external structure
+ifneq ($(filter __ERRC_ENABLE__ __L1EDPS_ENABLE__,$(COM_DEFS)),)
+  COMMINCDIRS += protocol/lte_sec/enas/emm/interface \
+                      protocol/lte_sec/enas/emm/common/include
+  # internal structure
+  COMMINCDIRS += protocol/lte_sec/errc/cel/include \
+                 protocol/lte_sec/errc/conn/include \
+                 protocol/lte_sec/errc/chm/include \
+                 protocol/lte_sec/errc/sys/include \
+                 protocol/lte_sec/errc/rcm/include \
+                 protocol/lte_sec/errc/mob/include \
+                 protocol/lte_sec/errc/spv/include \
+                 protocol/lte_sec/errc/evth/include \
+                 protocol/lte_sec/errc/lcel/include \
+                 protocol/lte_sec/errc/lsys/include
+
+  # trace file path
+  COMP_TRACE_DEFS_MODEM_4G += protocol/lte_sec/errc/evth/include/errc_evth_trc_mod_errc_evth_utmd.json  \
+                                   protocol/lte_sec/errc/conn/include/errc_conn_trc_mod_errc_conn_utmd.json  \
+                                   protocol/lte_sec/errc/chm/include/errc_chm_trc_mod_errc_chm_utmd.json  \
+                                   protocol/lte_sec/errc/sys/include/errc_sys_trc_mod_errc_sys_utmd.json  \
+                                   protocol/lte_sec/errc/rcm/include/errc_rcm_trc_mod_errc_rcm_utmd.json  \
+                                   protocol/lte_sec/errc/mob/include/errc_mob_trc_mod_errc_mob_utmd.json  \
+                                   protocol/lte_sec/errc/cel/include/errc_cel_trc_mod_errc_cel_utmd.json  \
+                                   protocol/lte_sec/errc/spv/include/errc_spv_trc_mod_errc_spv_utmd.json  \
+                                   protocol/lte_sec/errc/common/include/errc_trc_mod_errc_utmd.json  \
+                                   protocol/lte_sec/errc/lcel/include/errc_lcel_trc_mod_errc_lcel_utmd.json  \
+                                   protocol/as_multimode/mrs/include/mrs_trc_mod_mrs_utmd.json \
+                                   protocol/lte_sec/errc/lsys/include/errc_lsys_trc_mod_errc_lsys_utmd.json 
+endif
+
+# ESM CODEGEN PATH
+ifneq (,$(findstring __ESM_ENABLE__,$(COM_DEFS)))
+  COMMINCDIRS += protocol/lte_sec/enas/esm
+
+  COMP_TRACE_DEFS_MODEM_4G += protocol/lte_sec/enas/esm/esm_dhl_trace_mod_esm_utmd.json 
+  COMP_TRACE_DEFS_MODEM += protocol/nas_multimode/pam/pam_trc_mod_pam_utmd.json 
+endif
+
+ifneq (,$(findstring __EMM_ENABLE__,$(COM_DEFS)))
+  # EMM CODEGEN PATH
+  COMMINCDIRS += protocol/lte_sec/enas/emm/interface \
+                 protocol/lte_sec/enas/emm/common/include \
+                 protocol/lte_sec/enas/emm/evtctrl/include \
+                 protocol/lte_sec/enas/emm/plmnsel/include \
+                 protocol/lte_sec/enas/emm/sv/include \
+                 protocol/lte_sec/enas/emm/ratband/include \
+                 protocol/lte_sec/enas/emm/call/include \
+                 protocol/lte_sec/enas/emm/conn/include \
+                 protocol/lte_sec/enas/emm/nasmsg/include \
+                 protocol/lte_sec/enas/emm/opidsrv/include \
+                 protocol/lte_sec/enas/emm/sec/include \
+                 protocol/lte_sec/enas/emm/reg/include \
+                 protocol/lte_sec/enas/emm/nmsrv/include \
+                 protocol/lte_sec/enas/emm/usimsrv/include \
+                 protocol/lte_sec/enas/emm/nvmsrv/include \
+                 protocol/lte_sec/enas/emm/cmnproc/include \
+                 protocol/lte_sec/enas/emm/errcif/include \
+                 protocol/lte_sec/enas/emm/etcif/include \
+                 protocol/lte_sec/enas/emm/ratchg/include \
+                 protocol/lte_sec/enas/emm/evalif/include \
+                 protocol/lte_sec/enas/emm/mspmif/include \
+                 protocol/lte_sec/enas/emm/esmif/include \
+                 protocol/lte_sec/enas/emm/timermng/include\
+                 protocol/lte_sec/enas/emm/statesrv/include
+
+  COMP_TRACE_DEFS_MODEM_4G += protocol/lte_sec/enas/emm/evtctrl/include/emm_evtctrl_trc_mod_emm_evtctrl_utmd.json  \
+                                   protocol/lte_sec/enas/emm/plmnsel/include/emm_plmnsel_trc_mod_emm_plmnsel_utmd.json  \
+                                   protocol/lte_sec/enas/emm/conn/include/emm_conn_trc_mod_emm_conn_utmd.json  \
+                                   protocol/lte_sec/enas/emm/nasmsg/include/emm_nasmsg_trc_mod_emm_nasmsg_utmd.json  \
+                                   protocol/lte_sec/enas/emm/opidsrv/include/emm_opidsrv_trc_mod_emm_opidsrv_utmd.json  \
+                                   protocol/lte_sec/enas/emm/sec/include/emm_sec_trc_mod_emm_sec_utmd.json  \
+                                   protocol/lte_sec/enas/emm/call/include/emm_call_trc_mod_emm_call_utmd.json  \
+                                   protocol/lte_sec/enas/emm/common/include/emm_dhl_trace_mod_emm_utmd.json  \
+                                   protocol/lte_sec/enas/emm/reg/include/emm_reg_trc_mod_emm_reg_utmd.json  \
+                                   protocol/lte_sec/enas/emm/nmsrv/include/emm_nmsrv_trc_mod_emm_nmsrv_utmd.json  \
+                                   protocol/lte_sec/enas/emm/usimsrv/include/emm_usimsrv_trc_mod_emm_usimsrv_utmd.json  \
+                                   protocol/lte_sec/enas/emm/nvmsrv/include/emm_nvmsrv_trc_mod_emm_nvmsrv_utmd.json  \
+                                   protocol/lte_sec/enas/emm/cmnproc/include/emm_cmnproc_trc_mod_emm_cmnproc_utmd.json  \
+                                   protocol/lte_sec/enas/emm/errcif/include/emm_errcif_trc_mod_emm_errcif_utmd.json  \
+                                   protocol/lte_sec/enas/emm/sv/include/emm_sv_trc_mod_emm_sv_utmd.json  \
+                                   protocol/lte_sec/enas/emm/etcif/include/emm_etcif_trc_mod_emm_etcif_utmd.json  \
+                                   protocol/lte_sec/enas/emm/ratband/include/emm_ratband_trc_mod_emm_ratband_utmd.json  \
+                                   protocol/lte_sec/enas/emm/ratchg/include/emm_ratchg_trc_mod_emm_ratchg_utmd.json  \
+                                   protocol/lte_sec/enas/emm/evalif/include/emm_evalif_trc_mod_emm_evalif_utmd.json  \
+                                   protocol/lte_sec/enas/emm/mspmif/include/emm_mspmif_trc_mod_emm_mspmif_utmd.json  \
+                                   protocol/lte_sec/enas/emm/esmif/include/emm_esmif_trc_mod_emm_esmif_utmd.json  \
+                                   protocol/lte_sec/enas/emm/mmif/include/emm_mmif_trc_mod_emm_mmif_utmd.json  \
+                                   protocol/lte_sec/enas/emm/timermng/include/emm_timermng_trc_mod_emm_timermng_utmd.json 
+endif
+
+#------------------------------
+# 5G Components
+#------------------------------
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(HIF_LHIF_SUPPORT)), TRUE)
+    FIVEG_COMP      += lhifdev   
+  endif
+  ifeq ($(strip $(HIF_USB_SUPPORT)), TRUE)
+    FIVEG_COMP      += lhifdev
+  endif
+  ifeq ($(strip $(HIF_DPMAIF_SUPPORT)), TRUE)
+    # CLDMA . components
+    FIVEG_COMP      += dpmaifdev
+  endif
+endif
+  
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  FIVEG_COMP      += lhifdev  
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+      FIVEG_COMP += el2_v2
+      FIVEG_COMP += el2_protect_v2
+    else
+      FIVEG_COMP += el2
+      FIVEG_COMP += el2_sec
+    endif 
+  else
+    ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+      FIVEG_COMP += el2_emac_v2
+      FIVEG_COMP += el2_emac_protect_v2
+    else
+      FIVEG_COMP += el2_emac
+      FIVEG_COMP += el2_emac_sec
+    endif
+  endif
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    FIVEG_COMP += dpcopro
+    L1_UTMD_FILES_LTE_SEC += driver/dpcopro/src/dpc_trace_utmd.json
+  endif
+endif
+
+ifneq ($(call Upper,$(strip $(FIVEG_MODE_SUPPORT))),NONE)  
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    FIVEG_COMP += vgmm vgsm nl2 nl2_protect nrrc nrrc_protect upds mrs_nr_sec vgmm_protect
+  else
+    FIVEG_COMP += nmac_protect
+  endif
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    FIVEG_COMP += nl1_pub
+    FIVEG_COMP += nl1
+  else
+    FIVEG_COMP += nl1_modis
+  endif
+  ifeq ($(strip $(FPGA_L1_ROUTER_SUPPORT)),TRUE)
+    FIVEG_COMP += nl1b nhlsim_l1 u4ghlsim_l1 xl1r
+  endif
+endif
+
+ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+  # for 97 4G project
+    ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+      FIVEG_COMP += enl2_common
+    else
+      # for 97 5G only project
+      ifneq ($(call Upper,$(strip $(FIVEG_MODE_SUPPORT))),NONE)
+        FIVEG_COMP += enl2_common
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(N5G_ADAPTOR_SUPPORT)),TRUE)
+  FIVEG_COMP += nl1b
+endif
+
+ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+  ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+    #
+    # IDC common components
+    #
+    ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+      FIVEG_COMP    += md_idc
+    else ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+      FIVEG_COMP    += md_idc
+	endif
+  endif
+endif
+
+ifeq ($(strip $(N5G_ADAPTOR_SUPPORT)),TRUE)
+  FIVEG_COMP += nhlsim_l1 
+endif
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(UE_SIMULATOR)),TRUE)
+    ifeq ($(strip $(call Upper,$(C2K_MODE_SUPPORT))),NONE)  # FOR C2K
+      ifeq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+        FIVEG_COMP += u4ghlsim_l1
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(MAIF_SUPPORT)),TRUE)
+  FIVEG_COMP += maif
+  COMP_TRACE_DEFS_MODEM_NR_SEC += service/maif/include/maif_trace_def_mod_maif_utmd.json
+endif
+
+#------------------------------
+# 5G Compile Option
+#------------------------------
+ifneq ($(call Upper,$(strip $(FIVEG_MODE_SUPPORT))),NONE)
+# set COMPLIST and COMMINCDIRS here
+  COMP_TRACE_DEFS_MODEM_NR_SEC += protocol/enl2/pdcp/npdcp/src/npdcp_trc_mod_npdcp_utmd.json  \
+                                  protocol/nrrc/interface/nrrc_common_trc_mod_nrrc_utmd.json  \
+                                  protocol/nrrc/search/include/nrrc_search_trc_mod_nrrc_search_utmd.json  \
+                                  protocol/nrrc/meas/include/nrrc_meas_trc_mod_nrrc_meas_utmd.json  \
+                                  protocol/nrrc/idle/include/nrrc_idle_trc_mod_nrrc_idle_utmd.json  \
+                                  protocol/nrrc/nconn/include/nrrc_nconn_trc_mod_nrrc_nconn_utmd.json  \
+                                  protocol/nrrc/config/include/nrrc_config_trc_mod_nrrc_config_utmd.json  \
+                                  protocol/nrrc/main/include/nrrc_main_trc_mod_nrrc_main_utmd.json  \
+                                  protocol/nrrc/scg/include/nrrc_scg_trc_mod_nrrc_scg_utmd.json  \
+                                  protocol/nrrc/si/include/nrrc_si_trc_mod_nrrc_si_utmd.json  \
+                                  protocol/as_multimode/mrs/include/mrs_trc_mod_mrs_utmd.json  \
+                                  protocol/nrrc/background/include/nrrc_background_trc_mod_nrrc_background_utmd.json   
+
+# for 5G only project
+ifeq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  COMP_TRACE_DEFS_MODEM_NR_SEC += protocol/enl2/pdcp/common/src/enpdcp_trc_mod_enpdcp_utmd.json  \
+                                  protocol/enl2/common/enl2_free/src/enl2_free_trc_mod_enl2_free_utmd.json 
+endif
+
+  ifeq ($(strip $(FIVEG_OPTION3_ENDC_SUPPORT)),TRUE)
+    COM_DEFS += __ENDC__
+  endif
+
+  ifeq ($(strip $(FIVEG_OPTION2_SANR_SUPPORT)),TRUE)
+    COM_DEFS += __NR_SA__ __FIVEG_NAS__
+  endif
+
+  ifeq ($(strip $(FIVEG_OPTION4_NEDC_SUPPORT)),TRUE)
+    COM_DEFS += __NR_SA__ __NEDC__ __FIVEG_NAS__
+  endif
+
+  ifeq ($(strip $(FIVEG_OPTION5_NGELTE_SUPPORT)),TRUE)
+    COM_DEFS += __NG_ELTE__ __FIVEG_NAS__
+  endif
+
+  ifeq ($(strip $(FIVEG_OPTION7_NGENDC_SUPPORT)),TRUE)
+    COM_DEFS += __NG_ELTE__ __NG_ENDC__ __FIVEG_NAS__
+  endif
+  
+  COM_DEFS += __NR_RAT__
+  
+  #NL1
+  COM_DEFS += __NR_ENABLE__
+  
+endif
+
+COM_DEFS += $(foreach mod,$(call Upper,$(FIVEG_COMP)), __$(mod)_ENABLE__)
+ifeq ($(strip $(MPD_SOURCE_FULL_BUILD)),TRUE)
+  COMPLIST += $(FIVEG_COMP)
+else
+  COMPOBJS += $(foreach lib_mod,$(filter-out $(COMPLIST),$(FIVEG_COMP)), $(CUS_MTK_LIB)/lib$(lib_mod).a)
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+      ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+		#
+	    # IDC common compile option
+	    #
+		COM_DEFS += __IDC_ENABLED__
+		#COM_DEFS += __LTE_A_IDC__
+		COM_DEFS += __LTE_INDICATION_FOR_AP_CLOCK_HOPPING_SUPPORT__
+		COM_DEFS += __NR_INDICATION_FOR_AP_CLOCK_HOPPING_SUPPORT__
+      else ifneq ($(strip $(FIVEG_MODE_SUPPORT)),NONE)
+		COM_DEFS += __IDC_ENABLED__
+	    #COM_DEFS += __LTE_A_IDC__
+	    COM_DEFS += __LTE_INDICATION_FOR_AP_CLOCK_HOPPING_SUPPORT__
+		COM_DEFS += __NR_INDICATION_FOR_AP_CLOCK_HOPPING_SUPPORT__
+      endif
+    endif
+  endif
+endif
\ No newline at end of file
diff --git a/mcu/make/common/rule_def/para_def.mak b/mcu/make/common/rule_def/para_def.mak
new file mode 100644
index 0000000..cfc76f6
--- /dev/null
+++ b/mcu/make/common/rule_def/para_def.mak
@@ -0,0 +1,285 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+# *************************************************************************
+
+GEN_DB_OPTION = -ltedbv12
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6293)
+  MD_VER_FOLDER = md93
+endif
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6295)
+  MD_VER_FOLDER = md95
+endif
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+  MD_VER_FOLDER = md97
+endif
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+  MD_VER_FOLDER = md97p
+endif
+
+# define 95/97 EL1C co-files
+EL1_CO_FILE_MD_ARCH = MT6295 MT6297 MT6297P
+ifneq ($(filter $(strip $(MTK_MODEM_ARCH)), $(EL1_CO_FILE_MD_ARCH)),)
+  EL1C_MD_VER_FOLDER = md95
+else
+  EL1C_MD_VER_FOLDER = $(MD_VER_FOLDER)
+endif
+
+# define EL2 <--> ENL2 + EL2_V2 switch
+EL2_V2_MD_ARCH = MT6295 MT6297 MT6297P
+ifneq ($(filter $(strip $(MTK_MODEM_ARCH)),$(EL2_V2_MD_ARCH)),)
+  EL2_ARCH_VERSION=EL2_ARCH_V2
+  COM_DEFS += __EL2_ARCH_V2__
+else
+  EL2_ARCH_VERSION=EL2_ARCH_V1
+  COM_DEFS += __EL2_ARCH_V1__
+endif
+
+L1_UMTS=FALSE
+ifeq ($(strip $(L1_WCDMA)),TRUE)
+  L1_UMTS=TRUE
+endif
+ifeq ($(strip $(L1_TDD128)),TRUE)
+  L1_UMTS=TRUE
+endif
+
+ETCM = FALSE
+ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+  ETCM = TRUE
+endif
+
+ifndef SMART_PHONE_CORE
+  SMART_PHONE_CORE = NONE
+endif
+
+ifndef AST_SUPPORT
+  AST_SUPPORT = NONE
+endif
+
+UGTCM = FALSE
+ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    UGTCM = TRUE
+else
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+    UGTCM = TRUE
+  endif
+endif
+
+VGTCM = FALSE
+ifneq ($(call Upper,$(strip $(FIVEG_MODE_SUPPORT))),NONE)
+  VGTCM = TRUE
+endif
+
+ifndef RTOS
+  RTOS = NUCLEUS
+endif
+ifndef RTOS_DEBUG
+  RTOS_DEBUG = TRUE
+endif
+
+# UMTS_BAND_SUPPORT Options
+UMTS_SUPPORT_BAND =
+ifdef UMTS_BAND_I
+  ifeq ($(strip $(UMTS_BAND_I)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_I__
+  endif
+endif
+ifdef UMTS_BAND_II
+  ifeq ($(strip $(UMTS_BAND_II)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_II__
+  endif
+endif
+ifdef UMTS_BAND_III
+  ifeq ($(strip $(UMTS_BAND_III)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_III__
+  endif
+endif
+ifdef UMTS_BAND_IV
+  ifeq ($(strip $(UMTS_BAND_IV)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_IV__
+  endif
+endif
+ifdef UMTS_BAND_V
+  ifeq ($(strip $(UMTS_BAND_V)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_V__
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_VI__
+  endif
+endif
+ifdef UMTS_BAND_VI
+  ifeq ($(strip $(UMTS_BAND_VI)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_V__
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_VI__
+  endif
+endif
+ifdef UMTS_BAND_VII
+  ifeq ($(strip $(UMTS_BAND_VII)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_VII__
+  endif
+endif
+ifdef UMTS_BAND_VIII
+  ifeq ($(strip $(UMTS_BAND_VIII)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_VIII__
+  endif
+endif
+ifdef UMTS_BAND_IX
+  ifeq ($(strip $(UMTS_BAND_IX)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_IX__
+  endif
+endif
+ifdef UMTS_BAND_X
+  ifeq ($(strip $(UMTS_BAND_X)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_X__
+  endif
+endif
+ifeq ($(strip $(UMTS_BAND_XI)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XI__
+endif
+ifeq ($(strip $(UMTS_BAND_XII)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XII__
+endif
+ifeq ($(strip $(UMTS_BAND_XIII)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XIII__
+endif
+ifeq ($(strip $(UMTS_BAND_XIV)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XIV__
+endif
+ifeq ($(strip $(UMTS_BAND_XV)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XV__
+endif
+ifeq ($(strip $(UMTS_BAND_XVI)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XVI__
+endif
+ifeq ($(strip $(UMTS_BAND_XVII)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XVII__
+endif
+ifeq ($(strip $(UMTS_BAND_XVIII)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XVIII__
+endif
+ifeq ($(strip $(UMTS_BAND_XIX)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XIX__
+endif
+ifeq ($(strip $(UMTS_BAND_XX)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XX__
+endif
+ifeq ($(strip $(UMTS_BAND_XXI)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XXI__
+endif
+ifeq ($(strip $(UMTS_BAND_XXII)),TRUE)
+    UMTS_SUPPORT_BAND  += __UMTS_BAND_XXII__
+endif
+# UMTS_BAND_SUPPORT Options end
+
+SV5_PLATFORM = MT6280 $(strip $(SUPPORT_PLATFORM))
+
+ifndef MAX_MIDI_FILE_SIZE
+  MAX_MIDI_FILE_SIZE = 2097152
+endif
+
+SAIC_NOT_SUPPORT_FLATFORM = MT6205 MT6205B MT6208 MT6217 MT6218 MT6218B MT6219 MT6225 MT6226 MT6226D MT6226M MT6227 MT6227D MT6228 MT6229 MT6230
+REPEATED_ACCH_NOT_SUPPORT_FLATFORM = MT6205 MT6205B MT6208 MT6217 MT6218 MT6218B MT6219 MT6223 MT6223P MT6225 MT6226 MT6226D MT6226M MT6227 MT6227D MT6228 MT6229 MT6230 MT6235B MT6238 MT6239 MT6268T MT6268H
+VAMOS_CAP_DEFAULT_NOT_SUPPORT_FLATFORM = MT6280
+
+ifndef MELODY_BUFFER_LEN
+  ifeq ($(strip $(MED_PROFILE)),MED_MODEM)
+     MELODY_BUFFER_LEN = 512
+  else
+    ifeq ($(strip $(MED_PROFILE)),MED_LOW)
+      MELODY_BUFFER_LEN = 1300
+    else
+      MELODY_BUFFER_LEN = 102400
+    endif
+  endif
+endif
+
+ifdef OPTR_CODE
+  ifeq ($(strip $(OPTR_CODE)),OP12)
+    MELODY_BUFFER_LEN = 307200
+  endif
+endif
+
+ifndef PHB_NAME_LENGTH
+  PHB_NAME_LENGTH = 40
+endif
+
+MMA_MAX_NUM_VALUE = 2 3 4 5 6 7 8 9 10 11 12
+
+32K_CRYSTAL_REMOVAL_SUPPORT_PLATFORM = MT6280 MT6290 $(strip $(SUPPORT_PLATFORM))
+QUERY_32K_CRYSTAL_FROM_MD_PLATFORM = MT6280 MT6290
+QUERY_32K_CRYSTAL_FROM_AP_PLATFORM = $(strip $(SUPPORT_PLATFORM))
+
+# UL1 COMPLIST
+UL1_HS_PLUS_PLATFORM = TK6280 MT6280 MT6589 MT6290 MT6595 $(strip $(SUPPORT_PLATFORM))
+ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+  UL1_SUPPORT = TRUE
+else
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+      UL1_SUPPORT = TRUE
+    endif
+  endif
+endif
+ifeq ($(strip $(UL1_SUPPORT)),TRUE)
+  ifdef L1_WCDMA
+    ifeq ($(strip $(L1_WCDMA)),TRUE)
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        UMTS_FDD_PLATFORM = FALSE
+        ifneq ($(filter $(strip $(PLATFORM)),$(UL1_HS_PLUS_PLATFORM)),)
+          UMTS_FDD_PLATFORM = TRUE
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+  ifdef MDSYS
+    ifeq ($(strip $(MDSYS)),MD2)
+      BT_SCO_SW_CODEC_PATH = driver/audio/lib/MTKGCC_ARM9
+    else
+      BT_SCO_SW_CODEC_PATH = driver/audio/lib/MTKGCC
+    endif
+  else
+    BT_SCO_SW_CODEC_PATH = driver/audio/lib/MTKGCC_CR4
+  endif
+
+  ifdef MTK_BT_CHIP
+    BLUETOOTH_SCO_SW_CODEC_BT_CHIP = MTK_CONSYS_$(PLATFORM)
+  else
+    #Add in case of MTK_BT_CHIP missing definition
+    BLUETOOTH_SCO_SW_CODEC_PLATFORM = $(PLATFORM)
+  endif
+endif
+
+ARM9_PLATFORM  = MT6238 MT6239 MT6235B MT6236 MT6236B MT6268A MT6270A MT6921 MT6255 MT6922
+ARM11_PLATFORM = MT6256 MT6276 MT6573 MT6575 MT6577
+CR4_PLATFORM   = TK6280 MT6280 MT6290 MT6595 TK6291 MT6755 MT6797
diff --git a/mcu/make/common/rule_def/tmd_def.mak b/mcu/make/common/rule_def/tmd_def.mak
new file mode 100644
index 0000000..22b5675
--- /dev/null
+++ b/mcu/make/common/rule_def/tmd_def.mak
@@ -0,0 +1,704 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+# *************************************************************************
+# always define
+# *************************************************************************
+
+# *************************************************************************
+# defined by rules
+# *************************************************************************
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+
+ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_EGPRS_MODE)
+  ifeq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+    GL1_UTMD_FILES = l1/gl1/common/l1c_trace_utmd.json \
+                     l1/gl1/common/l1c_trace_public_utmd.json \
+                     l1/gl1/common/l1c2_trace_utmd.json \
+                     l1/gl1/common/l1c2_trace_public_utmd.json \
+                     l1/gl1/common/l1i_cs_trace_utmd.json \
+                     l1/gl1/common/l1i_cs_trace_public_utmd.json \
+                     l1/gl1/common/l1i_ps_trace_utmd.json \
+                     l1/gl1/common/l1i_ps_trace_public_utmd.json \
+                     l1/gl1/common/l1sc_trace_utmd.json \
+                     l1/gl1/common/l1sc_trace_public_utmd.json \
+                     l1/gl1/common/l1c_csd_trace_utmd.json \
+                     l1/gl1/common/l1c_csd_trace_public_utmd.json \
+                     l1/gl1/common/L1D_Trace_utmd.json \
+                     l1/gl1/common/L1D_Trace_public_utmd.json \
+                     l1/gl1/common/L1D2_Trace_utmd.json \
+                     l1/gl1/common/L1D2_Trace_public_utmd.json \
+                     l1/gl1/common/L1D_EDGE_Trace_utmd.json \
+                     l1/gl1/common/L1D_EDGE_Trace_public_utmd.json \
+                     l1/gl1/common/l1i_egprs_trace_utmd.json \
+                     l1/gl1/common/l1i_egprs_trace_public_utmd.json \
+                     l1/gl1/common/l1c_egprs_trace_utmd.json \
+                     l1/gl1/common/l1c_egprs_trace_public_utmd.json \
+                     l1/gl1/common/l1i_amr_trace_utmd.json \
+                     l1/gl1/common/l1t_amr_trace_utmd.json
+  endif
+endif
+
+ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_GSM_MODE)
+    GL1_UTMD_FILES = l1/gl1/common/l1c_trace_utmd.json \
+                     l1/gl1/common/l1c_trace_public_utmd.json \
+                     l1/gl1/common/l1sc_trace_utmd.json \
+                     l1/gl1/common/l1sc_trace_public_utmd.json \
+                     l1/gl1/common/l1i_cs_trace_utmd.json \
+                     l1/gl1/common/l1i_cs_trace_public_utmd.json \
+                     l1/gl1/common/L1D_Trace_utmd.json \
+                     l1/gl1/common/L1D_Trace_public_utmd.json \
+                     l1/gl1/common/l1c_csd_trace_utmd.json \
+                     l1/gl1/common/l1c_csd_trace_public_utmd.json \
+                     l1/gl1/common/L1D2_Trace_utmd.json \
+                     l1/gl1/common/L1D2_Trace_public_utmd.json \
+                     l1/gl1/common/l1i_amr_trace_utmd.json \
+                     l1/gl1/common/l1t_amr_trace_utmd.json
+endif
+
+ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+      GL1_UTMD_FILES = l1/gl1/common/l1c_trace_utmd.json \
+                       l1/gl1/common/l1c_trace_public_utmd.json \
+                       l1/gl1/common/l1sc_trace_utmd.json \
+                       l1/gl1/common/l1sc_trace_public_utmd.json \
+                       l1/gl1/common/l1i_cs_trace_utmd.json \
+                       l1/gl1/common/l1i_cs_trace_public_utmd.json \
+                       l1/gl1/common/L1D_Trace_utmd.json \
+                       l1/gl1/common/L1D_Trace_public_utmd.json \
+                       l1/gl1/common/l1c_csd_trace_utmd.json \
+                       l1/gl1/common/l1c_csd_trace_public_utmd.json \
+                       l1/gl1/common/L1D2_Trace_utmd.json \
+                       l1/gl1/common/L1D2_Trace_public_utmd.json \
+                       l1/gl1/common/l1i_amr_trace_utmd.json \
+                       l1/gl1/common/l1t_amr_trace_utmd.json \
+                       l1/gl1/common/L1D_EDGE_Trace_utmd.json \
+                       l1/gl1/common/L1D_EDGE_Trace_public_utmd.json
+    endif
+    ifeq ($(strip $(L1_GPRS)),TRUE)
+      GL1_UTMD_FILES += l1/gl1/common/l1i_ps_trace_utmd.json \
+                        l1/gl1/common/l1i_ps_trace_public_utmd.json
+      GL1_UTMD_FILES += l1/gl1/common/l1c_egprs_trace_utmd.json \
+                        l1/gl1/common/l1c_egprs_trace_public_utmd.json \
+                        l1/gl1/common/l1i_egprs_trace_utmd.json \
+                        l1/gl1/common/l1i_egprs_trace_public_utmd.json \
+                        l1/gl1/common/l1c2_trace_utmd.json \
+                        l1/gl1/common/l1c2_trace_public_utmd.json
+    endif
+    ifeq ($(strip $(L1_UMTS)),TRUE)
+        GL1_UTMD_FILES += l1/gl1/common/L1D3_Trace_utmd.json \
+                          l1/gl1/common/L1D3_Trace_public_utmd.json
+        GL1_UTMD_FILES += l1/gl1/common/L1_AFC_Trace_utmd.json \
+                          l1/gl1/common/L1_AFC_Trace_public_utmd.json
+        ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+        ifeq ($(strip $(L1_WCDMA)),TRUE)
+           ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+              UL1_UTMD_FILES = l1/ul1/ul1c_public/UL1C_Trace1_utmd.json \
+                               l1/ul1/ul1c_public/UL1C_Trace2_utmd.json \
+                               l1/ul1/ul1c_public/UL1C_Trace3_utmd.json \
+                               l1/ul1/ul1c_public/UL1C_Trace4_utmd.json \
+                               l1/ul1/ul1c_public/UL1C_Trace1_public_utmd.json \
+                               l1/ul1/ul1c_public/UL1C_Trace2_public_utmd.json \
+                               l1/ul1/ul1c_public/UL1C_Trace3_public_utmd.json \
+                               l1/ul1/ul1c_public/UL1C_Trace4_public_utmd.json \
+                               l1/ul1/ul1c_public/UL1TST_Trace1_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_MLT_Trace1_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_MLT_Trace2_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_Trace_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_Trace1_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_Trace2_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_Trace3_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_Trace4_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_Trace5_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_Trace6_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_Trace_dpd_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_HSPA_Trace_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_HSPA_Trace1_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_HSPA_Trace2_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_PLUS_Trace1_utmd.json \
+                               l1/ul1/ul1d_public/UL1D_Trace_External_public_utmd.json \
+                               l1/md_sm/common/ul1sm/ul1sm_trc_utmd.json \
+                               l1/md_sm/common/ul1sm/ul1sm_trc_public_utmd.json
+              ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+                 UL1_UTMD_FILES += l1/ul1/ul1d_public/ul1d_trace_tpc_gen97_utmd.json
+              endif
+              ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+                 UL1_UTMD_FILES += l1/ul1/ul1d_public/ul1d_trace_tpc_gen97_utmd.json
+              endif
+           endif
+        endif
+        endif
+        ifeq ($(strip $(L1_GPRS)),TRUE)
+         GL1_UTMD_FILES += l1/gl1/common/l1dm_trace_utmd.json \
+                           l1/gl1/common/l1dm_trace_public_utmd.json
+        endif
+    endif
+endif
+
+ifeq ($(strip $(L1_UMTS)),TRUE)
+   GL1_UTMD_FILES = l1/gl1/common/l1c_trace_utmd.json \
+                    l1/gl1/common/l1c_trace_public_utmd.json \
+                    l1/gl1/common/l1c2_trace_utmd.json \
+                    l1/gl1/common/l1c2_trace_public_utmd.json \
+                    l1/gl1/common/l1i_cs_trace_utmd.json \
+                    l1/gl1/common/l1i_cs_trace_public_utmd.json \
+                    l1/gl1/common/l1i_ps_trace_utmd.json \
+                    l1/gl1/common/l1i_ps_trace_public_utmd.json \
+                    l1/gl1/common/l1sc_trace_utmd.json \
+                    l1/gl1/common/l1sc_trace_public_utmd.json \
+                    l1/gl1/common/l1c_csd_trace_utmd.json \
+                    l1/gl1/common/l1c_csd_trace_public_utmd.json \
+                    l1/gl1/common/L1D_Trace_utmd.json \
+                    l1/gl1/common/L1D_Trace_public_utmd.json \
+                    l1/gl1/common/L1D2_Trace_utmd.json \
+                    l1/gl1/common/L1D2_Trace_public_utmd.json \
+                    l1/gl1/common/L1D_EDGE_Trace_utmd.json \
+                    l1/gl1/common/L1D_EDGE_Trace_public_utmd.json \
+                    l1/gl1/common/l1i_egprs_trace_utmd.json \
+                    l1/gl1/common/l1i_egprs_trace_public_utmd.json \
+                    l1/gl1/common/l1c_egprs_trace_utmd.json \
+                    l1/gl1/common/l1c_egprs_trace_public_utmd.json \
+                    l1/gl1/common/l1i_amr_trace_utmd.json \
+                    l1/gl1/common/l1t_amr_trace_utmd.json
+   ifneq ($(strip $(UMTS_MODE_SUPPORT)),NONE)
+      GL1_UTMD_FILES += l1/gl1/common/l1dm_trace_utmd.json \
+                        l1/gl1/common/l1dm_trace_public_utmd.json
+   endif
+
+   ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+   ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+      UL1_UTMD_FILES = l1/ul1/ul1d_public/UL1D_MLT_Trace1_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_MLT_Trace2_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_Trace_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_Trace1_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_Trace2_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_Trace3_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_Trace4_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_Trace5_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_Trace6_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_Trace_dpd_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_HSPA_Trace_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_HSPA_Trace1_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_HSPA_Trace2_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_PLUS_Trace1_utmd.json \
+                       l1/ul1/ul1d_public/UL1D_Trace_External_public_utmd.json \
+                       l1/ul1/ul1c_public/UL1C_Trace1_utmd.json \
+                       l1/ul1/ul1c_public/UL1C_Trace2_utmd.json \
+                       l1/ul1/ul1c_public/UL1C_Trace3_utmd.json \
+                       l1/ul1/ul1c_public/UL1C_Trace4_utmd.json \
+                       l1/ul1/ul1c_public/UL1C_Trace1_public_utmd.json \
+                       l1/ul1/ul1c_public/UL1C_Trace2_public_utmd.json \
+                       l1/ul1/ul1c_public/UL1C_Trace3_public_utmd.json \
+                       l1/ul1/ul1c_public/UL1C_Trace4_public_utmd.json \
+                       l1/ul1/ul1c_public/UL1TST_Trace1_utmd.json \
+                       l1/md_sm/common/ul1sm/ul1sm_trc_utmd.json \
+                       l1/md_sm/common/ul1sm/ul1sm_trc_public_utmd.json
+      ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+         UL1_UTMD_FILES += l1/ul1/ul1d_public/ul1d_trace_tpc_gen97_utmd.json
+         UL1_UTMD_FILES += l1/ul1/ul1d_public/ul1d_trace_agc_md97_utmd.json
+      endif
+      ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+         UL1_UTMD_FILES += l1/ul1/ul1d_public/ul1d_trace_tpc_gen97_utmd.json
+         UL1_UTMD_FILES += l1/ul1/ul1d_public/ul1d_trace_agc_md97_utmd.json
+      endif
+   endif
+   endif
+endif
+endif # MODIS_CONFIG
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+    EL1D_PUB_UTMD_FILES = l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_cm0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_cm1_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_common0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_common1_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_rfcc_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_cs_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_pos_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_ps_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_rf0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_rf1_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_rx0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_rx1_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_rx2_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_agc0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_tpc0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_tx0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_tx_public_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_cosim_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_rxdfe0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_txdfe0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_dpd0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_et0_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_rxdmp_utmd.json \
+                          l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_etdpd0_utmd.json
+    ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+      EL1D_PUB_UTMD_FILES += l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_lpwr_lpcc_utmd.json
+    endif
+    ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+      EL1D_PUB_UTMD_FILES += l1/el1/el1d_pub/$(strip $(MD_VER_FOLDER))/trc/el1d_trace_lpwr_lpcc_utmd.json
+    endif
+  endif
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+      COMMON_UTMD_FILES += l1/idc/include/l1_idc_l1_trc_utmd.json
+    endif
+  endif
+endif
+
+    # L1 TRACE FILES
+    ifneq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+          COMMON_UTMD_FILES += l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_phs_1_trace_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_phs_2_trace_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_phs_public_trace_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_phs_rtb_1_trace_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_irt_1_trace_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1tx_trace_1_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1tx_trace_2_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1tx_trace_public_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_main_trace_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_main_public_trace_utmd.json
+
+		ADDITIONAL_TMD_COM_DEFS = __MD95__ __MD97__ __MD97P__
+        ifneq ($(filter $(strip $(ADDITIONAL_TMD_COM_DEFS)), $(strip $(COM_DEFS))),)
+          COMMON_UTMD_FILES += l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1tx_trace_3_utmd.json
+        endif
+
+        ifneq ($(filter __LTE_PHY_TEST__,$(COM_DEFS)),)
+          COMMON_UTMD_FILES += l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_phy_tstm_1_trace_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_phy_tstm_2_trace_utmd.json
+        else
+          COMMON_UTMD_FILES += l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_tstm_1_trace_utmd.json \
+                               l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_tstm_2_trace_utmd.json
+        endif
+
+        ifneq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+          COMMON_UTMD_FILES += l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc/el1_idc_1_trace_utmd.json
+        endif
+
+    endif
+
+ifeq ($(strip $(UL1_SUPPORT)),TRUE)
+  ifdef L1_WCDMA
+    ifeq ($(strip $(L1_WCDMA)),TRUE)
+      ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+        ifneq ($(filter $(strip $(PLATFORM)),$(UL1_HS_PLUS_PLATFORM)),)
+          ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+            UL1_PCORE_UTMD_FILES = l1/ul1/ul1d_public/UL1D_Pcore_Trace_utmd.json
+          endif
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+    GL1_PCORE_UTMD_FILES = l1/gl1/l1c/gl1_pcore_trace_utmd.json
+endif
+
+ifeq ($(strip $(TEST_LOAD_TYPE)),NONE)
+ifeq ($(filter TRUE,$(MODIS_CONFIG) $(UE_SIMULATOR)),)
+  AUDIO_UTMD_FILES  = driver/audio/src/v1/l1audio_trace_utmd.json
+  AUDIO_UTMD_FILES += driver/audio/src/v1/inc/l1audio_voc_utmd.json
+  L1_UTMD_FILES += CuStOm_StArT_AUDIO ${AUDIO_UTMD_FILES} CuStOm_EnD_AUDIO
+endif
+endif
+
+# L1/L2 trace for EL2
+ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V1)
+  COMMON_UTMD_FILES += protocol/interface/el2/trace/emac_trace_public_utmd.json
+  COMMON_UTMD_FILES += protocol/interface/el2/trace/emac_trace_1_utmd.json
+  COMMON_UTMD_FILES += protocol/interface/el2/trace/emac_trace_2_utmd.json
+  COMMON_UTMD_FILES += protocol/interface/el2/trace/emac_trace_internal_utmd.json
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+      COMMON_UTMD_FILES += protocol/interface/el2/trace/epdcp_trace_utmd.json
+      COMMON_UTMD_FILES += protocol/interface/el2/trace/epdcp_trace_internal_utmd.json
+      COMMON_UTMD_FILES += protocol/interface/el2/trace/epdcp_trace_public_utmd.json
+      COMMON_UTMD_FILES += protocol/interface/el2/trace/erlcdl_trace_utmd.json
+      COMMON_UTMD_FILES += protocol/interface/el2/trace/erlcul_trace_utmd.json
+      COMMON_UTMD_FILES += protocol/interface/el2/trace/erlcdl_trace_internal_utmd.json
+      COMMON_UTMD_FILES += protocol/interface/el2/trace/erlcul_trace_internal_utmd.json
+      COMMON_UTMD_FILES += protocol/interface/el2/trace/erlcdl_trace_public_utmd.json
+      COMMON_UTMD_FILES += protocol/interface/el2/trace/erlcul_trace_public_utmd.json
+  endif
+endif
+
+
+
+#data path trace macro definition.
+#UPCM data path trace macro definition.
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    UPCM_UTMD_FILES = protocol/nas_multimode/upcm/src/data_path_utmd.json
+    UPCM_UTMD_FILES += protocol/nas_multimode/upcm/src/data_path_detail_utmd.json
+    UPCM_UTMD_FILES += protocol/nas_multimode/upcm/src/data_path_public_utmd.json
+    UPCM_UTMD_FILES += protocol/nas_multimode/upcm/src/data_path_pcl_utmd.json
+    COMMON_UTMD_FILES += CuStOm_StArT_UPCM ${UPCM_UTMD_FILES} CuStOm_EnD_UPCM
+endif
+
+#RATDM data path trace macro definition.
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    COMMON_UTMD_FILES += protocol/as_multimode/ratdm/cmn_data/secure/ratdm_sec_trace_utmd.json
+    COMMON_UTMD_FILES += protocol/as_multimode/ratdm/cmn_data/secure/ratdm_sec_trace_public_utmd.json
+    COMMON_UTMD_FILES += protocol/as_multimode/ratdm/cmn_data/secure/ratdm_sec_trace_pcl_utmd.json
+endif
+
+ifeq ($(filter BASIC UDVT,$(TEST_LOAD_TYPE)),)
+  QMU_BM_UTMD_FILES += service/qmu_bm/src/qmu_bm_trace_utmd.json
+  COMMON_UTMD_FILES += CuStOm_StArT_QMU_BM ${QMU_BM_UTMD_FILES} CuStOm_EnD_QMU_BM
+endif
+
+
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+      ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+          ROHC_UTMD_FILES = protocol/interface/enl2/trace/rohc_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/interface/enl2/trace/rohc_detail_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/interface/enl2/trace/rohc_public_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/interface/enl2/trace/rohc_public_trace2_utmd.json
+          ROHC_UTMD_FILES += protocol/interface/enl2/trace/ral_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/interface/enl2/trace/ral_detail_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/interface/enl2/trace/ral_public_trace_utmd.json
+          COMMON_UTMD_FILES += CuStOm_StArT_ROHC ${ROHC_UTMD_FILES} CuStOm_EnD_ROHC
+      else
+          ROHC_UTMD_FILES = protocol/el2/rohc/rohc_core/rohc_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/el2/rohc/rohc_core/rohc_detail_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/el2/rohc/rohc_core/rohc_public_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/el2/rohc/rohc_core/rohc_public_trace2_utmd.json
+          ROHC_UTMD_FILES += protocol/el2/rohc/ral/ral_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/el2/rohc/ral/ral_detail_trace_utmd.json
+          ROHC_UTMD_FILES += protocol/el2/rohc/ral/ral_public_trace_utmd.json
+          COMMON_UTMD_FILES += CuStOm_StArT_ROHC ${ROHC_UTMD_FILES} CuStOm_EnD_ROHC
+      endif
+  endif
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  SST_UTMD_FILES += service/sst/src/SST_intrCtrl_trace_utmd.json
+  SST_UTMD_FILES += service/sst/src/spv_trace_utmd.json
+  SST_UTMD_FILES += service/sst/src/mpb_main_trace_utmd.json
+  COMMON_UTMD_FILES += CuStOm_StArT_SST $(SST_UTMD_FILES) CuStOm_EnD_SST
+endif
+
+ifneq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+  ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    ifeq ($(strip $(L1D_LOOPBACK)),1)
+      L1_UTMD_FILES += l1/gl1/common/L1DLP_Trace_utmd.json
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),2)
+      L1_UTMD_FILES += l1/gl1/common/L1DLP_Trace_utmd.json
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),3)
+      L1_UTMD_FILES += l1/gl1/common/L1DLP3_Trace_utmd.json
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),5)
+       L1_UTMD_FILES += l1/gl1/common/L1DLP5_Trace_utmd.json
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),6)
+       L1_UTMD_FILES += l1/gl1/common/L1DLP6_Trace_utmd.json
+    endif
+
+    ifeq ($(strip $(L1D_LOOPBACK)),7)
+       L1_UTMD_FILES += l1/gl1/common/L1DLP7_Trace_utmd.json
+    endif
+    ifeq ($(strip $(L1D_LOOPBACK)),8)
+       L1_UTMD_FILES += l1/gl1/common/L1DLP8_Trace_utmd.json
+    endif
+  endif
+endif
+
+#MML1 trace macro
+ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+
+  MML1_RF_UTMD_FILES = l1/mml1/common/mml1_trace_utmd.json \
+                       l1/mml1/common/mml1_trace2_utmd.json \
+                       l1/mml1/common/mml1_trace_logger_utmd.json \
+                       l1/mml1/common/mml1_trace_mmrfd_utmd.json \
+                       l1/mml1/common/mml1_trace_mmrfd_public_utmd.json \
+                       l1/mml1/common/mml1_trace_dpd_utmd.json \
+                       l1/mml1/common/mml1_trace_mmtst_utmd.json \
+                       l1/mml1/common/mml1_trace_endc_utmd.json \
+                       l1/mml1/common/mml1_trace_rfdb_recfg_sync_utmd.json \
+                       l1/mml1/common/mml1_trace_nbi_utmd.json \
+                       l1/mml1/common/mml1_trace_agc_utmd.json \
+                       l1/mml1/common/mml1_trace_tpc_utmd.json \
+                       l1/mml1/common/mml1_trace_rxdfe_utmd.json \
+                       l1/mml1/common/mml1_trace_cdf_utmd.json \
+                       l1/mml1/common/mml1_trace_cmn_db_utmd.json \
+                       l1/mml1/common/mml1_trace_acid_utmd.json
+                      
+  ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+    MML1_RF_UTMD_FILES += l1/mml1/common/mml1_trace_rfc_gen97_utmd.json
+    MML1_RF_UTMD_FILES += l1/mml1/common/mml1_trace_etdpd_utmd.json
+  else ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+    MML1_RF_UTMD_FILES += l1/mml1/common/mml1_trace_rfc_gen97_utmd.json
+    MML1_RF_UTMD_FILES += l1/mml1/common/mml1_trace_etdpd_utmd.json
+  else
+    MML1_RF_UTMD_FILES += l1/mml1/common/mml1_trace_rfc_utmd.json 
+  endif
+endif
+
+ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+  L1_UTMD_FILES +=     l1/mml1/common/mml1_trace_lpwr_slp_0_utmd.json
+  L1_UTMD_FILES +=     l1/mml1/common/mml1_trace_lpwr_slp_1_utmd.json
+  L1_UTMD_FILES +=     l1/mml1/common/mml1_trace_lpwr_slp_2_utmd.json
+  L1_UTMD_FILES +=     l1/mml1/common/mml1_trace_gnss_utmd.json
+  L1_UTMD_FILES +=     l1/mml1/common/mml1_trace_rxdmp_utmd.json
+  L1_UTMD_FILES +=     l1/mml1/common/mml1_trace_fwk_utmd.json
+  L1_UTMD_FILES +=     l1/mml1/common/mml1_trace_utas_utmd.json  
+  ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+    L1_UTMD_FILES +=     l1/mml1/common/mml1_trace_arx_utmd.json
+  endif
+endif
+
+SLEEP_DRV_UTMD_FILES += $(strip $(SLEEPDRV_FOLDER))/common/DCXO_DIV_Trace1_utmd.json \
+                        $(strip $(SLEEPDRV_FOLDER))/common/FM_Trace1_utmd.json \
+                        $(strip $(SLEEPDRV_FOLDER))/common/MODEM_TOPSM_Trace1_utmd.json \
+                        $(strip $(SLEEPDRV_FOLDER))/common/TPPA_SleepDrv_Trace1_utmd.json\
+                        $(strip $(SLEEPDRV_FOLDER))/common/PCORE_MD_TOPSM_Trace1_utmd.json \
+                        $(strip $(SLEEPDRV_FOLDER))/common/PCORE_OSTD_Trace1_utmd.json \
+                        $(strip $(SLEEPDRV_FOLDER))/common/PCORE_SleepDrv_Trace1_utmd.json
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+    DVFS_DRV_UTMD_FILES += $(strip $(DVFSDRV_FOLDER))/common/$(MD_VER_FOLDER)/DVFS_MODEM_Trace1_utmd.json \
+                           $(strip $(DVFSDRV_FOLDER))/common/$(MD_VER_FOLDER)/DVFS_MD_Trace1_utmd.json
+    COMMON_UTMD_FILES   += CuStOm_StArT_DVFS_DRV ${DVFS_DRV_UTMD_FILES} CuStOm_EnD_DVFS_DRV
+  else
+    DVFS_DRV_UTMD_FILES += $(strip $(DVFSDRV_FOLDER))/common/$(MD_VER_FOLDER)/DVFS_MODEM_Trace1_utmd.json \
+                           $(strip $(DVFSDRV_FOLDER))/common/$(MD_VER_FOLDER)/DVFS_MD_Trace1_utmd.json
+    L1_UTMD_FILES += CuStOm_StArT_DVFS_DRV ${DVFS_DRV_UTMD_FILES} CuStOm_EnD_DVFS_DRV
+  endif
+else
+    DVFS_DRV_UTMD_FILES += $(strip $(DVFSDRV_FOLDER))/common/$(MD_VER_FOLDER)/DVFS_MODEM_Trace1_utmd.json \
+                           $(strip $(DVFSDRV_FOLDER))/common/$(MD_VER_FOLDER)/DVFS_MD_Trace1_utmd.json
+    L1_UTMD_FILES += CuStOm_StArT_DVFS_DRV ${DVFS_DRV_UTMD_FILES} CuStOm_EnD_DVFS_DRV
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+   #ELM Profiling Log
+   DEVDRV_UTMD_FILES += driver/devdrv/mdap_interface/src/amif_trace_utmd.json
+   DEVDRV_UTMD_FILES += driver/devdrv/elm/src/$(MD_VER_FOLDER)/elm_trace_utmd.json
+   SYS_DRV_UTMD_FILES += driver/sys_drv/spu/src/spu_trace_utmd.json
+endif
+
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifneq ($(ORIGINAL_FLAVOR),BASIC_HIF)
+    IPC_FRAGMENT_UTMD_FILES += middleware/hif/ipcore/src/ipc_fragment/ipc_fragment_data_path_trace_utmd.json
+    COMMON_UTMD_FILES += CuStOm_StArT_IPC_FRAGMENT ${IPC_FRAGMENT_UTMD_FILES} CuStOm_EnD_IPC_FRAGMENT
+    COMMON_UTMD_FILES += middleware/hif/interface/dpfm_data_path_trace_utmd.json
+    COMMON_UTMD_FILES += middleware/hif/interface/nmu_data_path_trace_utmd.json
+  endif
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifdef HIF_USB_SUPPORT
+    ifeq ($(strip $(HIF_USB_SUPPORT)), TRUE)
+      UBM_UTMD_FILES += service/hif/ubm/include/ubm_data_path_trace_utmd.json
+      COMMON_UTMD_FILES += CuStOm_StArT_UBM ${UBM_UTMD_FILES} CuStOm_EnD_UBM
+      USBCORE_UTMD_FILES += middleware/hif/usbcore/include/usbcore_data_path_trace_utmd.json
+      COMMON_UTMD_FILES += CuStOm_StArT_USBCORE ${USBCORE_UTMD_FILES} CuStOm_EnD_USBCORE
+	  ifdef USB_RNDIS_SUPPORT
+        ifeq ($(strip $(USB_RNDIS_SUPPORT)), TRUE) 
+          USBCLASS_UTMD_FILES += middleware/hif/interface/rndis_data_path_trace_utmd.json
+        endif
+      endif
+      ifdef USB_ECM_SUPPORT
+        ifeq ($(strip $(USB_ECM_SUPPORT)), TRUE) 
+          USBCLASS_UTMD_FILES += middleware/hif/interface/cdcecm_data_path_trace_utmd.json
+        endif
+      endif
+      ifdef USB_MBIM_SUPPORT
+        ifeq ($(strip $(USB_MBIM_SUPPORT)), TRUE) 
+          USBCLASS_UTMD_FILES += middleware/hif/interface/mbim_data_path_trace_utmd.json
+        endif
+      endif
+      ifneq ($(strip $(USBCLASS_UTMD_FILES)),)
+        COMMON_UTMD_FILES += CuStOm_StArT_USBCLASS ${USBCLASS_UTMD_FILES} CuStOm_EnD_USBCLASS
+      endif
+    endif
+  endif
+endif
+
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifneq ($(filter __MTK_3G_MRAT_ARCH__,$(strip $(COM_DEFS))),)
+    GL1_UTMD_FILES += l1/gl1/common/L1D3_Trace_utmd.json \
+                      l1/gl1/common/L1D3_Trace_public_utmd.json \
+                      l1/gl1/common/L1_AFC_Trace_utmd.json \
+                      l1/gl1/common/L1_AFC_Trace_public_utmd.json \
+                      l1/gl1/common/l1c3_trace_utmd.json \
+                      l1/gl1/common/l1c3_trace_public_utmd.json \
+                      l1/rtb/rtb_trace_utmd.json \
+                      l1/rtb/rtb_trace_public_utmd.json \
+                      l1/gl1/common/l1c5_trace_utmd.json \
+                      l1/gl1/common/l1c5_trace_public_utmd.json
+    GL1_UTMD_FILES += l1/md_sm/common/l1sm/l1sm_trc_utmd.json \
+                      l1/md_sm/common/l1sm/l1sm_trc_public_utmd.json
+  else
+    ifeq ($(call Upper,$(strip $(L1_WCDMA))),TRUE)
+      GL1_UTMD_FILES += l1/gl1/common/L1D3_Trace_utmd.json \
+                        l1/gl1/common/L1D3_Trace_public_utmd.json \
+                        l1/gl1/common/L1_AFC_Trace_utmd.json \
+                        l1/gl1/common/L1_AFC_Trace_public_utmd.json \
+                        l1/gl1/common/l1c3_trace_utmd.json \
+                        l1/gl1/common/l1c3_trace_public_utmd.json \
+                        l1/rtb/rtb_trace_utmd.json \
+                        l1/rtb/rtb_trace_public_utmd.json \
+                        l1/gl1/common/l1c5_trace_utmd.json \
+                        l1/gl1/common/l1c5_trace_public_utmd.json
+
+      GL1_UTMD_FILES += l1/md_sm/common/l1sm/l1sm_trc_utmd.json \
+                        l1/md_sm/common/l1sm/l1sm_trc_public_utmd.json
+    else
+      ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+      GL1_UTMD_FILES += l1/gl1/common/L1D3_Trace_utmd.json \
+                        l1/gl1/common/L1D3_Trace_public_utmd.json \
+                        l1/gl1/common/l1c3_trace_utmd.json \
+                        l1/gl1/common/l1c3_trace_public_utmd.json \
+                        l1/rtb/rtb_trace_utmd.json \
+                        l1/rtb/rtb_trace_public_utmd.json \
+                        l1/gl1/common/l1c5_trace_utmd.json \
+                        l1/gl1/common/l1c5_trace_public_utmd.json
+      endif
+    endif
+  endif
+
+  ifeq ($(strip $(EUTRAN_MODE_SUPPORT)),EUTRAN_MODE)
+    MD_SM_UTMD_FILES += l1/md_sm/common/el1sm/el1sm_trc_utmd.json \
+                        l1/md_sm/common/el1sm/el1sm_trc_public_utmd.json
+  endif
+endif
+
+HMU_UTMD_FILES += service/hif/interface/hif_srv_hmu_trace_utmd.json
+HLT_UTMD_FILES += service/hif/interface/hif_srv_hlt_trace_utmd.json
+COMMON_UTMD_FILES += CuStOm_StArT_HMU $(HMU_UTMD_FILES) CuStOm_EnD_HMU
+COMMON_UTMD_FILES += CuStOm_StArT_HLT $(HLT_UTMD_FILES) CuStOm_EnD_HLT
+
+# make sure TL1_UTMD_FILES are located at the end of all L1_UTMD_FILES
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+    TL1_UTMD_FILES =    l1/tl1/tl1trace/tl1_trace_tl1a_active_utmd.json \
+                        l1/tl1/tl1trace/tl1_trace_tl1a_standby_utmd.json \
+                        l1/tl1/tl1trace/tl1_trace_tl1a_tas_utmd.json \
+                        l1/tl1/tl1trace/tl1_trace_tl1c_cmd_utmd.json \
+                        l1/tl1/tl1trace/tl1_trace_tl1c_common_utmd.json \
+                        l1/tl1/tl1trace/tl1_trace_tl1c_meas_utmd.json \
+                        l1/tl1/tl1trace/tl1_trace_tl1c_rsp_utmd.json \
+                        l1/tl1/tl1trace/tl1_trace_tl1c_sniffer_utmd.json \
+                        l1/tl1/tl1trace/tl1_trace_tl1c_standby_utmd.json \
+                        l1/tl1/tl1trace/tl1_trace_tl1c_task_utmd.json
+  endif
+endif
+
+ifeq ($(strip $(L1_CATCHER)),TRUE)
+
+  ifneq ($(filter __DHL_V2_ENABLE__,$(COM_DEFS)),) # DHL2.0
+    DHL_L1_UTMD_FILE := interface/service/dhl/v2/dhl_l1_trace_utmd.json
+  else # DHL1.0
+    DHL_L1_UTMD_FILE := interface/service/dhl/v1/dhl_l1_trace_utmd.json
+  endif
+
+endif
+
+CL1_UTMD_FILES = l1/cl1/common/cl1_trace_utmd.json \
+                 l1/cl1/common/sys_trace_utmd.json
+EVL1_UTMD_FILES= l1/cl1/common/evl1_trace_utmd.json \
+                 l1/cl1/common/c2k_evl1_trace_public_utmd.json
+XL1_UTMD_FILES = l1/cl1/common/xl1_trace_utmd.json
+HSC_UTMD_FILES = l1/cl1/common/hsc_trace_utmd.json \
+                 l1/cl1/common/c2k_l1_trace_utmd.json \
+                 l1/cl1/common/hsc_trace_2_utmd.json \
+                 l1/cl1/common/l1d_rfd_trace_utmd.json
+RCP_UTMD_FILES = protocol/l2_c2k/rcp/rcp_ri_trace_utmd.json \
+                 protocol/l2_c2k/rcp/c2k_l2_trace_public_utmd.json
+RMC_UTMD_FILES = l1/cl1/common/c2k_do_l1_trace_utmd.json
+L1D_UTMD_FILES = l1/cl1/common/c2k_rtt_l1_trace_utmd.json \
+                 l1/cl1/common/c2k_rtt_l1_trace_public_utmd.json
+
+ifneq ($(strip $(call Upper,$(C2K_MODE_SUPPORT))),NONE)
+    COMMON_UTMD_FILES += CuStOm_StArT_CL1 $(CL1_UTMD_FILES) CuStOm_EnD_CL1
+    COMMON_UTMD_FILES += CuStOm_StArT_EVL1 $(EVL1_UTMD_FILES) CuStOm_EnD_EVL1
+    COMMON_UTMD_FILES += CuStOm_StArT_XL1 $(XL1_UTMD_FILES) CuStOm_EnD_XL1
+    COMMON_UTMD_FILES += CuStOm_StArT_HSC $(HSC_UTMD_FILES) CuStOm_EnD_HSC
+    COMMON_UTMD_FILES += CuStOm_StArT_RCP $(RCP_UTMD_FILES) CuStOm_EnD_RCP
+    COMMON_UTMD_FILES += CuStOm_StArT_RMC $(RMC_UTMD_FILES) CuStOm_EnD_RMC
+    COMMON_UTMD_FILES += CuStOm_StArT_L1D $(L1D_UTMD_FILES) CuStOm_EnD_L1D
+endif
+
+ifneq ($(filter __CL1_TASK_ENABLE__, $(COM_DEFS)),)
+    COMMON_UTMD_FILES += CuStOm_StArT_CL1 $(CL1_UTMD_FILES) CuStOm_EnD_CL1
+    COMMON_UTMD_FILES += CuStOm_StArT_HSC $(HSC_UTMD_FILES) CuStOm_EnD_HSC
+endif
+
+ifdef HIF_CCCI_SUPPORT
+  ifeq ($(strip $(HIF_CCCI_SUPPORT)), TRUE) 
+   NCCCI_UTMD_FILES += service/hif/interface/hif_srv_ccci_trace_utmd.json
+   COMMON_UTMD_FILES += CuStOm_StArT_NCCCI $(NCCCI_UTMD_FILES) CuStOm_EnD_NCCCI
+  endif
+  ifdef CCCI_DEV_SUPPORT
+    ifeq ($(strip $(CCCI_DEV_SUPPORT)), TRUE)
+      NCCCIDEV_UTMD_FILES += middleware/hif/interface/hif_mw_cccidev_trace_utmd.json
+      NCCCIDEV_UTMD_FILES += service/hif/interface/hif_srv_cccisrv_trace_utmd.json
+      COMMON_UTMD_FILES += CuStOm_StArT_NCCCIDEV $(NCCCIDEV_UTMD_FILES) CuStOm_EnD_NCCCIDEV
+    endif
+  endif
+endif
+
+ifdef SUBMARINE_SUPPORT
+  ifeq ($(strip $(SUBMARINE_SUPPORT)), TRUE)
+    COMMON_UTMD_FILES += middleware/wtunnel/wtunnel_data_path_trace_utmd.json
+    
+    DISPATCHER_UTMD_FILES += protocol/dispatcher/src/dispatcher_data_path_trace_utmd.json
+    COMMON_UTMD_FILES += CuStOm_StArT_DISPATCHER $(DISPATCHER_UTMD_FILES) CuStOm_EnD_DISPATCHER
+    
+    WIFI_PROXY_UTMD_FILES += service/wifi_proxy/inc/wifi_proxy_data_path_trace_utmd.json
+    COMMON_UTMD_FILES += CuStOm_StArT_WIFI_PROXY $(WIFI_PROXY_UTMD_FILES) CuStOm_EnD_WIFI_PROXY
+  endif
+endif
+
+MODIS_NO_NEED_MODULE = NL1_PUB EL1D_PUB GL1 GL1_PCORE MML1_RF MML1_RF_PCORE MML1 TL1 UL1 UL1_PCORE MD_SM DEVDRV SLEEP_DRV SYS_DRV
+define GenHqTmd
+  ifneq ( $($(call Upper,$(strip $(1)))_UTMD_FILES),)
+    L1_UTMD_FILES += CuStOm_StArT_$(call Upper,$(strip $(1))) \
+                    $($(call Upper,$(strip $(1)))_UTMD_FILES) \
+                    CuStOm_EnD_$(call Upper,$(strip $(1)))
+  endif
+endef
+$(foreach TMD_MODULE, $(MODIS_NO_NEED_MODULE), $(eval $(call GenHqTmd,$(TMD_MODULE))))
diff --git a/mcu/make/common/rule_def/trace_def.mak b/mcu/make/common/rule_def/trace_def.mak
new file mode 100644
index 0000000..7af0ddf
--- /dev/null
+++ b/mcu/make/common/rule_def/trace_def.mak
@@ -0,0 +1,915 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+# *************************************************************************
+# always define
+# *************************************************************************
+
+COMP_TRACE_DEFS_MODEM += service/sst/include/ex_trc_mod_ex_log_utmd.json 
+COMP_TRACE_DEFS_MODEM += service/sst/include/SST_trc_mod_sst_common_utmd.json 
+COMP_TRACE_DEFS_MODEM += driver/sys_drv/init/inc/$(MD_VER_FOLDER)/init_comm_trc_mod_init_log_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/layer4/l4/include/atci_trc_mod_atci_utmd.json 
+COMP_TRACE_DEFS_MODEM += 
+COMP_TRACE_DEFS_MODEM += driver/devdrv/trace/devdrv_trace_mod_devdrv_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/nas_multimode/tftlib/tftlib_dhl_trace_mod_tftlib_utmd.json 
+COMP_TRACE_DEFS_MODEM += protocol/nas_multimode/smic/include/smic_dhl_trace_mod_smic_utmd.json 
+COMP_TRACE_DEFS_MODEM += custom/service/sbp/sbp_trc_mod_sbp_utmd.json 
+COMP_TRACE_DEFS_MODEM += driver/audio/med/common/include/med_trc_mod_med_utmd.json
+COMP_TRACE_DEFS_MODEM += protocol/layer4/l4/uem/include/uem_trc_mod_uem_utmd.json
+COMP_TRACE_DEFS_MODEM += custom/protocol/common/ps/custom_sml_trc_utmd.json
+
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  ifeq ($(strip $(WIFI_LTE_DPP_SUPPORT)),TRUE)
+    COMP_TRACE_DEFS_MODEM += middleware/hif/gmmgr/include/gmmgr_trace_mod_gmmgr_utmd.json
+  endif
+endif
+
+ifeq ($(strip $(ISP_SUPPORT)),TRUE)
+  COMP_TRACE_DEFS_MODEM += driver/drv/include/drv_trc_mod_cal_utmd.json 
+endif
+
+COMP_TRACE_DEFS_MODEM += driver/drv/include/drv_trc_mod_uart_1_hisr_utmd.json driver/drv/include/drv_trc_mod_msdc_hisr_utmd.json driver/drv/include/drv_trc_mod_rtc_hisr_utmd.json driver/drv/include/drv_trc_mod_ppp_hw_utmd.json 
+COMP_TRACE_DEFS_MODEM += driver/dp_engine/dp_engine_trc_mod_dp_engine_utmd.json 
+COMP_TRACE_DEFS_MODEM += middleware/meta/ft/inc/ft_trace_def_mod_ft_utmd.json 
+COMP_TRACE_DEFS_MODEM += interface/driver/storage/sim/sim_drv_trc_mod_sim_drv_utmd.json 
+COMP_TRACE_DEFS_MODEM += service/fs/common/include/fs_trc_mod_fs_utmd.json 
+COMP_TRACE_DEFS_MODEM += interface/driver/sys_drv/system_trc_mod_system_utmd.json 
+
+ifeq ($(filter L1_SIM,$(COM_DEFS)),)
+  COMP_TRACE_DEFS_MODEM += driver/devdrv/log_seq/inc/logseq_trc_mod_ls_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/sleep_drv/internal/inc/sleep_drv_trc_mod_ostd_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/sleep_drv/internal/inc/sleep_drv_trc_mod_mdtopsm_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/sleep_drv/internal/inc/sleep_drv_trc_mod_sleepdrv_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/dvfs_drv/common/md97/ptp_trc_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/tfwk_drv/common/tfwk_trc_utmd.json
+else ifneq ($(filter __DUMMY_L1_ON_TARGET_4G5G__,$(COM_DEFS)),)
+  COMP_TRACE_DEFS_MODEM += driver/devdrv/log_seq/inc/logseq_trc_mod_ls_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/sleep_drv/internal/inc/sleep_drv_trc_mod_ostd_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/sleep_drv/internal/inc/sleep_drv_trc_mod_mdtopsm_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/sleep_drv/internal/inc/sleep_drv_trc_mod_sleepdrv_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/dvfs_drv/common/md97/ptp_trc_utmd.json
+  COMP_TRACE_DEFS_MODEM += driver/tfwk_drv/common/tfwk_trc_utmd.json
+endif
+
+COMP_TRACE_DEFS_MODEM += interface/driver/dpcopro/dpc_dump_trace_mod_dpc_utmd.json 
+COMP_TRACE_DEFS_MODEM += driver/devdrv/i2c/inc/drv_i2c_trace_mod_i2c_utmd.json 
+L1_COMP_TRACE_DEFS_MODEM += l1/gl1/common/l1a_trace_mod_l1_utmd.json 
+L1_COMP_TRACE_DEFS_MODEM += service/sst/include/SST_trc_mod_sst_common_utmd.json 
+L1_COMP_TRACE_DEFS_MODEM += driver/devdrv/trace/devdrv_trace_mod_devdrv_utmd.json 
+L1_COMP_TRACE_DEFS_MODEM += service/sst/include/ex_trc_mod_ex_log_utmd.json 
+L1_COMP_TRACE_DEFS_MODEM += l1/interface/el1/ul1c_trc.h
+L1_COMP_TRACE_DEFS_MODEM += l1/ul1/common/ul1a_trc_mod_ul1_utmd.json 
+
+ifneq ($(filter __DHL_V2_ENABLE__,$(COM_DEFS)),) # DHL2.0
+  L1_COMP_TRACE_DEFS_MODEM += service/dhl/v2/local_inc/dhl_trace_def_mod_dhl_reader_utmd.json service/dhl/v2/local_inc/dhl_trace_def_mod_dhl_utmd.json service/pmc/local_inc/icd_trace_def_mod_icd_utmd.json service/dhl/v2/local_inc/dhl_trace_def_mod_dhl_ut_utmd.json 
+else # DHL1.0
+  ifeq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      L1_COMP_TRACE_DEFS_MODEM += service/dhl/v1/local_inc/dhl_trace_def_mod_dhl_sp_reader_utmd.json 
+    endif
+  endif
+  L1_COMP_TRACE_DEFS_MODEM += service/dhl/v1/local_inc/dhl_trace_def_mod_dhl_reader_utmd.json service/dhl/v1/local_inc/dhl_trace_def_mod_dhl_utmd.json 
+endif
+
+# *************************************************************************
+# defined by rules
+# *************************************************************************
+ifeq ($(strip $(MD_TCPIP_SUPPORT)),TRUE)
+COMP_TRACE_DEFS_MODEM += service/nucleus_tcpip_v3/local_inc/mod_tcpip_trc_mod_stkbrg_utmd.json 
+COMP_TRACE_DEFS_MODEM += service/nucleus_tcpip_v3/local_inc/mod_ipc_trc_mod_stkdrv_utmd.json 
+COMP_TRACE_DEFS_MODEM += service/nal/nucleus/include/mod_nal_trc_mod_naldbg_utmd.json 
+COMP_TRACE_DEFS_MODEM += service/nal/monitor/include/nal_monitor_trc_mod_nalmon_utmd.json
+COMP_TRACE_DEFS_MODEM += service/nal/dns/include/nal_dns_trc_mod_nal_dns_utmd.json
+COMP_TRACE_DEFS_MODEM += service/nal/rsra/inc/rsra_trc_mod_rsra_utmd.json
+endif
+
+ifeq ($(strip $(DHL_SUPPORT)),TRUE)
+  ifneq ($(filter __DHL_V2_ENABLE__,$(COM_DEFS)),) # DHL2.0
+    COMP_TRACE_DEFS_MODEM += service/dhl/v2/local_inc/dhl_trace_def_mod_dhl_reader_utmd.json service/dhl/v2/local_inc/dhl_trace_def_mod_dhl_utmd.json service/pmc/local_inc/icd_trace_def_mod_icd_utmd.json service/dhl/v2/local_inc/dhl_trace_def_mod_dhl_ut_utmd.json 
+  else # DHL1.0
+    ifeq ($(strip $(SMART_PHONE_CORE)),ANDROID_MODEM)
+      ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+        COMP_TRACE_DEFS_MODEM += service/dhl/v1/local_inc/dhl_trace_def_mod_dhl_sp_reader_utmd.json
+      endif
+    endif
+    COMP_TRACE_DEFS_MODEM += service/dhl/v1/local_inc/dhl_trace_def_mod_dhl_reader_utmd.json service/dhl/v1/local_inc/dhl_trace_def_mod_dhl_utmd.json 
+  endif
+else
+  COMP_TRACE_DEFS_MODEM += service/tst/local_inc/tst_trace.h
+endif
+
+ifeq ($(strip $(EL1_IT)),TRUE)
+    COMP_TRACE_DEFS_MODEM += l1/ll1/include/mll1_trc_mod_mll1_utmd.json 
+endif
+
+ifeq ($(strip $(BIP_SUPPORT)),TRUE)
+  COMP_TRACE_DEFS_MODEM += protocol/bip/include/bip_trace_mod_bip_net_mgr_utmd.json protocol/bip/include/bip_trace_mod_bip_cmd_hdr_utmd.json protocol/bip/include/bip_trace_mod_bip_ds_mgr_utmd.json protocol/bip/include/bip_trace_mod_bip_agent_utmd.json protocol/bip/include/bip_trace_mod_bip_conn_mgr_utmd.json protocol/bip/include/bip_trace_mod_bip_sim_mgr_utmd.json protocol/bip/include/bip_trace_mod_bip_utmd.json
+  ifneq ($(filter __BIP_TEST_SUPPORT__,$(COM_DEFS)),)
+    COMP_TRACE_DEFS_MODEM += protocol/bip/include/bip_trace_mod_bip_test_utmd.json 
+  endif
+endif
+
+ifeq ($(strip $(XCAP_SUPPORT)),TRUE)
+  COMP_TRACE_DEFS_MODEM      += protocol/xcap/common/include/xcap_trace_mod_xcap_client_utmd.json protocol/xcap/common/include/xcap_trace_mod_xcap_cm_utmd.json protocol/xcap/common/include/xcap_trace_mod_xcap_gba_utmd.json protocol/xcap/common/include/xcap_trace_mod_xcap_http_connection_utmd.json protocol/xcap/common/include/xcap_trace_mod_xcap_config_utmd.json protocol/xcap/common/include/xcap_trace_mod_xcap_utmd.json protocol/xcap/common/include/xcap_trace_mod_xcap_sim_mgr_utmd.json
+  ifneq ($(filter __XCAP_TEST_SUPPORT__,$(COM_DEFS)),)
+    COMP_TRACE_DEFS_MODEM    += protocol/xcap/common/include/xcap_trace_mod_xcap_test_utmd.json
+  endif
+endif
+
+ifeq ($(strip $(HTTP_TLS_SUPPORT)),TRUE)
+COMP_TRACE_DEFS_MODEM += protocol/inet_protocols/http_tls/http/inc/http_trace_mod_http_utmd.json
+COMP_TRACE_DEFS_MODEM += protocol/inet_protocols/http_tls/security/tls/include/tls_trace_mod_tls_utmd.json
+endif
+
+ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  ifneq ($(ORIGINAL_FLAVOR),BASIC_HIF)
+    ifeq ($(strip $(KPALV_SUPPORT)),TRUE)
+      COMP_TRACE_DEFS_MODEM      += middleware/kpalv/include/kpalv_trace_mod_kpalv_utmd.json
+    endif
+  endif
+endif
+
+# PS TRACE FILES
+ifneq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+  ifneq ($(filter __LTE_PHY_TEST__,$(COM_DEFS)),)
+    COMP_TRACE_DEFS_MODEM += l1/el1/el1c_pub/$(MD_VER_FOLDER)/trc/el1_trc_mod_el1_utmd.json  \
+                             l1/el1/el1c_pub/$(MD_VER_FOLDER)/trc/el1_mpc_trc_mod_el1_mpc_utmd.json
+  else
+    COMP_TRACE_DEFS_MODEM += l1/el1/el1c_pub/$(MD_VER_FOLDER)/trc/el1_trc_mod_el1_utmd.json  \
+                             l1/el1/el1c_pub/$(MD_VER_FOLDER)/trc/el1_mpc_trc_mod_el1_mpc_utmd.json
+  endif
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6295)
+    COMP_TRACE_DEFS_MODEM += protocol/ddm/psilib/include/psilib_trc_mod_psilib_utmd.json 
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+    COMP_TRACE_DEFS_MODEM += protocol/ddm/psilib/include/psilib_trc_mod_psilib_utmd.json 
+endif
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+    COMP_TRACE_DEFS_MODEM += protocol/ddm/psilib/include/psilib_trc_mod_psilib_utmd.json 
+endif
+
+ifneq ($(filter TRUE,$(MODIS_CONFIG) $(UE_SIMULATOR)),)
+  COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise/include/gise_trc_mod_gise_fdd_utmd.json  \
+                           protocol/3g/urr/urr_fdd/lcsce/include/lcsce_trc_mod_lcsce_fdd_utmd.json  \
+                           protocol/3g/urr/urr_fdd/las/include/lurr_trc_mod_lurr_fdd_utmd.json  \
+                           protocol/3g/urr/urr_fdd/lmeme/include/lmeme_trc_mod_lmeme_fdd_utmd.json  \
+                           protocol/3g/urr/urr_tdd/lcsce/include/lcsce_trc_mod_lcsce_tdd_utmd.json  \
+                           protocol/3g/urr/urr_tdd/las/include/lurr_trc_mod_lurr_tdd_utmd.json  \
+                           protocol/3g/urr/urr_tdd/lmeme/include/lmeme_trc_mod_lmeme_tdd_utmd.json  \
+                           protocol/3g/urr/urr_tdd/lrrce/include/lrrce_trc_mod_lrrce_tdd_utmd.json  \
+                           protocol/3g/ul2/ul2_tdd/lurlc/include/lurlc_trc_mod_lurlc_tdd_utmd.json  \
+                           protocol/3g/ul2/ul2_tdd/lumac/include/lumac_trc_mod_lumac_tdd_utmd.json 
+
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+    COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise_tdd/include/gise_trc_mod_gise_tdd_utmd.json 
+  endif
+else
+  COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise/include/gise_trc_mod_gise_fdd_utmd.json  \
+                           protocol/3g/urr/urr_fdd/lcsce/include/lcsce_trc_mod_lcsce_fdd_utmd.json  \
+                           protocol/3g/urr/urr_fdd/las/include/lurr_trc_mod_lurr_fdd_utmd.json  \
+                           protocol/3g/urr/urr_fdd/lmeme/include/lmeme_trc_mod_lmeme_fdd_utmd.json  \
+                           protocol/3g/urr/urr_fdd/common/dbme/include/dbme_trc_mod_db_fdd_utmd.json  \
+                           protocol/3g/urr/urr_fdd/common/include/adr_trc_mod_adr_fdd_utmd.json  \
+                           protocol/3g/urr/urr_tdd/lcsce/include/lcsce_trc_mod_lcsce_tdd_utmd.json  \
+                           protocol/3g/urr/urr_tdd/las/include/lurr_trc_mod_lurr_tdd_utmd.json  \
+                           protocol/3g/urr/urr_tdd/lmeme/include/lmeme_trc_mod_lmeme_tdd_utmd.json  \
+                           protocol/3g/urr/urr_tdd/lrrce/include/lrrce_trc_mod_lrrce_tdd_utmd.json  \
+                           protocol/3g/ul2/ul2_tdd/lurlc/include/lurlc_trc_mod_lurlc_tdd_utmd.json  \
+                           protocol/3g/ul2/ul2_tdd/lumac/include/lumac_trc_mod_lumac_tdd_utmd.json 
+
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+    COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise_tdd/include/gise_trc_mod_gise_tdd_utmd.json 
+    COMP_TRACE_DEFS_MODEM += protocol/3g/urr/urr_tdd/common/dbme/include/dbme_trc_mod_db_tdd_utmd.json  \
+                             protocol/3g/urr/urr_tdd/common/include/adr_trc_mod_adr_tdd_utmd.json 
+  endif
+endif
+
+ifeq ($(strip $(IRDA_SUPPORT)),TRUE)
+    COMP_TRACE_DEFS_MODEM += protocol/ircomm/include/ircomm_trc.h \
+                             protocol/obex/include/obex_trc.h
+endif
+
+ifneq ($(strip $(TTY_CONSOLE_TRACE_ENABLED)),1)
+  COMP_TRACE_DEFS_MODEM += driver/tty/inc/tty_trace_mod_tty_utmd.json 
+endif
+
+ifneq ($(filter TRUE,$(MODIS_CONFIG) $(UE_SIMULATOR)),)
+  COMP_TRACE_DEFS_MODEM += protocol/3g/urr/urr_fdd/lcsce/include/lcsce_trc_mod_lcsce_fdd_utmd.json  \
+                            protocol/3g/urr/urr_fdd/las/include/lurr_trc_mod_lurr_fdd_utmd.json  \
+                            protocol/3g/urr/urr_fdd/lmeme/include/lmeme_trc_mod_lmeme_fdd_utmd.json  \
+                            protocol/3g/urr/urr_tdd/lcsce/include/lcsce_trc_mod_lcsce_tdd_utmd.json  \
+                            protocol/3g/urr/urr_tdd/las/include/lurr_trc_mod_lurr_tdd_utmd.json  \
+                            protocol/3g/urr/urr_tdd/lmeme/include/lmeme_trc_mod_lmeme_tdd_utmd.json  \
+                            protocol/3g/urr/urr_tdd/lrrce/include/lrrce_trc_mod_lrrce_tdd_utmd.json  \
+                            protocol/3g/ul2/ul2_tdd/lurlc/include/lurlc_trc_mod_lurlc_tdd_utmd.json  \
+                            protocol/3g/ul2/ul2_tdd/lumac/include/lumac_trc_mod_lumac_tdd_utmd.json 
+else
+  COMP_TRACE_DEFS_MODEM += protocol/3g/urr/urr_fdd/lcsce/include/lcsce_trc_mod_lcsce_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/las/include/lurr_trc_mod_lurr_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/lmeme/include/lmeme_trc_mod_lmeme_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/common/dbme/include/dbme_trc_mod_db_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/common/include/adr_trc_mod_adr_fdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/lcsce/include/lcsce_trc_mod_lcsce_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/las/include/lurr_trc_mod_lurr_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/lmeme/include/lmeme_trc_mod_lmeme_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/lrrce/include/lrrce_trc_mod_lrrce_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/lurlc/include/lurlc_trc_mod_lurlc_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/lumac/include/lumac_trc_mod_lumac_tdd_utmd.json 
+
+  ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+    COMP_TRACE_DEFS_MODEM += protocol/3g/urr/urr_tdd/common/dbme/include/dbme_trc_mod_db_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/common/include/adr_trc_mod_adr_tdd_utmd.json 
+  endif
+endif
+
+ifeq ($(strip $(IMS_SUPPORT)),TRUE)
+  COMP_TRACE_DEFS_MODEM += protocol/imc/sub_imc/include/imc_trc_mod_imc_utmd.json 
+  COMP_TRACE_DEFS_MODEM += protocol/layer4/sdm/include/sdm_trc_mod_sdm_utmd.json 
+  COMP_TRACE_DEFS_MODEM += protocol/imc/imcsms/include/imcsms_trc_mod_imcsms_utmd.json 
+  COMP_TRACE_DEFS_MODEM += protocol/lte_csr/csr/inc/ltecsr_trc_mod_ltecsr_utmd.json 
+  COMP_TRACE_DEFS_MODEM += protocol/ims/stack/src/include/imsstack_trc_mod_ims_stack_utmd.json
+  COMP_TRACE_DEFS_MODEM += protocol/ims/ua/src/include/imsua_trc_mod_imsua_utmd.json
+  COMP_TRACE_DEFS_MODEM += protocol/ims/imcb/sub_imcb/include/imcb_trc_mod_imcb_utmd.json
+endif
+
+# IDC
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(filter L1S,$(TEST_LOAD_TYPE)),)
+    ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+      COMP_TRACE_DEFS_MODEM += l1/idc/include/l1_idc_ps_trc_utmd.json
+    endif
+  endif
+endif
+
+# GEMINI
+ifdef GEMINI
+  ifneq ($(strip $(GEMINI)),FALSE)
+    COMP_TRACE_DEFS_MODEM += l1/gl1/common/l1a_trace_mod_l1_utmd.json 
+  endif
+endif
+
+COMP_TRACE_DEFS_MODEM += driver/audio/src/v1/inc/l1sp_trc_mod_l1sp_utmd.json 
+COMP_TRACE_DEFS_MODEM += driver/devdrv/idc/inc/idc_trace_mod_idc_utmd.json
+
+ifdef IC_TEST_TYPE
+  ifneq ($(strip $(IC_TEST_TYPE)),NONE)
+    ifeq ($(findstring _SLT,$(IC_TEST_TYPE)),_SLT)
+      COMP_TRACE_DEFS_MODEM += driver/drvtest/slt/inc/slt_trace_mod_slt_utmd.json 
+    endif
+  endif
+endif
+
+ifeq ($(strip $(HIF_USB_SUPPORT)),TRUE)
+  ifeq ($(strip $(HIF_USB30_SUPPORT)),TRUE)
+    COMP_TRACE_DEFS_MODEM += driver/hif/inc/hif_usbdev/hif_u3dev/u3dev_trace_mod_hif_usb_hisr_utmd.json 
+  else
+    COMP_TRACE_DEFS_MODEM += driver/hif/inc/hif_usbdev/hif_u2dev/u2dev_trace_mod_hifusb_utmd.json 
+  endif
+endif
+
+ifeq ($(strip $(HIF_PCIE_SUPPORT)),TRUE)
+    COMP_TRACE_DEFS_MODEM += driver/hif/inc/hif_pciedev/pcie_drv_trc_mod_pcie_hisr_utmd.json
+endif
+
+ifeq ($(strip $(HIF_MHCCIF_SUPPORT)),TRUE)
+    COMP_TRACE_DEFS_MODEM += driver/hif/inc/hif_mhccifdev/mhccif_drv_trc_mod_mhccif_hisr_utmd.json   
+endif
+
+ifneq ($(call Upper,$(strip $(EUTRAN_MODE_SUPPORT))),NONE)
+  COMP_TRACE_DEFS_MODEM += protocol/nas_multimode/nwsel/include/nwsel_trc_mod_nwsel_utmd.json 
+  COMP_TRACE_DEFS_MODEM += interface/protocol/nas_multimode/upcm/upcm_trc_mod_upcm_utmd.json 
+  COMP_TRACE_DEFS_MODEM += protocol/as_multimode/ratdm/cmn_sig/include/ratdm_trc_mod_ratdm_utmd.json 
+  COMP_TRACE_DEFS_MODEM += protocol/nas_multimode/gmss/include/gmss_trc_mod_gmss_utmd.json 
+   # TFT library trace
+  COMP_TRACE_DEFS_MODEM += protocol/nas_multimode/tftlib/tftlib_dhl_trace_mod_tftlib_utmd.json 
+  # SMIC trace
+  COMP_TRACE_DEFS_MODEM += protocol/nas_multimode/smic/include/smic_dhl_trace_mod_smic_utmd.json   
+  # DSPFM trace
+  COMP_TRACE_DEFS_MODEM += service/sys_svc/dspfm_lte/inc/dspfm_trace_mod_dspfm_utmd.json 
+  ifeq ($(strip $(LPP_SUPPORT)),CONTROL_PLANE)
+    COMP_TRACE_DEFS_MODEM += protocol/agps/lpp/include/lpp_trc_mod_lpp_ext_utmd.json protocol/agps/lpp/include/lpp_trc_mod_lpp_utmd.json 
+  endif
+endif
+
+ifdef AGPS_SUPPORT
+  ifneq ($(strip $(AGPS_SUPPORT)), NONE)
+    ifeq ($(strip $(AGPS_SUPPORT)), CP_AGPS_AGLONASS)
+      COMP_TRACE_DEFS_MODEM += protocol/agps/rrlp/include/rrlp_trc_mod_rrlp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/uagps_cp/include/uagps_cp_trc_mod_uagps_cp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/common/include/uagps_trc_mod_uagps_utmd.json 
+    endif
+    ifeq ($(strip $(AGPS_SUPPORT)), CP_AGPS_AGLONASS_ABDS)
+      COMP_TRACE_DEFS_MODEM += protocol/agps/rrlp/include/rrlp_trc_mod_rrlp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/uagps_cp/include/uagps_cp_trc_mod_uagps_cp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/common/include/uagps_trc_mod_uagps_utmd.json 
+    endif
+    ifeq ($(strip $(AGPS_SUPPORT)), CP_AGPS_ABDS)
+      COMP_TRACE_DEFS_MODEM += protocol/agps/rrlp/include/rrlp_trc_mod_rrlp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/uagps_cp/include/uagps_cp_trc_mod_uagps_cp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/common/include/uagps_trc_mod_uagps_utmd.json 
+    endif
+
+    ifeq ($(strip $(AGPS_SUPPORT)), CP_AGPS_AGLONASS)
+      COMP_TRACE_DEFS_MODEM += protocol/agps/rrlp/include/rrlp_trc_mod_rrlp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/uagps_cp/include/uagps_cp_trc_mod_uagps_cp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/common/include/uagps_trc_mod_uagps_utmd.json 
+    endif
+    ifeq ($(strip $(AGPS_SUPPORT)), CP_AGPS_AGLONASS_ABDS)
+      COMP_TRACE_DEFS_MODEM += protocol/agps/rrlp/include/rrlp_trc_mod_rrlp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/uagps_cp/include/uagps_cp_trc_mod_uagps_cp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/common/include/uagps_trc_mod_uagps_utmd.json 
+    endif
+    ifeq ($(strip $(AGPS_SUPPORT)), CP_AGPS_ABDS)
+      COMP_TRACE_DEFS_MODEM += protocol/agps/rrlp/include/rrlp_trc_mod_rrlp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/uagps_cp/include/uagps_cp_trc_mod_uagps_cp_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/common/include/uagps_trc_mod_uagps_utmd.json 
+    endif
+
+    COMP_TRACE_DEFS_MODEM += protocol/agps/rrlp/include/rrlp_trc_mod_rrlp_utmd.json 
+    COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/uagps_cp/include/uagps_cp_trc_mod_uagps_cp_utmd.json 
+    COMP_TRACE_DEFS_MODEM += protocol/agps/ulcs/common/include/uagps_trc_mod_uagps_utmd.json 
+  endif
+endif
+
+ifdef IPSEC_SUPPORT
+  ifneq ($(strip $(IPSEC_SUPPORT)),FALSE)
+    COMP_TRACE_DEFS_MODEM += service/security/ike/include/ike_trc.h
+  endif
+endif
+
+ifneq ($(filter __MDVSIM__,$(COM_DEFS)),)
+  COMP_TRACE_DEFS_MODEM += protocol/keygen/include/keygen_trc_mod_keygen_utmd.json 
+endif
+
+ifneq ($(call Upper,$(strip $(FIVEG_MODE_SUPPORT))),NONE)
+  COMP_TRACE_DEFS_MODEM += protocol/interface/vgnas/trace/vgmm_trc_mod_vgmm_utmd.json \
+                           protocol/interface/vgnas/trace/vgsm_trc_mod_vgsm_utmd.json \
+                           protocol/upds/include/upds_trc_mod_upds_utmd.json
+endif
+
+ifdef MCIF_SUPPORT #MD Consys Interface
+  ifeq ($(strip $(MCIF_SUPPORT)), TRUE)
+    COMP_TRACE_DEFS_MODEM += service/mcif/main/inc/mcif_trace_utmd.json
+
+    ifdef MCIF_WIFI_SUPPORT #MD Consys Interface - WiFi Service
+      ifeq ($(strip $(MCIF_WIFI_SUPPORT)), TRUE)
+        COMP_TRACE_DEFS_MODEM += service/mcif/wsvc/inc/wsvc_trace_utmd.json
+        COMP_TRACE_DEFS_MODEM += service/mcif/wfpm/inc/wfpm_trc_utmd.json
+        COMP_TRACE_DEFS_MODEM += service/mcif/wrpm/inc/wrpm_trace_utmd.json
+        COMP_TRACE_DEFS_MODEM += service/ethsvc/inc/ethsvc_trc_mod_ethsvc_utmd.json
+      endif #MCIF_WIFI_SUPPORT = TRUE
+    endif
+
+    #
+    # Low layer component
+    #
+  endif #MCIF_SUPPORT = TRUE
+endif
+
+ifneq ($(call Upper,$(strip $(FIVEG_MODE_SUPPORT))),NONE)
+  COMP_TRACE_DEFS_MODEM += protocol/interface/vgnas/trace/vgmm_trc_mod_vgmm_utmd.json \
+                           protocol/interface/vgnas/trace/vgsm_trc_mod_vgsm_utmd.json \
+                           protocol/upds/include/upds_trc_mod_upds_utmd.json
+endif
+
+ifdef SUBMARINE_SUPPORT
+  ifeq ($(strip $(SUBMARINE_SUPPORT)), TRUE)
+    COMP_TRACE_DEFS_MODEM += service/wifi_proxy/inc/wifi_proxy_trace_mod_wifi_proxy_utmd.json
+    COMP_TRACE_DEFS_MODEM  += service/ipsec/inc/ipsec_trc_utmd.json
+    COMP_TRACE_DEFS_MODEM  += service/crypto/inc/crypto_trc_mod_crptbrg_utmd.json
+    COMP_TRACE_DEFS_MODEM += middleware/wtunnel/wtunnel_trace_mod_wtunnel_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/dispatcher/include/dispatcher_trace_mod_dispatcher_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/eap/eap_trc_mod_eap_utmd.json
+    COMP_TRACE_DEFS_MODEM += service/cert/include/cert_trc_mod_cert_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/imsm/include/imsm_trace_mod_imsm_utmd.json
+    COMP_TRACE_DEFS_MODEM += service/wlc/inc/wlc_trc_mod_utmd.json
+    COMP_TRACE_DEFS_MODEM += service/wlc/inc/intctrl_trc_mod_utmd.json
+  endif
+endif
+
+ifdef WIFIPROXY_SUPPORT
+  ifeq ($(strip $(WIFIPROXY_SUPPORT)), TRUE)
+    COMP_TRACE_DEFS_MODEM += service/wifi_proxy/inc/wifi_proxy_trace_mod_wifi_proxy_utmd.json
+  endif
+endif
+
+# *************************************************************************
+# Not BASIC load
+# *************************************************************************
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+
+  ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+      COMP_TRACE_DEFS_MODEM += l1/ll1/include/mll1_trc_mod_mll1_utmd.json 
+  else
+    ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+      COMP_TRACE_DEFS_MODEM += l1/ll1/include/mll1_trc_mod_mll1_utmd.json 
+    endif
+  endif
+
+endif
+
+# *************************************************************************
+# Not L1S load
+# *************************************************************************
+
+# *************************************************************************
+# L1S or BASIC load
+# *************************************************************************
+ifneq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+
+  ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+        COMP_TRACE_DEFS_MODEM += protocol/smt/l1s/dummyps/include/internal/dps_trc_mod_dummympal_utmd.json  \
+                                 driver/peripheral/inc/bmt_trc_mod_bmt_utmd.json  \
+                                 protocol/layer4/sim/include/sim_trc_mod_sim_utmd.json 
+    endif
+
+    ifeq ($(strip $(NVRAM_SUPPORT)),TRUE)
+      COMP_TRACE_DEFS_MODEM += service/nvram/include/nvram_trc_mod_nvram_utmd.json 
+    endif
+
+    ifeq ($(strip $(MCF_SUPPORT)),TRUE)
+      COMP_TRACE_DEFS_MODEM += service/mcf/include/mcf_trace_mod_mcf_utmd.json 
+    endif
+  endif
+
+  COMP_TRACE_DEFS_MODEM += l1/gl1/common/l1a_trace_mod_l1_utmd.json 
+
+  ifeq ($(strip $(L1_WCDMA)),TRUE)
+      COMP_TRACE_DEFS_MODEM += l1/ul1/common/udps_trc_mod_urr_fdd_utmd.json 
+  endif
+
+  ifeq ($(strip $(L1_GPRS)),TRUE)
+    ifeq ($(strip $(L1_WCDMA)),TRUE)
+      COMP_TRACE_DEFS_MODEM += l1/ul1/common/ul1a_trc_mod_ul1_utmd.json 
+    endif
+  endif
+
+endif # end of L1S or BASIC load
+
+# *************************************************************************
+# Not L1S or BASIC load
+# *************************************************************************
+ifeq ($(filter L1S BASIC,$(TEST_LOAD_TYPE)),)
+
+  ifeq ($(filter TRUE,$(MODIS_CONFIG) $(UE_SIMULATOR)),)
+    #COMP_TRACE_DEFS_MODEM += driver/audio/src/v1/inc/l1sp_trc_l1core.h
+  endif
+
+  ifneq ($(strip $(L1_UMTS)),TRUE)
+    COMP_TRACE_DEFS_MODEM += l1/gl1/common/l1a_trace_mod_l1_utmd.json 
+    COMP_TRACE_DEFS_MODEM += protocol/nas/mm/common/include/mm_trc_mod_mm_utmd.json  \
+                             protocol/2g/gas/common/include/rr_trc_mod_rrm_fdd_utmd.json  \
+                             protocol/2g/gas/lapdm/include/lapdm_trc_mod_lapdm_fdd_utmd.json  \
+                             protocol/2g/gas/rlc/include/rlc_trc_mod_reasm_fdd_utmd.json protocol/2g/gas/rlc/include/rlc_trc_mod_rlc_fdd_utmd.json  \
+                             protocol/2g/gas/mac/include/mac_trc_mod_mac_fdd_utmd.json  \
+                             protocol/as_multimode/ratcm/include/ratcm_trc_mod_ratcm_utmd.json  \
+                             protocol/as_multimode/ratdm/cmn_sig/include/ratdm_trc_mod_ratdm_utmd.json  \
+                             protocol/2g/gas_smp/include/rr_smp_trc_mod_rr_smp_utmd.json 
+
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COMP_TRACE_DEFS_MODEM += protocol/2g/gas_tdd/common/include/rr_trc_mod_rrm_tdd_utmd.json  \
+                               protocol/2g/gas_tdd/lapdm/include/lapdm_trc_mod_lapdm_tdd_utmd.json  \
+                               protocol/2g/gas_tdd/rlc/include/rlc_trc_mod_rlc_tdd_utmd.json protocol/2g/gas_tdd/rlc/include/rlc_trc_mod_reasm_tdd_utmd.json  \
+                               protocol/2g/gas_tdd/mac/include/mac_trc_mod_mac_tdd_utmd.json  \
+                               protocol/2g/gas_smp_tdd/include/rr_smp_trc_mod_rr_smp_tdd_utmd.json 
+    endif
+    ifneq ($(filter TRUE,$(MODIS_CONFIG) $(UE_SIMULATOR)),)
+        COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise/include/gise_trc_mod_gise_fdd_utmd.json 
+      ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+        COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise_tdd/include/gise_trc_mod_gise_tdd_utmd.json 
+      endif
+    else
+      COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise/include/gise_trc_mod_gise_fdd_utmd.json 
+      ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+        COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise_tdd/include/gise_trc_mod_gise_tdd_utmd.json 
+      endif
+    endif
+
+    ifdef GEMINI
+      ifneq ($(strip $(GEMINI)),FALSE)
+        COMP_TRACE_DEFS_MODEM += protocol/as_multimode/rsva/rsvas/include/rsvas_trc_mod_rsvas_utmd.json  \
+                                 protocol/as_multimode/rsva/mspm/include/mspm_trc_mod_mspm_utmd.json 
+      endif
+    endif
+  else
+    ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+      COMP_TRACE_DEFS_MODEM += l1/gl1/common/l1a_trace_mod_l1_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/nas/mm/common/include/mm_trc_mod_mm_utmd.json  \
+                               protocol/2g/gas/common/include/rr_trc_mod_rrm_fdd_utmd.json  \
+                               protocol/2g/gas/lapdm/include/lapdm_trc_mod_lapdm_fdd_utmd.json  \
+                               protocol/2g/gas/rlc/include/rlc_trc_mod_reasm_fdd_utmd.json protocol/2g/gas/rlc/include/rlc_trc_mod_rlc_fdd_utmd.json  \
+                               protocol/2g/gas/mac/include/mac_trc_mod_mac_fdd_utmd.json  \
+                               protocol/as_multimode/ratcm/include/ratcm_trc_mod_ratcm_utmd.json  \
+                               protocol/as_multimode/ratdm/cmn_sig/include/ratdm_trc_mod_ratdm_utmd.json  \
+                               protocol/2g/gas_smp/include/rr_smp_trc_mod_rr_smp_utmd.json 
+
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COMP_TRACE_DEFS_MODEM += protocol/2g/gas_tdd/common/include/rr_trc_mod_rrm_tdd_utmd.json  \
+                               protocol/2g/gas_tdd/lapdm/include/lapdm_trc_mod_lapdm_tdd_utmd.json  \
+                               protocol/2g/gas_tdd/rlc/include/rlc_trc_mod_rlc_tdd_utmd.json protocol/2g/gas_tdd/rlc/include/rlc_trc_mod_reasm_tdd_utmd.json  \
+                               protocol/2g/gas_tdd/mac/include/mac_trc_mod_mac_tdd_utmd.json  \
+                               protocol/2g/gas_smp_tdd/include/rr_smp_trc_mod_rr_smp_tdd_utmd.json 
+    endif
+      ifneq ($(filter TRUE,$(MODIS_CONFIG) $(UE_SIMULATOR)),)
+        COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise/include/gise_trc_mod_gise_fdd_utmd.json 
+        ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+          COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise_tdd/include/gise_trc_mod_gise_tdd_utmd.json 
+        endif
+      else
+        COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise/include/gise_trc_mod_gise_fdd_utmd.json 
+        ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+          COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise_tdd/include/gise_trc_mod_gise_tdd_utmd.json 
+        endif
+      endif
+    else
+      COMP_TRACE_DEFS_MODEM += l1/gl1/common/l1a_trace_mod_l1_utmd.json 
+      COMP_TRACE_DEFS_MODEM += protocol/mm/common/include/mm_trc.h \
+                               protocol/2g/gas/include/rr_trc.h \
+                               protocol/2g/gas/lapdm/include/lapdm_trc_mod_lapdm_fdd_utmd.json  \
+                               protocol/2g/gas/rlc/include/rlc_trc_mod_reasm_fdd_utmd.json protocol/2g/gas/rlc/include/rlc_trc_mod_rlc_fdd_utmd.json  \
+                               protocol/2g/gas/mac/include/mac_trc_mod_mac_fdd_utmd.json  \
+                               protocol/2g/gas/rrm/include/rrm_trc.h \
+                               protocol/2g/gas_smp/include/rr_smp_trc_mod_rr_smp_utmd.json 
+      ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+        COMP_TRACE_DEFS_MODEM += protocol/2g/gas_tdd/include/rr_trc.h \
+                                 protocol/2g/gas_tdd/lapdm/include/lapdm_trc_mod_lapdm_tdd_utmd.json  \
+                                 protocol/2g/gas_tdd/rlc/include/rlc_trc_mod_rlc_tdd_utmd.json protocol/2g/gas_tdd/rlc/include/rlc_trc_mod_reasm_tdd_utmd.json  \
+                                 protocol/2g/gas_tdd/mac/include/mac_trc_mod_mac_tdd_utmd.json  \
+                                 protocol/2g/gas_tdd/rrm/include/rrm_trc.h \
+                                 protocol/2g/gas_smp_tdd/include/rr_smp_trc_mod_rr_smp_tdd_utmd.json 
+      endif
+
+      ifneq ($(filter TRUE,$(MODIS_CONFIG) $(UE_SIMULATOR)),)
+        COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise/include/gise_trc_mod_gise_fdd_utmd.json 
+        ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+          COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise_tdd/include/gise_trc_mod_gise_tdd_utmd.json 
+        endif
+      else
+        COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise/include/gise_trc_mod_gise_fdd_utmd.json 
+        ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+          COMP_TRACE_DEFS_MODEM += protocol/2g/las/gise_tdd/include/gise_trc_mod_gise_tdd_utmd.json 
+        endif
+      endif
+    endif
+  endif
+
+  COMP_TRACE_DEFS_MODEM += protocol/layer4/sim/include/sim_trc_mod_sim_utmd.json 
+  COMP_TRACE_DEFS_MODEM += service/nvram/include/nvram_trc_mod_nvram_utmd.json  \
+                           service/mcf/include/mcf_trace_mod_mcf_utmd.json  \
+                           protocol/layer4/l4/smsal/include/smsal_trc_mod_smsal_utmd.json  \
+                           protocol/layer4/l4/phb/include/phb_trc_mod_phb_utmd.json  \
+                           protocol/layer4/l4/smu/include/smu_trc_mod_smu_utmd.json  \
+                           protocol/nas/cc-ss/ss/include/ciss_trc_mod_ciss_utmd.json  \
+                           protocol/nas/cc-ss/cc/include/cc_trc_mod_cc_utmd.json  \
+                           protocol/layer4/l4/csm/csm_trc_mod_csm_utmd.json  \
+                           protocol/nas_multimode/nwsel/include/nwsel_trc_mod_nwsel_utmd.json  \
+                           interface/protocol/nas_multimode/upcm/upcm_trc_mod_upcm_utmd.json  \
+                           protocol/interface/l4misc/l4_trc_mod_l4c_utmd.json  \
+                           protocol/nas/sms/include/sms_trc_mod_sms_utmd.json  \
+                           protocol/layer4/l4/rac/common/include/rac_trc_mod_rac_utmd.json  \
+                           protocol/layer4/l4/tcm/common/tcm_trc_mod_tcm_utmd.json  \
+                           protocol/layer4/l4/tcm/rat_tcm/inc/rat_tcm_trc_mod_rat_tcm_utmd.json  \
+                           protocol/nas_23g/data/l2r/include/l2r_trc_mod_l2r_utmd.json  \
+                           protocol/nas_23g/data/tdt/include/tdt_trc_mod_tdt_utmd.json  \
+                           protocol/nas_23g/data/rlp/include/rlp_trc_mod_rlp_utmd.json  \
+                           protocol/nas_23g/data/t30/include/t30_trc_mod_t30_utmd.json  \
+                           protocol/nas_23g/data/fa/include/fa_trc_mod_fa_utmd.json  \
+                           driver/peripheral/inc/bmt_trc_mod_bmt_utmd.json  \
+                           protocol/as_multimode/mrs/include/mrs_trc_mod_mrs_utmd.json  \
+                           protocol/layer4/l4/mbmsal/src/mbmsal_trc_mod_mbmsal_utmd.json  \
+                           protocol/nas_multimode/gmss/include/gmss_trc_mod_gmss_utmd.json  \
+                           protocol/layer4/atp/include/atp_trc_mod_atp_utmd.json  \
+                           protocol/layer4/l4/l4b/include/l4b_trc_mod_l4b_utmd.json  \
+                           protocol/layer4/l4/l4b/l4bcc/include/l4bcc_trc_mod_l4bcc_utmd.json  \
+                           protocol/layer4/l4/l4b/l4bnw/include/l4bnw_trc_mod_l4bnw_utmd.json  \
+                           protocol/layer4/l4/l4b/l4bpwr/include/l4bpwr_trc_mod_l4bpwr_utmd.json  \
+                           protocol/layer4/l4/l4b/l4bsat/include/l4bsat_trc_mod_l4bsat_utmd.json  \
+                           protocol/layer4/l4/l4b/l4bsim/include/l4bsim_trc_mod_l4bsim_utmd.json  \
+                           protocol/layer4/l4/l4b/l4bsms/include/l4bsms_trc_mod_l4bsms_utmd.json  \
+                           protocol/layer4/l4/l4b/l4bpdn/include/l4bpdn_trc_mod_l4bpdn_utmd.json  \
+                           protocol/layer4/l4/l4b/l4bss/include/l4bss_trc_mod_l4bss_utmd.json  \
+                           protocol/layer4/l4/l4b/l4bsbp/include/l4bsbp_trc_mod_l4bsbp_utmd.json  \
+                           protocol/layer4/l4/l4aps/include/l4aps_trc_mod_l4aps_utmd.json  \
+                           protocol/ddm/d2/include/d2_trc_d2rm_utmd.json protocol/ddm/d2/include/d2_trc_libmdfx_utmd.json protocol/ddm/d2/include/d2_trc_d2_utmd.json protocol/ddm/d2/include/d2_trc_d2at_utmd.json protocol/ddm/d2/include/d2_trc_d2pm_utmd.json protocol/ddm/d2/include/d2_trc_d2cm_utmd.json protocol/ddm/d2/include/d2_trc_d2am_utmd.json custom/protocol/common/ps/custom_d2_trc_utmd.json  \
+                           protocol/ddm/d2/include/d2_trc_d2ux_utmd.json \
+                           protocol/ddm/d2/include/d2_trc_d2apnb_utmd.json \
+                           protocol/ddm/d2/include/d2_trc_d2apnc_utmd.json \
+                           protocol/ddm/mod_ddm/include/ddm_trc_ddm_utmd.json  \
+                           protocol/simmngr/include/simmngr_trc_mod_simmngr_utmd.json  \
+                           protocol/iwlan/common/inc/iwlan_trc_mod_iwlan_utmd.json  \
+                           protocol/iwlan/common/inc/iwlan_wmob_trc_mod_iwlan_wmob_utmd.json  \
+                           protocol/iwlan/evhd/inc/iwlan_evhd_trc_mod_iwlan_evhd_utmd.json  \
+                           protocol/n3x/n3epc/src/n3epc_trc_mod_n3epc_utmd.json 
+
+  ifneq ($(filter __L5_SUPPORT__, $(strip $(COM_DEFS))),)
+    COMP_TRACE_DEFS_MODEM += protocol/l5/atp/include/l5_trc_mod_atp_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5io/include/l5_trc_mod_l5io_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5u_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5ucc_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5uss_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5unw_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5urf_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5uswitch_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5usim_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5usys_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5ucat_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5usms_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5updn_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5uims_utmd.json 
+    COMP_TRACE_DEFS_MODEM += protocol/l5/l5u/include/l5_trc_mod_l5uecall_utmd.json
+  endif
+  ifeq ($(strip $(IPC_ADAPTER_SUPPORT)),TRUE)
+    COMP_TRACE_DEFS_MODEM += protocol/ipc_adapter/ipca_cc_ctrl/include/ipca_cc_trc_mod_ipca_cc_utmd.json \
+                           protocol/ipc_adapter/ipca_cfg_ctrl/include/ipca_cfg_trc_mod_ipca_cfg_utmd.json \
+                           protocol/ipc_adapter/ipca_ctrl/include/ipca_ctrl_trc_mod_ipca_ctrl_utmd.json \
+                           protocol/ipc_adapter/ipca_domestic/include/ipca_domestic_trc_mod_ipca_domestic_utmd.json \
+                           protocol/ipc_adapter/ipca_dspl_ctrl/include/ipca_dspl_trc_mod_ipca_dspl_utmd.json \
+                           protocol/ipc_adapter/ipca_em_ctrl/include/ipca_em_trc_mod_ipca_em_utmd.json \
+                           protocol/ipc_adapter/ipca_embms_ctrl/include/ipca_embms_trc_mod_ipca_embms_utmd.json \
+                           protocol/ipc_adapter/ipca_factory_ctrl/include/ipca_factory_trc_mod_ipca_factory_utmd.json \
+                           protocol/ipc_adapter/ipca_gprs_ctrl/include/ipca_gprs_trc_mod_ipca_gprs_utmd.json \
+                           protocol/ipc_adapter/ipca_gprs_routine_ctrl/include/ipca_gprs_routine_trc_mod_ipca_gprs_routine_utmd.json \
+                           protocol/ipc_adapter/ipca_imei_ctrl/include/ipca_imei_trc_mod_ipca_imei_utmd.json \
+                           protocol/ipc_adapter/ipca_ims_ctrl/include/ipca_ims_trc_mod_ipca_ims_utmd.json \
+                           protocol/ipc_adapter/ipca_ir_ctrl/include/ipca_ir_trc_mod_ipca_ir_utmd.json \
+                           protocol/ipc_adapter/ipca_misc_ctrl/include/ipca_misc_trc_mod_ipca_misc_utmd.json \
+                           protocol/ipc_adapter/ipca_nw_ctrl/include/ipca_nw_trc_mod_ipca_nw_utmd.json \
+                           protocol/ipc_adapter/ipca_phb_ctrl/include/ipca_phb_trc_mod_ipca_phb_utmd.json \
+                           protocol/ipc_adapter/ipca_pwr_ctrl/include/ipca_pwr_trc_mod_ipca_pwr_utmd.json \
+                           protocol/ipc_adapter/ipca_sat_ctrl/include/ipca_sat_trc_mod_ipca_sat_utmd.json \
+                           protocol/ipc_adapter/ipca_sms_ctrl/include/ipca_sms_trc_mod_ipca_sms_utmd.json \
+                           protocol/ipc_adapter/ipca_smu_ctrl/include/ipca_smu_trc_mod_ipca_smu_utmd.json \
+                           protocol/ipc_adapter/ipca_ss_ctrl/include/ipca_ss_trc_mod_ipca_ss_utmd.json \
+                           protocol/ipc_adapter/ipca_jpn_ctrl/include/ipca_jpn_trc_mod_ipca_jpn_utmd.json \
+                           protocol/ipc_adapter/ipca_srlte_ctrl/include/ipca_srlte_trc_mod_ipca_srlte_utmd.json \
+                           protocol/ipc_adapter/ipca_sap_ctrl/include/ipca_sap_trc_mod_ipca_sap_utmd.json \
+                           protocol/mits/oem/oemapi/oem_trc_mod_ipca_oem_utmd.json \
+                           protocol/mits/ipc/src/ssipc_trc_mod_utmd.json
+  endif
+
+  ifeq ($(strip $(N3GPP_OFFLOAD_ENABLE)),TRUE)
+    COMP_TRACE_DEFS_MODEM += protocol/n3x/n3cf/n3cf_trc_mod_n3cf_utmd.json 
+    COMP_TRACE_DEFS_MODEM += protocol/n3x/n3epc/src/n3epc_trc_mod_n3epc_utmd.json 
+    COMP_TRACE_DEFS_MODEM += protocol/n3x/n3ans/src/n3ans_trc_mod_n3ans_utmd.json 
+    COMP_TRACE_DEFS_MODEM += protocol/n3x/n3sam/utmd/n3sam_trc_mod_n3sam_utmd.json 
+    COMP_TRACE_DEFS_MODEM += $(wildcard protocol/n3x/n3sam/utmd/*_utmd.json)
+  endif
+
+  COMP_TRACE_DEFS_MODEM += protocol/layer4/vdm/common/include/vdm_trc_mod_vdm_utmd.json  \
+                           protocol/layer4/vdm/trk/include/vdm_trk_trc_mod_vdm_trk_utmd.json  \
+                           protocol/layer4/vdm/ads/include/vdm_ads_trc_mod_vdm_ads_utmd.json  \
+                           protocol/layer4/vdm/vcc/include/vdm_vcc_trc_mod_vdm_vcc_utmd.json 
+
+  COMP_TRACE_DEFS_MODEM += protocol/ssds/include/ssds_trc_mod_ssds_utmd.json 
+
+  ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_EGPRS_MODE)
+    COMP_TRACE_DEFS_MODEM += protocol/2g/llc/include/llc_trc_mod_llc_utmd.json  \
+                             protocol/2g/sndcp/include/snd_trc_mod_sndcp_utmd.json  \
+                             protocol/nas/sm/include/sm_trc_mod_sm_utmd.json  \
+                             protocol/nas_multimode/pam/pam_trc_mod_pam_utmd.json  \
+                             protocol/nas_multimode/nas_sv/include/nas_sv_trc_mod_nas_sv_utmd.json 
+
+    ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+      COMP_TRACE_DEFS_MODEM += protocol/2g/llc/include/llc_trc_mod_llc_utmd.json  \
+                               protocol/2g/sndcp/include/snd_trc_mod_sndcp_utmd.json  \
+                               protocol/nas/sm/include/sm_trc_mod_sm_utmd.json  \
+                               protocol/3g/urr/urr_fdd/common/dbme/include/dbme_trc_mod_db_fdd_utmd.json  \
+                               protocol/3g/ul2/ul2_fdd/bmc/include/bmc_trc_mod_bmc_fdd_utmd.json  \
+                               protocol/3g/ul2/ul2_fdd/common/include/ul2_trc_mod_ul2_fdd_utmd.json  \
+                               protocol/3g/ul2/ul2_fdd/csr/include/csr_trc_mod_csr_fdd_utmd.json  \
+                               protocol/3g/ul2/ul2_fdd/pdcp/include/pdcp_trc_mod_pdcp_fdd_utmd.json  \
+                               protocol/3g/ul2/ul2_fdd/rabm/include/rabm_trc_mod_rabm_fdd_utmd.json  \
+                               protocol/3g/ul2/ul2_fdd/umac/include/umac_trc_mod_umac_fdd_utmd.json  \
+                               protocol/3g/ul2/ul2_fdd/urlc/include/urlc_trc_mod_urlc_fdd_utmd.json  \
+                               protocol/3g/ul2/ul2_fdd/urlc/include/drlc_trc_mod_drlc_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/common/include/adr_trc_mod_adr_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/cise/include/csce_trc_mod_csce_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/cise/include/cse_trc_mod_cse_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/cise/include/sibe_trc_mod_sibe_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/cise/include/usime_trc_mod_usime_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/common/include/urr_trc_mod_urr_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/meme/include/meme_trc_mod_meme_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/rrce/include/rrce_trc_mod_rrce_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/slce/include/slce_trc_mod_slce_fdd_utmd.json  \
+                               protocol/nas_multimode/pam/pam_trc_mod_pam_utmd.json 
+
+      ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+          COMP_TRACE_DEFS_MODEM += protocol/3g/urr/urr_tdd/common/dbme/include/dbme_trc_mod_db_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/bmc/include/bmc_trc_mod_bmc_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/common/include/ul2_trc_mod_ul2_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/csr/include/csr_trc_mod_csr_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/pdcp/include/pdcp_trc_mod_pdcp_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/rabm/include/rabm_trc_mod_rabm_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/umac/include/umac_trc_mod_umac_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/urlc/include/urlc_trc_mod_urlc_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/common/include/adr_trc_mod_adr_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/cise/include/csce_trc_mod_csce_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/cise/include/cse_trc_mod_cse_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/cise/include/sibe_trc_mod_sibe_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/cise/include/usime_trc_mod_usime_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/common/include/urr_trc_mod_urr_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/meme/include/meme_trc_mod_meme_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/rrce/include/rrce_trc_mod_rrce_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/slce/include/slce_trc_mod_slce_tdd_utmd.json 
+      endif
+
+    ifneq ($(filter TRUE,$(MODIS_CONFIG) $(UE_SIMULATOR)),)
+      COMP_TRACE_DEFS_MODEM += protocol/3g/urr/urr_fdd/lcsce/include/lcsce_trc_mod_lcsce_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/las/include/lurr_trc_mod_lurr_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/lmeme/include/lmeme_trc_mod_lmeme_fdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/lcsce/include/lcsce_trc_mod_lcsce_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/las/include/lurr_trc_mod_lurr_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/lmeme/include/lmeme_trc_mod_lmeme_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/lrrce/include/lrrce_trc_mod_lrrce_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/lurlc/include/lurlc_trc_mod_lurlc_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/lumac/include/lumac_trc_mod_lumac_tdd_utmd.json 
+    else
+      COMP_TRACE_DEFS_MODEM += protocol/3g/urr/urr_fdd/lcsce/include/lcsce_trc_mod_lcsce_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/las/include/lurr_trc_mod_lurr_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/lmeme/include/lmeme_trc_mod_lmeme_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/common/dbme/include/dbme_trc_mod_db_fdd_utmd.json  \
+                               protocol/3g/urr/urr_fdd/common/include/adr_trc_mod_adr_fdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/lcsce/include/lcsce_trc_mod_lcsce_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/las/include/lurr_trc_mod_lurr_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/lmeme/include/lmeme_trc_mod_lmeme_tdd_utmd.json  \
+                               protocol/3g/urr/urr_tdd/lrrce/include/lrrce_trc_mod_lrrce_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/lurlc/include/lurlc_trc_mod_lurlc_tdd_utmd.json  \
+                               protocol/3g/ul2/ul2_tdd/lumac/include/lumac_trc_mod_lumac_tdd_utmd.json 
+
+      ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+        COMP_TRACE_DEFS_MODEM += protocol/3g/urr/urr_tdd/common/dbme/include/dbme_trc_mod_db_tdd_utmd.json  \
+                                 protocol/3g/urr/urr_tdd/common/include/adr_trc_mod_adr_tdd_utmd.json 
+      endif
+    endif
+
+      ifneq ($(strip $(UE_SIMULATOR)),TRUE)
+        ifeq ($(strip $(UMTS_FDD_SUPPORT)),UMTS_FDD_MODE_SUPPORT)
+          COMP_TRACE_DEFS_MODEM += l1/ul1/common/ul1a_trc_mod_ul1_utmd.json 
+        endif
+      endif
+
+      ifdef GEMINI
+        ifneq ($(strip $(GEMINI)),FALSE)
+          COMP_TRACE_DEFS_MODEM += protocol/as_multimode/rsva/rsvas/include/rsvas_trc_mod_rsvas_utmd.json  \
+                                   protocol/as_multimode/rsva/rsvak/include/rsvak_trc_mod_rsvak_utmd.json  \
+                                   protocol/as_multimode/rsva/rsvau/include/rsvau_trc_mod_rsvau_utmd.json  \
+                                   protocol/as_multimode/rsva/mspm/include/mspm_trc_mod_mspm_utmd.json
+          ifdef C2K_MODE_SUPPORT
+            ifneq ($(strip $(call Upper,$(C2K_MODE_SUPPORT))),NONE)
+              COMP_TRACE_DEFS_MODEM += protocol/as_multimode/rsva/rsvac/include/rsvac_trc_mod_rsvac_utmd.json
+            endif
+          endif
+
+          ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+            COMP_TRACE_DEFS_MODEM += protocol/as_multimode/rsva/rsvag/include/rsvag_trc_mod_rsvag_utmd.json
+          endif
+          
+          ifneq ($(call Upper,$(strip $(FIVEG_MODE_SUPPORT))),NONE)
+            COMP_TRACE_DEFS_MODEM += protocol/as_multimode/rsva/rsvan/include/rsvan_trc_mod_rsvan_utmd.json
+          endif
+
+          ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+            COMP_TRACE_DEFS_MODEM += protocol/as_multimode/rsva/rsvae/include/rsvae_trc_mod_rsvae_utmd.json
+          endif
+        endif
+      endif
+    endif
+  endif
+
+  COMP_TRACE_DEFS_MODEM += interface/service/event_info/ul1_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/gas_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/ul2_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/uas_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/mm_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/ratdm_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/sm_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/sms_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/llc_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/sndcp_event_info_trc_mod_event_info_utmd.json  \
+                           interface/service/event_info/l4_event_info_trc_mod_event_info_utmd.json 
+  COMP_TRACE_DEFS_MODEM += protocol/agps/lbs/common/inc/lbs_trc_mod_lbs_utmd.json protocol/agps/lbs/common/inc/lbs_trc_mod_gps_utmd.json protocol/agps/lbs/common/inc/lbs_trc_mod_lio_utmd.json protocol/agps/lbs/common/inc/lbs_trc_mod_gnss_tc_utmd.json
+
+  ifeq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+    COMP_TRACE_DEFS_MODEM += protocol/smt/uesim_lte/ul1b/intf/ul1b_trc_mod_ul1b_utmd.json 
+  endif
+
+  ifdef SP_VIDEO_CALL_SUPPORT
+    ifeq ($(strip $(SP_VIDEO_CALL_SUPPORT)),TRUE)
+      COMP_TRACE_DEFS_MODEM += middleware/3g324m/tvt/inc/TVT_trc_mod_vt_utmd.json 
+    endif
+  endif
+
+  ifdef CMUX_SUPPORT
+    ifeq ($(strip $(CMUX_SUPPORT)),TRUE)
+      COMP_TRACE_DEFS_MODEM += driver/cmux/include/cmux_trc_mod_cmux_utmd.json 
+    endif
+  endif
+
+  COMP_TRACE_DEFS_MODEM += protocol/3g/ul2/ul2_fdd/rfc2507/include/rfc2507_lib_trc_mod_rfc2507_utmd.json  \
+                           protocol/3g/ul2/ul2_tdd/rfc2507/include/rfc2507_lib_trc_mod_rfc2507_utmd.json 
+
+  COMP_TRACE_DEFS_MODEM += protocol/3g/ul2/ul2_fdd/seq/include/seq_trc_mod_seq_fdd_utmd.json 
+  COMP_TRACE_DEFS_MODEM += protocol/3g/ul2/ul2_fdd/seq/include/seq_trc_mod_seq_fdd_utmd.json 
+
+  ifeq ($(strip $(HIF_DPMAIF_DP_MD_SUPPORT)),TRUE)
+    ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+      COMP_TRACE_DEFS_MODEM += driver/dpmaifdrv_dp/inc/dpmaif_trace_mod_dpmaif_utmd.json
+    endif
+  endif
+
+  ifneq ($(filter __PERF_SUPPORT__,$(COM_DEFS)),)
+    COMP_TRACE_DEFS_MODEM += protocol/perf/src/perf_trace_utmd.json
+    COMP_TRACE_DEFS_MODEM += protocol/perf/src/erm_trace_utmd.json
+  endif
+  
+  COMP_TRACE_DEFS_MODEM      += protocol/sase/common/include/sase_trace_mod_sase_client_utmd.json protocol/sase/common/include/sase_trace_mod_sase_utmd.json
+  ifneq ($(filter __SASE_TEST_SUPPORT__,$(COM_DEFS)),)
+    COMP_TRACE_DEFS_MODEM    += protocol/sase/common/include/sase_trace_mod_sase_test_utmd.json
+  endif
+
+endif #end of not L1S or BASIC
+
+# *************************************************************************
+# define by filtering
+# *************************************************************************
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(filter __MAUI_BASIC__,$(COM_DEFS)),)
+    COMP_TRACE_DEFS_MODEM += driver/audio/src/v1/inc/l1audio_sph_trc_mod_l1audio_sph_srv_utmd.json 
+  endif
+  ifeq ($(strip $(MD_TFWK)),TRUE)
+    COMP_TRACE_DEFS_MODEM += driver/devdrv/tia/inc/tia_trace_utmd.json
+  endif
+endif
+
+ifeq ($(filter L1S BASIC,$(strip $(TEST_LOAD_TYPE))),)
+  ifneq ($(filter __MTK_3G_MRAT_ARCH__,$(strip $(COM_DEFS))),)
+    COMP_TRACE_DEFS_MODEM += protocol/2g/gas/mpal/include/mpal_trace_mod_mpal_fdd_utmd.json 
+    ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+      COMP_TRACE_DEFS_MODEM += protocol/2g/gas_tdd/mpal/include/mpal_trace_mod_mpal_tdd_utmd.json 
+    endif
+  else
+    ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_EGPRS_MODE)
+      ifeq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+        COMP_TRACE_DEFS_MODEM += protocol/2g/gas/mpal/include/mpal_trace_mod_mpal_fdd_utmd.json 
+        ifeq ($(strip $(UMTS_TDD_SUPPORT)),UMTS_TDD128_MODE_SUPPORT)
+          COMP_TRACE_DEFS_MODEM += protocol/2g/gas_tdd/mpal/include/mpal_trace_mod_mpal_tdd_utmd.json 
+        endif
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  ifneq ($(strip $(GERAN_MODE_SUPPORT)),NONE)
+    FLC_LIB_INCLUDE_CONDITION = FALSE
+    ifneq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+      FLC_LIB_INCLUDE_CONDITION = TRUE
+    endif
+    ifneq ($(strip $(CSD_SUPPORT)),NONE)
+      FLC_LIB_INCLUDE_CONDITION = TRUE
+    endif
+    ifeq ($(strip $(FLC_LIB_INCLUDE_CONDITION)),TRUE)
+      COMP_TRACE_DEFS_MODEM += $(strip $(FLC_FOLDER))/include/flc_trc_mod_flc_utmd.json 
+    endif
+  endif
+endif
+
+ifeq ($(strip $(DMF_SUPPORT)),TRUE)
+  COMP_TRACE_DEFS_MODEM      += protocol/dmf/include/dmf_trc_mod_dmf_utmd.json
+endif
+
diff --git a/mcu/make/common/standalone_action.mak b/mcu/make/common/standalone_action.mak
new file mode 100644
index 0000000..c451080
--- /dev/null
+++ b/mcu/make/common/standalone_action.mak
@@ -0,0 +1,288 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+#
+# *************************************************************************
+# STANDALONE_ACTION.mak - independent build action
+#
+#  DISCUSSION:
+#
+#  USAGE:
+#
+#  IMPORTANT NOTES:
+#
+# *************************************************************************
+#
+# $Revision:$
+# $Modtime:$
+# $Log:$
+#
+# 01 14 2019 yuri.huang
+# [MOLY00363660] [Auto-Gen] Merge 2 links to 1 link to save more build time.
+# (Frank Hu).
+#
+# 04 09 2018 gerry.liao
+# [MOLY00318691] [SM] remove no use variable (PCORE_ROOT, COMMON_ROOT, l1core)
+# .
+#
+# 06 16 2016 wcpadmin
+# smart new env.
+#
+# 01 28 2016 chi-chun.lu
+# [MOLY00162790] [MakeFile] [Remove: Feature Option] DSP_SOLUTION
+# 	
+# 	.
+#
+# 01 13 2016 gerry.liao
+# [MOLY00159998] [SM] memquery remove l1 core related feature
+# .
+#
+# 01 13 2016 chi-chun.lu
+# [MOLY00155432] [MakeFile] [UMOLY] [Modify Makefile Rules] UMOLY build env. modifications
+# 	
+# 	.
+#
+# 12 30 2015 chi-chun.lu
+# [MOLY00155432] [MakeFile] [UMOLY] [Modify Makefile Rules] UMOLY build env. modifications
+# 	
+# 	.
+#
+# 12 07 2015 chi-chun.lu
+# [MOLY00150620] [MakeFile][UMOLY] [Modify Makefile Rules] UMOLY cleanup
+# 	
+# 	.
+#
+# 10 28 2015 chi-chun.lu
+# [MOLY00147089] [MakeFile][UMOLY] [Modify Makefile Rules] reorg UMOLY make folder
+# 	
+# 	.
+#
+# 04 28 2015 chi-chun.lu
+# [MOLY00109710] [SM] fix c,r command can't pass correctly to .
+# 	.
+#
+# 03 20 2015 chi-chun.lu
+# [MOLY00099959] [SM] enhance remake action in .
+# 	.
+#
+# 02 11 2015 ray.lin-wang
+# [MOLY00095788] Merge filter bin files of different cores into a catcher_filter.bin
+# .
+#
+# 01 27 2015 chi-chun.lu
+# [MOLY00093671] [SM] modify memquery.pl related parameter in standalone_action.mak
+# 	.
+#
+# 01 20 2015 chi-chun.lu
+# [MOLY00092726] [TK6291] [SystemService][Auto-Gen] Memory Utility Refinement
+# 	.
+#
+# 09 23 2014 tafang.chen
+# [MOLY00062786] [UMOLY][SM] Add _P_ and _L_ for elf,map,sym,cmm files to recognize ., ..
+#
+# 07 17 2014 tafang.chen
+# [MOLY00062786] [UMOLY][SM]
+# Fix -no_pc problem in two phase linking build.
+#
+# 06 17 2014 tafang.chen
+# [MOLY00062786] [UMOLY][SM]
+# Remove named debug message.
+#
+# 06 17 2014 tafang.chen
+# [MOLY00062786] [UMOLY][SM]
+# Fix variation load problem in two-phase linking.(Brian.Chiang)
+#
+# 05 22 2014 tafang.chen
+# [MOLY00062786] [UMOLY][SM]
+# Initial MoDIS build env - fix path problem.
+#
+# 05 07 2014 tafang.chen
+# [MOLY00062786] [UMOLY][SM]
+# Implement two phase linking.
+#
+# 05 06 2014 tafang.chen
+# Fix incorrect single_core settting on . when full build
+#
+# 11 26 2013 ray.lin-wang
+# [MOLY00047495] [MakeFile] [Modify Common Makefile] Cgen Enhancement
+# Support gen query mod sim source in OA domain
+#
+# 06 25 2013 ray.lin-wang
+# [MOLY00027330] [ARM7toMOLY] ARM7 Build/SYSGEN/Functions Update to TRUNK
+# .
+#
+# 06 03 2013 amber.su
+# [MOLY00023890] [SystemService][Auto-Gen][Internal Refinement] Support compiler option judgement
+# .
+#
+# 04 23 2013 amber.su
+# [MOLY00020348] [MT6290 Bring-up][MakeFile] [Modify: Others] Modify build.mak for ROM & File System Overlapping check
+# .
+#
+# 04 12 2013 amber.su
+# [MOLY00014181] [MakeFile] [Add: Build Action] Add gendummysym command for memory expired analysis
+# .
+#
+# 01 24 2013 amber.su
+# [MOLY00009227] [SystemService][AAPMC][Internal Refinement] Support AAPMC to auto-adjust Modem Image Layout
+# .
+#
+# 01 21 2013 amber.su
+# .
+#
+# 01 17 2013 amber.su
+# .
+#
+# 01 08 2013 amber.su
+# [MOLY00008435] [SystemService][MemoryUitlity][Internal Refinement] Provide build command to use Memory Utility
+# .
+# 
+# 09 26 2012 amber.su
+# [MOLY00004055] [Custom Release][Build Command] build command change for custom release flow
+# .
+# 
+# 09 12 2012 amber.su
+# [MOLY00003467] [Target Build] build command change modification
+# .
+# 
+# 07 30 2012 jerry.chang
+# [MOLY00001397] [MOLY] rename gsm2.mak and make2.pl
+# .
+# *************************************************************************
+
+.PHONY: gendummylis memquery gendummysym
+
+ifdef NO_PCIBT
+ifeq ($(NO_PCIBT),TRUE)
+NO_PC_ACTION += -no_pc
+else
+NO_PC_ACTION = 
+endif
+endif
+
+ifeq ($(strip $(NO_DSP)),TRUE)
+NO_PC_ACTION += -no_dsp
+endif
+
+# *************************************************************************
+#  Generate dummy .lis file for memory analysis
+# *************************************************************************	
+gendummylis:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@if exist $(SCATTERFILE) copy /y $(SCATTERFILE) $(SCATTERFILE).original > NUL
+	@tools\make.exe -f$(strip $(MAKE_COMMON))/build.mak -r -R PROJECT_NAME=$(strip $(PROJECT_NAME)) PROJECT_MAKEFILE="$(strip $(PROJECT_MAKEFILE))" FLAVOR=$(strip $(FLAVOR)) DUMMY_LIS=TRUE sys_auto_gen LINK_BIN_FILE & \
+		(if ERRORLEVEL 1 exit 1)
+	
+	@if not exist $(strip $(TARGDIR))\$(IMG_FILE)	\
+		echo Error in gendummylis & exit 1
+
+ifeq ($(strip $(VIVA_AUTO_SUPPORT)),TRUE)
+	@tools\make.exe -f$(strip $(MAKE_COMMON))/build.mak -r -R PROJECT_NAME=$(strip $(PROJECT_NAME)) PROJECT_MAKEFILE="$(strip $(PROJECT_MAKEFILE))" FLAVOR=$(strip $(FLAVOR)) FROMELF_BIN_FILE & \
+		(if ERRORLEVEL 1 exit 1)
+	@if not exist $(strip $(TARGDIR))\VIVA_DEBUG md $(strip $(TARGDIR))\VIVA_DEBUG
+	@if exist $(strip $(TARGDIR))\$(strip $(BIN_FILE)) \
+		md $(strip $(TARGDIR))\VIVA_DEBUG\$(strip $(BIN_FILE))_dummy & \
+		copy /y $(strip $(TARGDIR))\$(strip $(BIN_FILE))\*.* $(strip $(TARGDIR))\VIVA_DEBUG\$(strip $(BIN_FILE))_dummy & \
+		copy /y $(strip $(TARGDIR))\$(strip $(LIS_FILE)) $(strip $(TARGDIR))\VIVA_DEBUG\$(strip $(LIS_FILE)).dummy & \
+		rd /S /Q $(strip $(TARGDIR))\$(strip $(BIN_FILE))		
+endif
+	@copy /y $(SCATTERFILE) $(SCATTERFILE).dummy > NUL      
+	@if exist $(SCATTERFILE).original move /y $(SCATTERFILE).original $(SCATTERFILE) > NUL
+	@if exist	$(strip $(TARGDIR))\$(IMG_FILE)	del /q $(strip $(TARGDIR))\$(IMG_FILE)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+#  Generate dummy .sym file
+# *************************************************************************
+gendummysym:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+	@$(IF_EXIST) $(strip $(TMPDIR))/~libs.tmp $(THEN)\
+		($(ECHO) "--noinhibit-exec " >$(TMPDIR)/~dummylibs.tmp) $(WITH) \
+		($(CAT) $(strip $(TMPDIR))/~libs.tmp >> $(TMPDIR)/~dummylibs.tmp) \
+	$(CMD_END)
+		
+	@$(IF_EXIST) $(strip $(COMPLOGDIR))/link_option.log $(THEN)\
+		($(ECHO) "--noinhibit-exec " >$(TMPDIR)/~dummylibs.tmp) $(WITH) \
+		($(CAT) $(strip $(COMPLOGDIR))/link_option.log >> $(TMPDIR)/~dummylibs.tmp) \
+	$(CMD_END)
+	
+	@$(IF_NOT_EXIST) $(strip $(TMPDIR))/~dummylibs.tmp  $(THEN)\
+		(echo Error: $(strip $(TMPDIR))/~dummylibs.tmp does not existed! $(WITH) exit 1) $(CMD_END)
+		
+	@$(IF_EXIST) $(strip $(TMPDIR))/~libs.tmp $(THEN)\
+		($(ECHO) "--noinhibit-exec " >$(TMPDIR)/~dummylibs.tmp) $(WITH) \
+		($(CAT) $(strip $(TMPDIR))/~libs.tmp >> $(TMPDIR)/~dummylibs.tmp) \
+	$(CMD_END)
+	
+	@$(strip $(LINK)) $(strip $(VIA))$(TMPDIR)/~dummylibs.tmp >$(DEV_NUL) 2>&1
+	@$(strip $(DUMP)) -x $(strip $(TARGDIR))/$(IMG_FILE) > $(strip $(TARGDIR))/dummy_$(SYM_FILE) $(WITH) \
+		($(IF_ERR_TRUE) $(THEN) \
+			($(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(IMG_FILE)) $(CMD_END)) $(WITH) \
+			(echo Error: failed to generate .sym file $(WITH) exit 1)\
+		$(CMD_END))
+			
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) $(THEN) ($(DEL_DIR) $(strip $(TARGDIR))/$(strip $(BIN_FILE))) $(CMD_END)
+	@$(IF_EXIST) $(strip $(TARGDIR))/$(IMG_FILE) $(THEN) ($(DEL_FILE) $(strip $(TARGDIR))/$(IMG_FILE)) $(CMD_END)
+	@$(IF_NOT_EXIST) $(strip $(TARGDIR))/dummy_$(SYM_FILE)  $(THEN) (echo Error: gendummysym failed! $(WITH) exit 1) $(CMD_END)
+	@$(IF_EXIST) $(TMPDIR)/~dummylibs.tmp $(THEN) ($(DEL_FILE) $(TMPDIR)/~dummylibs.tmp) $(CMD_END)
+	@echo Done for gendummysym
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+
+# *************************************************************************
+#  Get Memory Usage Information
+# *************************************************************************
+memquery:
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_S,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
+	@$(IF_EXIST) $(FIXPATH)/tools/MemoryUtility/memquery.pl $(THEN) \
+		perl $(FIXPATH)/tools/MemoryUtility/memquery.pl $(strip $(TMPDIR))/~memquery.tmp $(SCATTERFILE) "$(strip $(PROJECT_MAKEFILE))" $(strip $(TARGDIR))/$(MAP_FILE) $(strip $(COMPLOGDIR)) $(strip $(INFOMAKELOG)) $(strip $(TARGDIR))/$(strip $(BIN_FILE)) \
+	$(CMD_END)
+# mbis time probe
+ifeq ($(strip $(MBIS_EN)),TRUE)
+	@$(ECHO) -n -t "T_E,$@,T," >> $(MBIS_BUILD_TIME_TMP)
+endif
diff --git a/mcu/make/common/user_specific.mak b/mcu/make/common/user_specific.mak
new file mode 100644
index 0000000..0746332
--- /dev/null
+++ b/mcu/make/common/user_specific.mak
@@ -0,0 +1,70 @@
+#

+#  Copyright Statement:

+#  --------------------

+#  This software is protected by Copyright and the information contained

+#  herein is confidential. The software may not be copied and the information

+#  contained herein may not be used or disclosed except with the written

+#  permission of MediaTek Inc. (C) 2005

+#

+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES

+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")

+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON

+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,

+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF

+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.

+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE

+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR

+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH

+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO

+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S

+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.

+#

+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE

+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,

+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,

+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO

+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.

+#

+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE

+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF

+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND

+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER

+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).

+#

+

+#If CUSTOM_CFLAGS = #-g in project makefile, set some modules to apply -g

+#Please remove 1st # in the following 2 lines

+#DEBUG_MODULES =  		# Value should be ALL or modules.

+#CUSTOM_CFLAGS  := 		# Do not add any options for this.

+

+#If CUSTOM_CFLAGS = -g in project makefile, set some modules NOT to apply -g

+#Please remove 1st # in the following line

+#NON_DEBUG_MODULES = 		# Value should be ALL or modules.

+

+

+#Example of DEBUG_MODULES

+#1. DEBUG_MODULES =  all

+#   CUSTOM_CFLAGS := 

+#      ==> all modules will apply -g when update, remake or new these modules

+#

+#2. DEBUG_MODULES =  kal stacklib plutommi mtkapp t9

+#   CUSTOM_CFLAGS  := 

+#      ==> only kal, stacklib, plutommi, mtkapp, t9 will apply -g 

+#          when update, remake these modules or new

+#

+#

+# NOTE: DEBUG_MODULES =  all kal stacklib, all modules will apply -g

+#

+

+

+#Example of NON_DEBUG_MODULES

+#1. NON_DEBUG_MODULES =  all

+#      ==> all modules will NOT apply -g when update, remake or new these modules

+#

+#2. NON_DEBUG_MODULES =  kal stacklib plutommi mtkapp t9

+#      ==> only kal, stacklib, plutommi, mtkapp, t9 will NOT apply -g 

+#          when update, remake these modules or new

+#

+#

+# NOTE: NON_DEBUG_MODULES =  all kal stacklib, all modules will NOT apply -g

+#

diff --git a/mcu/make/common/xgeninc.mak b/mcu/make/common/xgeninc.mak
new file mode 100644
index 0000000..36aac93
--- /dev/null
+++ b/mcu/make/common/xgeninc.mak
@@ -0,0 +1,985 @@
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2005
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+
+#  Define include path lists to XGEN_INC_DIR
+#XGEN_INC_DIR = $(COMMINCDIRS)
+XGEN_INC_DIR_FDD :=
+XGEN_INC_DIR_TDD :=
+
+ifneq ($(filter __PERF_SUPPORT__,$(COM_DEFS)),)
+    XGEN_INC_DIR += protocol/perf/src
+    XGEN_INC_DIR += protocol/perf
+endif
+
+ifneq ($(strip $(L1_UMTS)),TRUE)
+  XGEN_INC_DIR += protocol/as_multimode/asinterfaces/include \
+                    $(strip $(GAS_FOLDER))/common/include \
+                    $(strip $(GAS_FOLDER))/rrm/common/include \
+                    $(strip $(GAS_FOLDER))/rrm/rmc/include \
+                    $(strip $(GAS_FOLDER))/rrm/rcs/include \
+                    $(strip $(GAS_FOLDER))/lapdm/include \
+                    $(strip $(GAS_FOLDER))/mpal/include \
+                    $(strip $(GAS_FOLDER))/rlc/include \
+                    $(strip $(GAS_FOLDER))/mac/include \
+                    $(strip $(GAS_FOLDER))/rrm/rmp/include \
+                    protocol/nas/mm/cmm/include \
+                    protocol/nas/mm/common/include \
+                    protocol/nas/mm/pmm/include \
+                    protocol/as_multimode/ratcm/include \
+                    protocol/as_multimode/ratdm/cmn_sig/include \
+                    protocol/as_utility/scsi/gen/include \
+                    protocol/as_utility/scsi/include \
+                    interface/l1/ul1 \
+    l1/interface/el1 \
+    protocol/2g/las/gise/include \
+    protocol/2g/las/gise_tdd/include \
+    l1/ul1/common \
+                    service/fsm/include
+ ifdef GEMINI
+    ifneq ($(strip $(GEMINI)),FALSE)
+      XGEN_INC_DIR += protocol/as_multimode/rsva/rsvas/include \
+                        protocol/as_multimode/rsva/interface/enum \
+                        protocol/as_multimode/rsva/interface/local_inc \
+                        protocol/as_multimode/rsva/common/include \
+                        protocol/as_multimode/rsva/mspm/include \
+                        interface/service/icd \
+                        interface/service/icd/event/cm \
+                        $(strip $(PROJDIR))/modem/icd_ac_gen
+
+    endif
+  endif
+else
+  ifneq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+    GAS_INC_SUPPORT = TRUE
+  else
+    ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+      GAS_INC_SUPPORT = TRUE
+    endif
+  endif
+  ifeq ($(strip $(GAS_INC_SUPPORT)),TRUE)
+      XGEN_INC_DIR += protocol/as_multimode/asinterfaces/include \
+                      $(strip $(GAS_FOLDER))/common/include \
+                      $(strip $(GAS_FOLDER))/rrm/common/include \
+                      $(strip $(GAS_FOLDER))/rrm/rmc/include \
+                      $(strip $(GAS_FOLDER))/rrm/rcs/include \
+                      $(strip $(GAS_FOLDER))/lapdm/include \
+                      $(strip $(GAS_FOLDER))/mpal/include \
+                      $(strip $(GAS_FOLDER))/rlc/include \
+                      $(strip $(GAS_FOLDER))/mac/include \
+                      protocol/2g/las/gise/include \
+                      protocol/2g/las/gise_tdd/include \
+                      protocol \
+                      protocol/nas/mm/cmm/include \
+                      protocol/nas/mm/common/include \
+                      protocol/nas/mm/pmm/include \
+                      protocol/as_multimode/ratcm/include \
+                      protocol/as_multimode/ratdm/cmn_sig/include \
+                      protocol/as_utility/scsi/gen/include \
+                      protocol/as_utility/scsi/include \
+                      $(strip $(UAS_FOLDER))/interface/include \
+                      protocol \
+                      protocol/3g/urr/urr_fdd/common/asn1/include \
+                      protocol/3g/urr/urr_tdd/common/asn1/include \
+                      $(strip $(UAS_FOLDER))/common/include \
+                      $(strip $(UAS_FOLDER))/interface/enum \
+                      $(strip $(UAS_FOLDER))/interface/local_inc \
+                      $(strip $(UAS_FOLDER))/ul2/common/include \
+                      $(strip $(UAS_FOLDER))/ul2/bmc/include \
+                      $(strip $(UAS_FOLDER))/ul2/pdcp/include \
+                      $(strip $(UAS_FOLDER))/ul2/rabm/include \
+                      $(strip $(UAS_FOLDER))/ul2/umac/include \
+                      $(strip $(UAS_FOLDER))/ul2/urlc/include \
+                      $(strip $(UAS_FOLDER))/ul2/seq/include \
+                      $(strip $(UAS_FOLDER))/urr/common/include \
+                      $(strip $(UAS_FOLDER))/urr/meme/include \
+                      $(strip $(UAS_FOLDER))/urr/rrce/include \
+                      $(strip $(UAS_FOLDER))/urr/slce/include \
+                      $(strip $(UAS_FOLDER))/urr/dbme/include \
+                      $(strip $(UAS_FOLDER))/urr/cise/include \
+                      service/fsm/include \
+                      driver/bytecopy/inc \
+                      interface/l1/ul1/internal \
+                      ./interface/modem/l1/gsm/internal \
+                      protocol/2g/interface \
+                      interface/protocol/general \
+                      $(strip $(PROJDIR))/modem/dbme \
+                      $(strip $(PROJDIR))/modem/rrc_asn \
+                      $(strip $(PROJDIR))/modem/mcddll \
+                      protocol/3g/urr/urr_fdd/common/dbme/include \
+                      protocol/as_multimode/dbme/include \
+                      protocol/3g/urr/interface/struct \
+                      interface/protocol/general \
+                      ./service/event_info \
+                      protocol/as_multimode/las/include \
+                      interface/service/cert
+
+      XGEN_INC_DIR_FDD += $(strip $(PROJDIR))/modem/dbme/fdd \
+                          $(strip $(PROJDIR))/modem/rrc_asn/fdd \
+                          $(strip $(PROJDIR))/modem/mcddll/fdd \
+                          protocol/3g/urr/urr_fdd/lcsce/include \
+                          protocol/3g/urr/urr_fdd/lmeme/include \
+                          protocol/3g/urr/urr_fdd/common/include \
+                          protocol/3g/urr/urr_fdd/las/include \
+                          protocol/3g/urr/urr_fdd/ldbme/include
+
+      XGEN_INC_DIR_TDD += $(strip $(PROJDIR))/modem/dbme/tdd \
+                          $(strip $(PROJDIR))/modem/rrc_asn/tdd \
+                          $(strip $(PROJDIR))/modem/mcddll/tdd \
+                          $(strip $(PROJDIR))/modem/lpcch_asn \
+                          protocol/3g/urr/urr_tdd/lcsce/include \
+                          protocol/3g/urr/urr_tdd/lmeme/include \
+                          protocol/3g/urr/urr_tdd/common/include \
+                          protocol/3g/urr/urr_tdd/las/include \
+                          protocol/3g/urr/urr_tdd/ldbme/include \
+                          protocol/3g/ul2/ul2_tdd/lurlc/include \
+                          protocol/3g/urr/urr_tdd/lrrce/include \
+                          protocol/3g/ul2/ul2_tdd/lumac/include \
+                          protocol/3g/interface/uas/uas_tdd/struct
+
+      ifdef GEMINI
+        ifneq ($(strip $(GEMINI)),FALSE)
+          XGEN_INC_DIR += protocol/as_multimode/rsva/rsvas/include \
+                          protocol/as_multimode/rsva/interface/enum \
+                          protocol/as_multimode/rsva/interface/local_inc \
+                          protocol/as_multimode/rsva/common/include \
+                          protocol/as_multimode/rsva/rsvak/include \
+                          protocol/as_multimode/rsva/rsvau/include \
+                          protocol/as_multimode/rsva/rsvae/include \
+						  protocol/as_multimode/rsva/rsvan/include \
+                          protocol/as_multimode/rsva/rsvac/include \
+                          protocol/as_multimode/rsva/rsvag/include \
+						  protocol/as_multimode/rsva/mspm/include \
+                          interface/service/icd \
+                          interface/service/icd/event/cm \
+                          $(strip $(PROJDIR))/modem/icd_ac_gen
+        endif
+      endif
+      XGEN_INC_DIR += ./interface/uas \
+                      interface/driver/dpcopro
+  endif
+endif
+
+ifeq ($(strip $(L1_UMTS)),TRUE)
+  XGEN_INC_DIR += protocol/2g/sndcp/include \
+                  protocol/nas/sm/include \
+                  protocol/nas_multimode/pam \
+                  protocol/nas_utility/nas_common_utility/include \
+                  protocol/2g/llc/include
+else
+  ifeq ($(strip $(GERAN_MODE_SUPPORT)),GERAN_EGPRS_MODE)
+    ifeq ($(strip $(UTRAN_MODE_SUPPORT)),NONE)
+      XGEN_INC_DIR += protocol/2g/sndcp/include \
+                        protocol/nas/sm/include \
+                        protocol/nas_multimode/pam \
+                        protocol/nas_utility/nas_common_utility/include \
+                        protocol/2g/llc/include
+    endif
+  endif
+endif
+
+XGEN_INC_DIR += protocol/nas_multimode/nas_sv/include
+XGEN_INC_DIR += protocol/nas_multimode/tftlib
+XGEN_INC_DIR += protocol/nas_multimode/smic/include
+XGEN_INC_DIR += protocol/interface/nas_multimode
+XGEN_INC_DIR += protocol/interface/vgnas/trace
+XGEN_INC_DIR += protocol/interface/vgnas/sms
+XGEN_INC_DIR += protocol/vgnas/vgsm/include
+XGEN_INC_DIR += protocol/vgnas/vgmm/include
+XGEN_INC_DIR += protocol/upds/include
+XGEN_INC_DIR += protocol/interface/as_multimode/5g
+XGEN_INC_DIR += protocol/interface/general/5g
+XGEN_INC_DIR += protocol/vgnas/interface
+XGEN_INC_DIR += protocol/ddm/psilib/include
+XGEN_INC_DIR += protocol/as_multimode/mrs/capability/include
+ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+  XGEN_INC_DIR += protocol/interface/enl2/el2
+  XGEN_INC_DIR += protocol/interface/enl2/en_common
+else
+  XGEN_INC_DIR += protocol/interface/el2
+endif
+XGEN_INC_DIR += protocol/interface/nas_multimode/upcm
+XGEN_INC_DIR += protocol/interface/ddm
+XGEN_INC_DIR += protocol/interface/agps
+
+XGEN_INC_DIR_FDD += interface/l1/ul1
+XGEN_INC_DIR_TDD += protocol/interface/l1/tdd
+
+ifneq ($(filter __LTE_PHY_TEST__,$(COM_DEFS)),)
+    XGEN_INC_DIR_TDD += $(EL1_FOLDER)/$(strip $(EL1C_MD_VER_FOLDER))/tstm/include
+else
+    XGEN_INC_DIR_TDD += $(EL1_FOLDER)/$(strip $(EL1C_MD_VER_FOLDER))/tstm_meta/include \
+                        $(EL1_FOLDER)/comm/tstm_meta/include
+    XGEN_INC_DIR += l1/el1/el1c_pub/$(strip $(MD_VER_FOLDER))/trc
+endif
+
+XGEN_INC_DIR += interface/service/em/protect \
+                   protocol/nas/cc-ss/cc/include \
+                   protocol/nas/sms/include \
+                   $(strip $(PPP_FOLDER))/include \
+                   protocol/nas_23g/data/include \
+                   protocol/nas_23g/data/l2r/include \
+                   protocol/nas_23g/data/rlp/include \
+                   protocol/nas_23g/data/tdt/include \
+                   protocol/nas_23g/data/t30/include \
+                   protocol/nas_23g/data/fa/include \
+                   protocol/as_utility/mcd/include \
+                   protocol/ircomm/include \
+                   l1/gl1/common \
+                   interface/protocol/gas/include \
+                   interface/l1/ul1 \
+                   interface/service/mdmp \
+                   l1/interface/el1 \
+                   l1/md_sm/common/ul1sm \
+                   l1/ul1/common \
+                   l1/interface/tl1 \
+                   l1/interface/rtb \
+                   protocol/interface/l4 \
+                   protocol/interface/l4misc \
+                   protocol/interface/ims \
+                   protocol/interface/eap \
+                   protocol/interface/asn/rr/include \
+                   protocol/nas_multimode/nwsel/include \
+                   protocol/layer4/l4/include \
+                   protocol/layer4/l4/csm \
+                   protocol/layer4/l4/csm/cc/include \
+                   protocol/layer4/l4/smu/include \
+                   protocol/layer4/l4/smsal/include \
+                   protocol/layer4/l4/tcm/common \
+                   protocol/layer4/l4/rac/common/include \
+                   protocol/layer4/l4/rac/ugrac/include \
+                   protocol/interface/mcd/include \
+                   protocol/layer4/l4/l4c/include/proc \
+                   protocol/layer4/l4/tcm/ugtcm \
+                   protocol/layer4/l4/tcm/etcm/include \
+                   protocol/layer4/l4/tcm/vgtcm/include \
+                   protocol/layer4/l4/tcm/rat_tcm/inc \
+                   protocol/layer4/l4/psdm/include \
+                   protocol/ephy/ephy_rf \
+                   protocol/layer4/sim/include \
+                   ./service/sst/include \
+                   ./service/sst/include \
+                   ./service/kal/common/include \
+                   ./service/kal/lib/mlib/include \
+                   ./middleware/interfaces/local_inc \
+                   driver/audio/med/audio/include \
+                   driver/audio/med/common/include \
+                   interface/l1/ul1/internal \
+                   ./interface/modem/l1/gsm/internal \
+                   l1/interface/el1/el1c/include \
+                   protocol/nas_multimode/gmss/include \
+                   protocol/layer4/l4/l4b/interface \
+                   protocol/layer4/l4/l4b/include \
+                   protocol/layer4/l4/l4b/l4bpwr/include \
+                   protocol/layer4/l4/l4b/l4bnw/include \
+                   protocol/layer4/l4/l4b/l4bsim/include \
+                   protocol/layer4/l4/l4b/l4bpdn/include \
+                   protocol/layer4/l4/l4b/l4bsbp/include \
+                   protocol/layer4/l4/l4b/l4bsms/include \
+                   protocol/layer4/vdm/interface \
+                   protocol/layer4/vdm/common/include \
+                   protocol/layer4/vdm/trk/include \
+                   protocol/layer4/vdm/ads/include \
+                   protocol/layer4/vdm/vcc/include \
+                   l1/interface/mml1/mml1_fwk \
+                   l1/interface/mml1/mml1_lpwr \
+                   protocol/l5/include \
+                   protocol/l5/l5u/include \
+                   protocol/l5/util/include \
+                   protocol/l5/l5io/include \
+                   protocol/l5/l5io/l5ath \
+                   protocol/l5/l5io/l5ath/userdef \
+                   protocol/l5/l5io/l5mipc/include \
+                   $(strip $(PROJDIR))/modem/mipc/include \
+                   interface/protocol/l5/mipc/common \
+                   interface/protocol/l5/mipc/msg \
+                   protocol/l5/l5io/l5mbci/include \
+                   interface/protocol/l1misc \
+                   interface/protocol/l1misc/tasar \
+				   l1/interface/mml1/mml1_endc \
+                   interface/l1/mml1/external/mml1_endc
+                   
+ifneq ($(filter __L5_SUPPORT__,$(strip $(COM_DEFS))),)
+    XGEN_INC_DIR += protocol/l5/atp/include
+else
+    XGEN_INC_DIR += protocol/layer4/atp/include
+endif
+                                      
+ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+  XGEN_INC_DIR += protocol/layer4/l4/rac/erac/include
+endif
+
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  XGEN_INC_DIR    += $(strip $(UAS_FOLDER))/ul2/rfc2507/include
+endif
+
+ifdef AGPS_SUPPORT
+  ifneq ($(strip $(AGPS_SUPPORT)), NONE)
+    ifeq ($(strip $(AGPS_SUPPORT)), USER_PLANE)
+      XGEN_INC_DIR     += inet_ps/supl/include
+    endif
+    XGEN_INC_DIR += protocol/agps/rrlp/include
+  endif
+endif
+
+
+ifeq ($(filter BASIC UDVT,$(TEST_LOAD_TYPE)),)
+  FLC_LIB_INCLUDE_CONDITION = FALSE
+  ifneq ($(filter __PS_SERVICE__,$(COM_DEFS)),)
+    FLC_LIB_INCLUDE_CONDITION = TRUE
+  endif
+  ifneq ($(strip $(CSD_SUPPORT)),NONE)
+    FLC_LIB_INCLUDE_CONDITION = TRUE
+  endif
+  ifeq ($(strip $(IRDA_SUPPORT)),TRUE)
+    FLC_LIB_INCLUDE_CONDITION = TRUE
+  endif
+  ifneq ($(strip $(TCPIP_SUPPORT)),NONE)
+    FLC_LIB_INCLUDE_CONDITION = TRUE
+  endif
+  ifeq ($(strip $(FLC_LIB_INCLUDE_CONDITION)),TRUE)
+    XGEN_INC_DIR += $(strip $(FLC_FOLDER))/include
+  endif
+endif
+
+
+ifdef GEMINI
+  ifneq ($(strip $(GEMINI)),FALSE)
+    XGEN_INC_DIR += protocol/as_multimode/as_semaphore_utility/include
+  endif
+endif
+
+XGEN_INC_DIR += protocol/as_utility/mcddll/include
+XGEN_INC_DIR += protocol/layer4/l4/dt/include
+XGEN_INC_DIR += inet_ps/ems/include protocol/nas/cc-ss/ss/include
+XGEN_INC_DIR += ./interface/service/kal \
+                 interface/driver/sleep_drv \
+                 interface/l1/md_sm
+
+XGEN_INC_DIR += ${PROJDIR}/nvram_auto_gen
+
+ifeq ($(filter L1S BASIC UDVT,$(TEST_LOAD_TYPE)),)
+  XGEN_INC_DIR += inet_ps/ems/include
+endif
+
+XGEN_INC_DIR    +=  external_mmi/wise/bal/telephony/include \
+                    protocol/interface/asn/asn1lib/include \
+                    l1/gl1/common
+
+ifeq ($(filter L1S BASIC UDVT,$(TEST_LOAD_TYPE)),)
+  ifneq ($(filter __MTK_3G_MRAT_ARCH__,$(strip $(COM_DEFS))),)
+    XGEN_INC_DIR += $(strip $(GAS_FOLDER))/mpal/include
+  endif
+endif
+
+ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  XGEN_INC_DIR += interface/l1/l1s
+endif
+
+ifneq ($(filter $(strip $(PLATFORM)),$(UL1_HS_PLATFORM)),)
+  XGEN_INC_DIR += protocol/ul1/ul1_hs/ul1c \
+                  protocol/ul1/ul1_hs/ul1d \
+                  protocol/ul1/ul1_hs/common \
+                  l1/md_sm/ul1sm \
+                  l1/md_sm/common\ul1sm
+else ifneq ($(filter $(strip $(PLATFORM)),$(UL1_HS_PLUS_PLATFORM)),)
+  XGEN_INC_DIR += l1/ul1/ul1c \
+                  l1/ul1/ul1d \
+                  l1/ul1/ul1d \
+                  l1/ul1/common \
+                  l1/md_sm/ul1sm \
+                  l1/md_sm/common\ul1sm
+endif
+
+ifdef AGPS_SUPPORT
+    ifeq ($(strip $(AGPS_SUPPORT)), CP_AGPS)
+      XGEN_INC_DIR += protocol/agps/ulcs/common/include
+      XGEN_INC_DIR += protocol/agps/ulcs/uagps_up/include
+      XGEN_INC_DIR += protocol/agps/ulcs/uagps_cp/include
+    endif
+    ifeq ($(strip $(AGPS_SUPPORT)), CP_AGPS_AGLONASS)
+      XGEN_INC_DIR += protocol/agps/ulcs/common/include
+      XGEN_INC_DIR += protocol/agps/ulcs/uagps_up/include
+      XGEN_INC_DIR += protocol/agps/ulcs/uagps_cp/include
+    endif
+    ifeq ($(strip $(AGPS_SUPPORT)), CONTROL_PLANE)
+      XGEN_INC_DIR += protocol/agps/ulcs/common/include
+      XGEN_INC_DIR += protocol/agps/ulcs/uagps_up/include
+      XGEN_INC_DIR += protocol/agps/ulcs/uagps_cp/include
+    endif
+    ifeq ($(strip $(AGPS_SUPPORT)), BOTH)
+      XGEN_INC_DIR += protocol/agps/ulcs/common/include
+      XGEN_INC_DIR += protocol/agps/ulcs/uagps_up/include
+      XGEN_INC_DIR += protocol/agps/ulcs/uagps_cp/include
+    endif
+endif
+
+ifneq ($(strip $(LPP_SUPPORT)), NONE)
+  XGEN_INC_DIR += protocol/agps/lpp/include
+endif
+XGEN_INC_DIR += protocol/agps/lppe/include
+XGEN_INC_DIR += protocol/agps/lbs/gnss_tc/inc
+XGEN_INC_DIR += ./interface/ul1interface/internal
+
+#ifeq ($(strip $(IMS_SUPPORT)),TRUE)
+# XGEN_INC_DIR +=./$(strip $(MODEM_FOLDER))/interface/ims
+#endif
+
+ifeq ($(strip $(N3GPP_OFFLOAD_ENABLE)),TRUE)
+  XGEN_INC_DIR += protocol/interface/n3x \
+  				  protocol/n3x/n3sam/interface
+endif
+
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  ifeq ($(call gt,$(strip $(GPRS_MAX_PDP_SUPPORT)),6),T)
+  else
+    XGEN_INC_DIR     += $(strip $(UAS_FOLDER))/ul2/seq/include
+  endif
+endif
+
+ifeq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  XGEN_INC_DIR     += $(strip $(UAS_FOLDER))/ul2/seq/include
+endif
+
+XGEN_INC_DIR += protocol/smt/l1s/dummyps/include/internal
+
+ifeq ($(MPD_SOURCE_4G_BUILD),TRUE)
+  XGEN_INC_DIR += interface/driver/l2copro
+  XGEN_INC_DIR += $(UNIVERSAL_COMMON)/interface/modem
+endif
+
+ifeq ($(strip $(TEST_LOAD_TYPE)),L1S)
+  XGEN_INC_DIR += dummyups/include/internal
+endif
+
+ifneq ($(filter __DHL_V2_ENABLE__,$(COM_DEFS)),) # DHL2.0
+  XGEN_INC_DIR += $(strip $(FIXPATH))/service/dhl/v2/local_inc
+  XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/icd
+  XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/icd/event/vgnas/
+  XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/icd/vgnas/
+  XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/pmc/icd_v2/
+else # DHL1.0
+  XGEN_INC_DIR += $(strip $(FIXPATH))/service/dhl/v1/local_inc
+  XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/icd
+  XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/icd/event/vgnas/
+  XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/icd/vgnas/
+  XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/pmc/icd_v1/
+endif
+
+XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/dhl_sub
+XGEN_INC_DIR += $(strip $(FIXPATH))/custom/service/dhl
+XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/icd
+XGEN_INC_DIR += $(strip $(FIXPATH))/interface/service/icd/event/enas/
+XGEN_INC_DIR += $(strip $(PROJDIR))/modem/icd_ac_gen
+XGEN_INC_DIR += l1/md_sm/l1sm \
+                l1/md_sm/common/l1sm \
+                ./service/sys_svc_sec/inc \
+                driver/sleep_drv/internal/inc \
+                driver/sleep_drv/public/inc \
+                $(strip $(PROJDIR))/modem/eas_asn
+
+XGEN_INC_DIR += interface/driver/dvfs_drv/$(MD_VER_FOLDER) \
+                driver/dvfs_drv/internal/inc/$(MD_VER_FOLDER)
+
+XGEN_INC_DIR += interface/driver/tfwk_drv \
+                driver/tfwk_drv/internal/inc
+
+ifeq ($(MPD_SOURCE_4G_BUILD),TRUE)
+  XGEN_INC_DIR += $(strip $(TSTDIR_SEC))/database/gv \
+                  $(strip $(TSTDIR_SEC))/database/unionTag \
+                  $(BUILD_TSTDIR_SEC)/database/unionTag
+
+  XGEN_INC_DIR += protocol/lte_sec/enas/interface
+  XGEN_INC_DIR += protocol/lte_sec/errc/interface \
+                  protocol/lte_sec/errc/common/include \
+                  protocol/lte_sec/errc/include \
+                  interface/service/icd/errc \
+                  interface/service/icd/event/errc
+endif
+
+XGEN_INC_DIR += $(strip $(TSTDIR))/database/gv \
+                $(strip $(TSTDIR))/database/gv/ext \
+                $(strip $(TSTDIR))/database/unionTag \
+                $(strip $(TSTDIR))/database/unionTag/ext \
+                $(strip $(TSTDIR))/database \
+                $(BUILD_TSTDIR)/database/unionTag \
+                $(BUILD_TSTDIR)/database/unionTag/ext
+XGEN_INC_DIR += ./service/fs/common/include
+XGEN_INC_DIR += driver/sys_drv/cache/inc
+
+XGEN_INC_DIR += interface/protocol/l2_utility/flc2_v2
+XGEN_INC_DIR += interface/protocol/l2_utility/l2_sec_utility
+XGEN_INC_DIR += interface/protocol/3g/src
+XGEN_INC_DIR += protocol/ephy/common
+XGEN_INC_DIR += l1/ul1/common
+#XGEN_INC_DIR += l1/ul1/common
+
+ifdef CMUX_SUPPORT
+  ifeq ($(strip $(CMUX_SUPPORT)),TRUE)
+    ifeq ($(filter L1S BASIC UDVT,$(TEST_LOAD_TYPE)),)
+      # move from Option.mak
+      XGEN_INC_DIR += driver/cmux/include
+    endif
+  endif
+endif
+
+ifeq ($(strip $(RTOS)),MERTOS)
+  XGEN_INC_DIR += ./service/mertos/include
+endif
+  
+ifeq ($(strip $(CUST_CODE)),TC01)
+XGEN_INC_DIR += custom/protocol/common/atci/include
+endif
+
+ifeq ($(strip $(IMS_SUPPORT)),TRUE)
+  XGEN_INC_DIR += protocol/imc/frmk/pub \
+                   protocol/imc/pub \
+                   protocol/imc/sap \
+                   protocol/layer4/sdm/include \
+                   protocol/imc/imcsms/include \
+                   protocol/iwlan/interface \
+                   protocol/interface/iwlan
+endif
+
+XGEN_INC_DIR += l1/interface/ll1
+#fdr_reorg
+XGEN_INC_DIR += protocol/3g/urr \
+                protocol/interface/general
+
+XGEN_INC_DIR += interface/l1/cl1/common \
+                modem/interface/genera \
+                interface/l1/cl1/common \
+                modem/interface/general \
+                interface/protocol/nas_c2k \
+                interface/l1/gl1 \
+                l1/interface/gl1 \
+                protocol/interface/iwlan \
+                protocol/3g/urr/interface/enum \
+                protocol/3g/urr/interface/define \
+                interface/protocol/agps \
+                l1/cl1/interface \
+                modem/c2k/inc \
+                protocol/l2_c2k/hlp \
+                protocol/3g/ul2/ul2_fdd/interface/local_inc \
+                interface/protocol/as_c2k/1xrtt \
+                interface/protocol/as_c2k/common \
+                interface/protocol/as_c2k/evdo \
+                interface/protocol/l2_c2k/common
+XGEN_INC_DIR += interface/protocol/3g/csr
+
+XGEN_INC_DIR_FDD += protocol/3g/interface/uas/uas_fdd/include \
+                    protocol/3g/interface/uas/uas_fdd/enum \
+                    protocol/3g/interface/uas/uas_fdd/include \
+                    protocol/3g/ul2/ul2_fdd/bmc/include \
+                    protocol/3g/ul2/ul2_fdd/common/include \
+                    protocol/3g/ul2/ul2_fdd/umac/include \
+                    protocol/3g/ul2/ul2_fdd/interface/include \
+                    protocol/3g/ul2/ul2_fdd/interface/enum \
+                    protocol/3g/ul2/ul2_fdd/urlc/include \
+                    protocol/3g/interface/ul2/ul2_fdd/include \
+                    protocol/3g/ul2/ul2_fdd/seq/include \
+                    protocol/3g/urr/urr_fdd/cise/include \
+                    protocol/3g/ul2/ul2_fdd/pdcp/include \
+                    protocol/3g/ul2/ul2_fdd/rabm/include \
+                    protocol/3g/urr/urr_fdd/meme/include \
+                    protocol/3g/urr/urr_fdd/rrce/include \
+                    protocol/3g/urr/urr_fdd/dbme/include \
+                    protocol/3g/urr/urr_fdd/ldbme/include \
+                    protocol/3g/urr/urr_fdd/slce/include \
+
+
+XGEN_INC_DIR_TDD += protocol/3g/interface/uas/uas_tdd/enum \
+                    protocol/3g/ul2/ul2_tdd/bmc/include \
+                    protocol/3g/ul2/ul2_tdd/common/include \
+                    protocol/3g/ul2/ul2_tdd/umac/include \
+                    protocol/3g/ul2/ul2_tdd/interface/include \
+                    protocol/3g/ul2/ul2_tdd/interface/enum \
+                    protocol/3g/ul2/ul2_tdd/urlc/include \
+                    protocol/3g/interface/ul2/ul2_tdd/include \
+                    protocol/3g/urr/urr_tdd/cise/include \
+                    protocol/3g/ul2/ul2_tdd/pdcp/include \
+                    protocol/3g/ul2/ul2_tdd/rabm/include \
+                    protocol/3g/urr/urr_tdd/meme/include \
+                    protocol/3g/urr/urr_tdd/rrce/include \
+                    protocol/3g/urr/urr_tdd/dbme/include \
+                    protocol/3g/urr/urr_tdd/ldbme/include \
+                    protocol/3g/interface/uas/uas_tdd/include \
+                    protocol/3g/urr/urr_tdd/slce/include
+
+
+# xgen include path for fdd
+ifeq ($(strip $(XGEN_SWITCH_FDD_TDD)),FDD)
+  XGEN_INC_DIR += $(XGEN_INC_DIR_FDD)
+endif
+# xgen include path for tdd
+ifeq ($(strip $(XGEN_SWITCH_FDD_TDD)),TDD)
+  XGEN_INC_DIR += $(XGEN_INC_DIR_TDD)
+endif
+ifeq ($(strip $(XGEN_SWITCH_FDD_TDD)),NONE)
+  XGEN_INC_DIR += $(XGEN_INC_DIR_FDD) $(XGEN_INC_DIR_TDD)
+endif
+
+#tdd folder for fdd part using. including path order should be care
+XGEN_INC_DIR += protocol/3g/interface/uas/uas_tdd/include
+
+# EL1 CODEGEN PATH
+XGEN_INC_DIR += l1/el1/el1d_pub/comm/inc/amsc \
+                    l1/el1/el1d_pub/comm/inc/cm \
+                    l1/el1/el1d_pub/comm/inc/common \
+                    l1/el1/el1d_pub/comm/inc/fwk \
+                    l1/el1/el1d_pub/comm/inc/cs \
+                    l1/el1/el1d_pub/comm/inc/pos \
+                    l1/el1/el1d_pub/comm/inc/ps \
+                    l1/el1/el1d_pub/comm/inc/rfdfe \
+                    l1/el1/el1d_pub/comm/inc/rfd \
+                    l1/el1/el1d_pub/comm/inc/rfc \
+                    l1/el1/el1d_pub/comm/inc/rxdfe \
+                    l1/el1/el1d_pub/comm/inc/txdfe \
+                    l1/el1/el1d_pub/comm/inc/rx \
+                    l1/el1/el1d_pub/comm/inc/tx \
+                    l1/el1/el1d_pub/comm/inc/agc \
+                    l1/el1/el1d_pub/comm/inc/tpc \
+                    l1/el1/el1d_pub/comm/trc \
+                    l1/el1/el1d_pub \
+                    l1/el1/common \
+                    protocol/lte_sec/common/include \
+                    l1/el2/emac/src \
+                    interface/l1/el1/el1c/include \
+                    interface/l1/idc \
+                    interface/l1/el1/el1c_sec \
+                    l1/lte_sec/interface \
+                    interface/protocol/general \
+                    l1/interface/mml1/mml1_rf_common
+
+XGEN_INC_DIR += protocol/interface/lte \
+                protocol/interface \
+                $(UNIVERSAL_COMMON)/interface/modem \
+                $(UNIVERSAL_COMMON)/interface/modem/mt6297/common/nr/external/custom \
+
+ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V1)
+  XGEN_INC_DIR += protocol/el2/interface
+  XGEN_INC_DIR += protocol/interface/el2
+  XGEN_INC_DIR += protocol/interface/el2/em
+endif
+
+ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+  XGEN_INC_DIR += protocol/enl2/interface
+  XGEN_INC_DIR += protocol/interface/enl2
+  XGEN_INC_DIR += protocol/interface/enl2/el2/em
+endif
+
+ifneq ($(filter __LTE_PHY_TEST__,$(COM_DEFS)),)
+    XGEN_INC_DIR += $(EL1_FOLDER)/$(strip $(EL1C_MD_VER_FOLDER))/tstm/include
+else
+    XGEN_INC_DIR += $(EL1_FOLDER)/$(strip $(EL1C_MD_VER_FOLDER))/tstm_meta/include \
+                    $(EL1_FOLDER)/comm/tstm_meta/include
+endif
+
+ifeq ($(strip $(LTE_DUMMY_PROTOCOL_ENABLE)),TRUE)
+XGEN_INC_DIR += l1/el1/el1c/comm/l1edps/include/internal \
+                interface/protocol/lte
+endif
+
+ifeq ($(strip $(call Upper,$(UE_SIMULATOR))),TRUE)
+  #LTE UE SIMULATOR
+  ifeq ($(strip $(U4G_ADAPTOR_SUPPORT)),TRUE)
+    XGEN_INC_DIR   += $(strip $(EL1_FOLDER))/intf
+  else
+  #C2K UE SIMULATOR
+    XGEN_INC_DIR   += $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/irt/include    \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/irt/src        \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/common/include \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/interface      \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/csr/include    \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/csr/src        \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/meas/include   \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/meas/src       \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/ch/include     \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/ch/src         \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/idc/src        \
+                      $(strip $(EL1_FOLDER))/comm/idc/include                              \
+                      $(strip $(EL1_FOLDER))/comm/idc/src                                  \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/common/include \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/it/include     \
+                      l1/lte_sec/interface/etmr                                            \
+                      l1/idc/include \
+                      $(UNIVERSAL_COMMON)/interface/modem/mt6297/common/nr/external/custom \
+                      l1/idc/src
+  endif
+else
+  #non UE SIMULATOR
+  XGEN_INC_DIR     += $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/irt/include    \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/irt/src        \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/common/include \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/interface      \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/csr/include    \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/csr/src        \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/meas/include   \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/meas/src       \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/ch/include     \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/ch/src         \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/idc/src        \
+                      $(strip $(EL1_FOLDER))/comm/idc/include                              \
+                      $(strip $(EL1_FOLDER))/comm/idc/src                                  \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/common/include \
+                      $(strip $(EL1_FOLDER))/$(strip $(EL1C_MD_VER_FOLDER))/it/include     \
+                      l1/el1/el1c/$(strip $(EL1C_MD_VER_FOLDER))/common/include            \
+                      l1/idc/include                                                       \
+                      l1/idc/src                                                           \
+                      l1/tl1/tl1itf/inc
+endif
+
+#LTT/UTT/GTEST CODEGEN PATH
+#ifeq ($(strip $(call Upper,$(LTT_ENABLE))),TRUE)
+  XGEN_INC_DIR += protocol/interface/utt
+#endif
+
+# C2K XGEN PATH
+ifneq ($(filter __CL1_TASK_ENABLE__,$(COM_DEFS)),)
+    XGEN_INC_DIR += protocol/interface/as_c2k \
+                      l1/cl1/rfd/external
+endif
+
+
+ifneq ($(strip $(call Upper,$(C2K_MODE_SUPPORT))),NONE)
+  XGEN_INC_DIR += protocol/interface/as_c2k \
+                      l1/cl1/c2k_dma_model \
+                      interface/protocol/l2_c2k/common \
+                      protocol/l2_c2k/fcp \
+                      interface/protocol/l2_c2k/evdo \
+                      protocol/l2_c2k/rcp \
+                      interface/protocol/l2_c2k/evdo \
+                      custom/protocol/l4_c2k \
+                      interface/protocol/l2_c2k/1xrtt \
+                      interface/protocol/as_c2k/1xrtt \
+                      protocol/as_c2k/pe \
+                      protocol/as_c2k/psw \
+                      protocol/nas_c2k/ota \
+                      protocol/l2_c2k/common \
+                      l1/cl1/common \
+                      protocol/l4_c2k/atc \
+                      protocol/l4_c2k/val/rpc \
+                      protocol/l4_c2k/val \
+                      protocol/l4_c2k/uim \
+                      protocol/l2_c2k/lmd \
+                      interface/protocol/l2_c2k/1xrtt \
+                      protocol/as_c2k/clc \
+                      interface/protocol/as_c2k/evdo \
+                      protocol/c2k/sbp \
+                      protocol/as_c2k/slc \
+                      interface/protocol/as_c2k/evdo \
+                      l1/cl1/rmc \
+                      interface/l1/cl1/evdo \
+                      protocol/nas_c2k/css \
+                      protocol/nas_c2k/css/irat \
+                      l1/cl1/hsc \
+                      interface/l1/cl1/common \
+                      l1/cl1/evl1 \
+                      interface/l1/cl1/evdo \
+                      l1/cl1/common \
+                      interface/l1/cl1/common \
+                      interface/l1/cl1/common \
+                      interface/l1/cl1/common \
+                      interface/l1/cl1/common/HW \
+                      l1/cl1/xl1 \
+                      interface/l1/cl1/1xrtt \
+                      l1/cl1/l1d \
+                      interface/l1/cl1/1xrtt \
+                      l1/cl1/tas \
+                      l1/cl1/rfd/external
+
+  XGEN_INC_DIR += protocol/smt/c2k/vmmi_bridge/intf
+endif
+
+XGEN_INC_DIR += interface/driver/devdrv/busmpu
+XGEN_INC_DIR += interface/l1/mml1/external/mml1_cdf/inc/common  \
+                interface/l1/mml1/external/mml1_rf/mmrf_common  \
+		    interface/l1/mml1/external/mml1_cdf/inc/sku_mgr  \
+		    interface/l1/mml1/external/mml1_cdf/device_mgr \
+		    interface/l1/mml1/external/mml1_cdf/inc/device_drivers_rf \
+		    interface/l1/mml1/external/mml1_cdf/inc/device_drivers_fe \
+		    custom/l1/mml1_devices/$(strip $(MM_DEVICE)) \
+                    l1/interface/mml1/mml1_cdf/common \
+                    l1/interface/mml1/mml1_cdf/sku_mgr \
+                    l1/interface/mml1/mml1_cdf/seq_container \
+                    l1/interface/mml1/mml1_cdf/device_drivers_rf \
+                    l1/interface/mml1/mml1_cdf/device_drivers_fe
+XGEN_INC_DIR += protocol/wo/interface
+
+ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+  XGEN_INC_DIR += protocol/enl2/common/enl2_free/src \
+                  protocol/enl2/pdcp/common/src \
+                  protocol/enl2/pdcp/npdcp/src \
+                  $(strip $(PROJDIR))/modem/nras_asn \
+                  protocol/interface/enl2/nl2/5g \
+                  protocol/interface/nrrc \
+                  protocol/interface/2g/5g \
+                  protocol/interface/3g/urr/5g \
+                  protocol/interface/errc/5g \
+                  protocol/interface/nas_multimode/5g \
+                  protocol/interface/enas/5g \
+                  protocol/interface/lte_sec/5g \
+                  protocol/interface/vgnas/5g \
+                  protocol/interface/lte_sec/5g \
+                  protocol/vgnas/interface \
+                  protocol/enl2/interface/5g \
+                  protocol/enl2/mac/nmac/interface \
+                  protocol/enl2/mac/nmac/nmac_dl/include \
+                  protocol/enl2/rlc/nrlc/nrlcul/include \
+                  protocol/enl2/rlc/nrlc/interface/5g \
+                  protocol/enl2/rlc/nrlc/common/include \
+                  interface/protocol/enl2/5g
+
+  XGEN_INC_DIR += protocol/nrrc/interface \
+                  protocol/nrrc/config/include \
+                  protocol/nrrc/nconn/include \
+                  protocol/nrrc/idle/include \
+                  protocol/nrrc/main/include \
+                  protocol/nrrc/meas/include \
+                  protocol/nrrc/background/include \
+                  protocol/nrrc/scg/include \
+                  protocol/nrrc/search/include \
+                  protocol/nrrc/si/include \
+                  protocol/nrrc/utility/include \
+                  protocol/interface/vgnas/5g \
+                  protocol/interface/vgnas \
+                  interface/l1/nl1/external/5g \
+                  $(UNIVERSAL_COMMON)/interface/modem/mt6297/common/nr/external/5g \
+                  $(UNIVERSAL_COMMON)/interface/modem/mt6297/common/nr/external \
+                  $(UNIVERSAL_COMMON)/interface/modem/mt6297/common/nr/internal \
+                  $(UNIVERSAL_COMMON)/interface/modem/mt6297/common/nr/external/custom \
+                  interface/l1/nl1/external/4g \
+                  interface/l1/nl1
+endif
+
+ifeq ($(strip $(EL2_ARCH_VERSION)),EL2_ARCH_V2)
+  ifeq ($(strip $(EUTRAN_MODE_SUPPORT)), EUTRAN_MODE)
+    XGEN_INC_DIR += protocol/interface/enl2/en_common \
+                    protocol/enl2/interface/sim_api \
+                    driver/lhifcore/include \
+                    driver/dpcopro/inc \
+                    interface/service/prbm \
+                    protocol/enl2/interface/icd \
+                    protocol/enl2/interface/msg
+  else
+    ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+      XGEN_INC_DIR += protocol/interface/enl2/en_common \
+                      protocol/enl2/interface/sim_api \
+                      driver/lhifcore/include \
+                      driver/dpcopro/inc \
+                      interface/service/prbm \
+                      protocol/enl2/interface/icd \
+                      protocol/enl2/interface/msg
+    endif
+  endif
+endif
+
+# NL1 CODEGEN PATH
+ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+  XGEN_INC_DIR +=  l1/nl1/public/md97/inc/tx \
+                   l1/nl1/public/md97/inc/rx \
+                   l1/nl1/public/md97/inc/interface/rx \
+                   l1/nl1/public/md97/inc/interface/fwk \
+                   l1/nl1/public/md97/inc/interface/ctrl \
+                   l1/nl1/public/md97/inc/interface/tst \
+                   l1/nl1/public/md97/inc/ctrl \
+                   l1/nl1/public/md97/inc/bm \
+                   l1/nl1/public/md97/inc/interface/bm \
+                   l1/nl1/public/md97/inc/mpc/comm \
+                   l1/nl1/public/md97/inc/mpc/mob \
+                   l1/nl1/public/md97/inc/rfcc/lib \
+                   l1/nl1/public/md97/inc/interface/comm \
+                   l1/nl1/public/md97/inc/interface/hrt \
+                   l1/nl1/public/md97/inc/interface/lpwr \
+                   l1/nl1/public/md97/inc/interface/tc \
+                   l1/nl1/public/md97/inc/hrt \
+                   l1/interface/nl1 \
+                   l1/interface/ll1 \
+                   interface/l1/nl1 \
+                   $(UNIVERSAL_COMMON)/interface/modem/mt6297/CSIF/slm/nr/ \
+                   $(UNIVERSAL_COMMON)/interface/modem/mt6297/CSIF/slm/nr/cmd/inc \
+                   $(UNIVERSAL_COMMON)/interface/modem/mt6297/CSIF/slm/nr/rpt/inc
+endif
+
+
+XGEN_INC_DIR_TARGET := $(XGEN_INC_DIR)
+
+ifeq ($(strip $(MODIS_CONFIG)),TRUE)
+  ifeq ($(MPD_SOURCE_4G_BUILD),TRUE)
+    XGEN_INC_DIR += $(strip $(TSTDIR_SEC))/database_modis/gv \
+                    $(strip $(TSTDIR_SEC))/database_modis/unionTag \
+                    $(BUILD_TSTDIR_SEC)/database_modis/unionTag
+  endif
+  XGEN_INC_DIR += $(strip $(TSTDIR))/database_modis/gv \
+                  $(strip $(TSTDIR))/database_modis/gv/ext \
+                  $(strip $(TSTDIR))/database_modis/unionTag \
+                  $(strip $(TSTDIR))/database_modis/unionTag/ext \
+                  $(BUILD_TSTDIR)/database_modis/unionTag \
+                  $(BUILD_TSTDIR)/database_modis/unionTag/ext \
+                  $(BUILD_TSTDIR)/database_modis/converted_icd_headers
+  XGEN_INC_DIR += protocol/as_multimode/ratdm/cmn_sig/include
+  XGEN_INC_DIR := $(MODISPROJDIR)/_BUILD_XGEN/modem/eas_asn \
+                  $(XGEN_INC_DIR)
+
+  ifeq ($(strip $(FIVEG_MODE_SUPPORT)),FIVEG_MODE)
+    ifeq ($(strip $(MODIS_COMPILER)),VC2017)
+      XGEN_INC_DIR += interface/protocol/utt_v2
+    else
+      ifeq ($(strip $(call uc,$(OS_VERSION))),LINUX)
+        XGEN_INC_DIR += interface/protocol/utt_v2
+      else
+        XGEN_INC_DIR += interface/protocol/utt
+      endif
+    endif
+  endif
+endif
+
+ifdef MCIF_SUPPORT
+  ifeq ($(strip $(MCIF_SUPPORT)),TRUE)
+    XGEN_INC_DIR += interface/service/mcif
+  endif
+endif
+XGEN_INC_DIR += interface/service/mdfpm
+
+ifdef SUBMARINE_SUPPORT
+  ifeq ($(strip $(SUBMARINE_SUPPORT)),TRUE)
+    XGEN_INC_DIR += interface/service/wifi_proxy
+  endif
+endif
+
+ifdef WIFIPROXY_SUPPORT
+  ifeq ($(strip $(WIFIPROXY_SUPPORT)), TRUE)
+    XGEN_INC_DIR += interface/service/wifi_proxy
+  endif
+endif
+
+XGEN_INC_DIR += interface/service/mtf