#===============================================================================
#
#                             Edit History
# $Header: //components/rel/ssg.tz/1.10/securemsm/platform/services/debug/build/SConscript#3 $
#
# when         who     what, where, why
# ----------   ---     ---------------------------------------------------------
# 2017/06/20   pdosi     Create initial version
# 2019/05/07   skare     Added sysdbg sources and offtarget scons
#===============================================================================
#                    Copyright (c) 2011, 2017 - 2019 QUALCOMM Incorporated.
#                           All Rights Reserved.
#                         QUALCOMM Proprietary/GTDR
#===============================================================================
Import('env')
env = env.Clone()
import os

env.LoadSoftwareUnits()

#-------------------------------------------------------------------------------
# Source PATH
#-------------------------------------------------------------------------------
SRCPATH = "../"

env.VariantDir('${BUILDPATH}', SRCPATH, duplicate=0)

#-------------------------------------------------------------------------------
# Internal depends within CoreBSP
#-------------------------------------------------------------------------------
env.RequirePublicApi([
   'DAL',               #< HALcomdef.h
   'HAL',
   'SERVICES',          #< comdef.h
   'POWER',
   'SYSTEMDRIVERS',
   'SYSTEMDEBUG',
   'PMIC',
   'MPROC',
   'KERNEL_API',
   'KERNEL',
   'PERIPHERALS',
   'HWENGINES',
   'POWER',
   'CBSP_POWER_PSCI',
], area = 'core')

env.RequireRestrictedApi([
  'TZCHIPSET',          #< tzbsp_target.h
])

SSG_API = [
   'AC',
   'SSGPLATFORM',       #<tzbsp_subsys.h/armlib
   'MINK',              #<tzbsp_log.h  //TODO: This should be removed, once header files are moved.
   'SECUREMSM',         #<SecDbg.h, secrsa/env/tz/inc, secmath/env/tz/inc
   'MINK_OEM',
   'UNIFIEDCRYPTO',
   'TZCRYPTO', 
   'TZKS',
   'SECUREMSM',
   'MONITOR_API',
   'MONITOR_ARCH_API',
   'MON_CALL',              #< monitor calls
   'SSGPLATFORM_DRIVERS',   #< interrupt_controller.h
   'SSGPLATFORM_SERVICES',  #< fatal_dump.h
   'FUSEPROV',
   'PIL',
   'TZSECAPP',
   'TZIMGAUTH',
   'SECUREFUSES',
   'FVER',
]
env.RequirePublicApi(SSG_API, area = 'ssg')
env.RequireRestrictedApi(SSG_API)


#-------------------------------------------------------------------------------
# Sources, libraries
#-------------------------------------------------------------------------------
SOURCES = [
    '${BUILDPATH}/src/dbg_fatal_err.c',
    '${BUILDPATH}/src/dbg_memory_dump.c',
    '${BUILDPATH}/src/dbg_minidump.c',
    '${BUILDPATH}/src/${TZ_EXEC_MODE}/dbg_memory_dump_arch.c',
    '${BUILDPATH}/src/dbg_sec_wdog_timer.c',
    '${BUILDPATH}/src/dbg_cmn.c',
    '${BUILDPATH}/src/dbg_checks.c',
    '${BUILDPATH}/src/dbg_tz_var_md.c'
]

SYSDBG_SOURCES = [
    '${BUILDPATH}/src/dbg_ctxdump.c',
]

if env['CHIPSET'] in ['sdx55']:
  SOURCES.append('${BUILDPATH}/src/dbg_fatal_err_pcie.c')
else:
  SOURCES.append('${BUILDPATH}/src/dbg_fatal_err_pcie_stub.c')

#-------------------------------------------------------------------------------
# Add Libraries to image
#-------------------------------------------------------------------------------
env.AddBinaryObject('TZOS_IMAGE', SOURCES)
env.AddBinaryObject('MONITOR_IMAGE', SYSDBG_SOURCES)

if 'USES_RCINIT' in env:
  RCINIT_IMGS = ['CTZL64_IMAGE', 'TZOS_IMAGE', 'CTZL_IMAGE']
  env.AddRCInitFunc(
    RCINIT_IMGS,
    {
      'sequence_group'             : 'RCINIT_GROUP_1',
      'init_name'                  : 'dbg',
      'init_function'              : 'dbg_init',
      'dependencies'               : ['timer'],
	  'policy_optin'               : ['default','warm']
    })

if 'USES_RCINIT' in env:
  RCINIT_IMGS = ['CTZL64_IMAGE', 'TZOS_IMAGE', 'CTZL_IMAGE']
  env.AddRCInitFunc(
    RCINIT_IMGS,
    {
      'sequence_group'             : 'RCINIT_GROUP_1',
      'init_name'                  : 'dump_mutex',
      'init_function'              : 'dump_memory_mutex_init',
      'dependencies'               : [''],
	  'policy_optin'               : ['default']
    })

env.Deploy("SConscript")

env.SConscript('${BUILD_ROOT}/ssg/securemsm/platform/services/debug/test/offtarget/offtarget.scons', exports='env')
