#===============================================================================
#
# ISLAND MGR Libs
#
# GENERAL DESCRIPTION
#    build script
#
# Copyright (c) 2014,2018 by Qualcomm Technologies, Inc.
# All Rights Reserved.
# QUALCOMM Proprietary/GTDR
#
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
#                      EDIT HISTORY FOR FILE
#
#  This section contains comments describing changes made to the module.
#  Notice that changes are listed in reverse chronological order.
#
# when       who     what, where, why
# --------   ---     ---------------------------------------------------------
# 04/10/2014 balac     created 
#===============================================================================
Import('env')
env = env.Clone()

#Do not compile if target does not support island mode
if 'USES_ISLAND' not in env and 'USES_ISLAND_FEATURE' not in env and 'USES_MEMSEG' not in env and 'USES_MEMSEG_BUILDER' not in env:
  env.PrintWarning('Island manager is not available for this target.')
  Return()

#env.Replace(HEXAGON_WARN = "-Wpointer-arith -Wno-missing-braces")

#Turn off optimizations for easier debug
#env.Append(CCFLAGS = '-O0 ')

#-------------------------------------------------------------------------------
# Source PATH
#-------------------------------------------------------------------------------
SRCPATH = "${COREBSP_ROOT}/kernel/island_mgr/slpi"


env.VariantDir('${BUILDPATH}', SRCPATH, duplicate=0)
IMAGE_SOURCES = ['CORE_QDSP6_SW']

#-------------------------------------------------------------------------------
# External depends within CoreBSP
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
# Internal depends within CoreBSP
#-------------------------------------------------------------------------------
CBSP_API = ['KERNEL', 'DAL', 'SYSTEMDRIVERS', 'SERVICES', 'ISLAND_MGR', 'DEBUGTRACE', 'DEBUGTOOLS','POWER']

env.RequirePublicApi(CBSP_API)
env.RequireRestrictedApi(CBSP_API)

#-------------------------------------------------------------------------------
# Sources, libraries
#-------------------------------------------------------------------------------
ISLAND_MGR_C_SOURCES_ROOT = [
   '${BUILDPATH}/src/island_mgr.c',
   '${BUILDPATH}/src/island_mgr_drv.c',
   '${BUILDPATH}/src/island_mgr_qdi.c',
  
]

ISLAND_MGR_ISLAND_C_SOURCES_ROOT = [
   '${BUILDPATH}/src/island_mgr_island.c',
]

ISLAND_MGR_C_SOURCES_USER = [
   '${BUILDPATH}/src/island_mgr_client.c',
]

ISLAND_MGR_ISLAND_C_SOURCES_USER= [
]

island_mgr_island_root = env.Library('${BUILDPATH}/island_mgr_island_root', ISLAND_MGR_ISLAND_C_SOURCES_ROOT)
island_mgr_main_root = env.Library('${BUILDPATH}/island_mgr_main_root', ISLAND_MGR_C_SOURCES_ROOT)
island_mgr_main_user = env.Library('${BUILDPATH}/island_mgr_main_user', ISLAND_MGR_C_SOURCES_USER)

#-------------------------------------------------------------------------------
# Add Libraries to image
#-------------------------------------------------------------------------------

if ('USES_MEMSEG' in env or 'USES_ISLAND' in env):
   env.Append(CCFLAGS = "-G0")
   if 'USES_MEMSEG' in env:
      env.TagLibraryForMemorySegment(['CORE_QDSP6_SW'], 'common', island_mgr_island_root)
   elif 'USES_ISLAND' in env:
      env.AddIslandLibrary(['CORE_QDSP6_SW'], island_mgr_island_root)

env.AddLibsToImage (['CORE_QDSP6_SW'], [island_mgr_island_root, island_mgr_main_root])
env.AddLibsToImage (['CORE_SLPI_USER'], [island_mgr_main_user])

if 'USES_RCINIT' in env and ('USES_MEMSEG' in env or 'USES_ISLAND' in env):
   env.AddRCInitFunc(         # Code Fragment in TMC: YES
    ['CORE_QDSP6_SW'],         # define TMC_RCINIT_INIT_TIMER_TASK_INIT
    {
      'sequence_group'             : 'RCINIT_GROUP_0',             # required
      'init_name'                  : 'island_mgr',                 # required
      'init_function'              : 'island_mgr_init',            # required
      'dependencies'                : ['dalsys'],
    })

if 'USES_RCINIT' in env and ('USES_MEMSEG' in env or 'USES_ISLAND' in env):
   env.AddRCInitFunc(         # Code Fragment in TMC: YES
    ['CORE_SLPI_USER'],         # define TMC_RCINIT_INIT_TIMER_TASK_INIT
    {
      'sequence_group'             : 'RCINIT_GROUP_0',             # required
      'init_name'                  : 'island_mgr_client',          # required
      'init_function'              : 'island_mgr_client_init',     # required
    })
