#===========================================================================
#  Copyright (c) 2011-2016, 2017 QUALCOMM Technologies Incorporated.
#  All Rights Reserved.
#  Qualcomm Confidential and Proprietary
#===========================================================================
#
#
# GENERAL DESCRIPTION
#    build script
#                      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
# --------   ---     ---------------------------------------------------------
#
#===============================================================================

#-------------------------------------------------------------------------------
# Source PATH
#-------------------------------------------------------------------------------
import os
Import('env')

env = env.Clone()

#------------------------------------------------------------------------------
# HDCP FUNC
#------------------------------------------------------------------------------
def HDCP_LOGD(str):
  print("[HDCP_DBG] " + str)

CHIPSET = env['CHIPSET']
TARGET_BUILD_VARIANT = os.environ['TARGET_BUILD_VARIANT']
SUPPORT_NEW_TA_BUILD = os.environ.get('SUPPORT_NEW_TA_BUILD','false')

HDCP_LOGD("CHIPSET :" + CHIPSET)
HDCP_LOGD("TARGET_BUILD_VARIANT :" + TARGET_BUILD_VARIANT)

QTEE_TAS_SDK_DIR = os.getenv("QTEE_TAS_SDK_DIR")
HDCP_LOGD("QTEE_TAS_SDK_DIR : " + QTEE_TAS_SDK_DIR)
#------------------------------------------------------------------------------
# HDCP Defines
#------------------------------------------------------------------------------
if env['PROC'] == 'scorpion':
  env.Append(CCFLAGS = " -mfpu=neon ")

env.Append(CPPDEFINES=['CONFIG_MSM8996'])
env.Append(CPPDEFINES=['CONFIG_MSM8998'])

env.Append(CPPDEFINES=['CONFIG_HDCP_64BIT'])
env.Append(CPPDEFINES=['USE_4KMIRRORING'])

if TARGET_BUILD_VARIANT == 'eng':
  env.Append(CPPDEFINES=['DEBUG'])

env.Append(CFLAGS = ' -fstack-protector -fstack-protector-all')
env.Append(CCFLAGS = " -Wno-error -Wno-unused-value ")

if SUPPORT_NEW_TA_BUILD == 'true':
  env.Append(LINKFLAGS=' -no-threads ')

#------------------------------------------------------------------------------
# HDCP includes
#------------------------------------------------------------------------------
incl_common = [
    "${INC_ROOT}/core/api/services",
    "${INC_ROOT}/core/kernel/smmu/ACv3.0/common/inc",
    QTEE_TAS_SDK_DIR +"/inc/qsee",
    "${BUILD_ROOT}/../qtee_tas/apps/securemsm/trustzone/qsapps/misc_headers",
    "${BUILD_ROOT}/../trustzone_images/core/api/services",
    "${BUILD_ROOT}/../trustzone_images/core/kernel/smmu/ACv3.0/common/inc",
    "${BUILD_ROOT}/../trustzone_images/ssg/api/securemsm/trustzone/qsee",
    "${BUILD_ROOT}/../trustzone_images/ssg/securemsm/accesscontrol/api",
    "${BUILD_ROOT}/../trustzone_images/ssg/securemsm/trustzone/qsee/include",
    'src',
]

#----------------------------------------------------------------------------
# App core Objects
#----------------------------------------------------------------------------
sour_common = [
    'tz_hdcp2.c',
    'tz_hdcp2_crypto.c',
    'tz_hdcp2_receiver.c',
    'tz_hdcp2_transmitter.c',
    'tz_hdcp2_loadkey.c',
    'wrapAPI/tz_hdcp2_decode.c',
    'qsee_printk.c',
]

arm_libs = [
    File(env.SubstRealPath('${LLVMLIB}/libclang_rt.builtins-arm.a'))
]

if env["PROC"] == "scorpion":
    arm_libs.append(File(env.SubstRealPath('${MUSL32PATH}/lib/libc.a')))
else:
    arm_libs.append(File(env.SubstRealPath('${MUSLPATH}/lib/libc.a')))

target_name = 'sshdcpapp'
app_name = 'SshdcpApp'

#-------------------------------------------------------------------------------
# Add metadata to image
#-------------------------------------------------------------------------------
sources = [
    sour_common,
]

privileges = ['default',
              'I2C',
              'OEMUnwrapKeys',
              'CertValidate',
              'SPI',
              'TLMM',
              'SecureDisplay',
              'IntMask',
              'OEMBuf',
              'TransNSAddr',
             ]

privileges.append('SPCOM')
privileges.append('HdcpEncryption')
privileges.append('System')
privileges.append('HDCP_R2P2')
privileges.append('OPS')

md = {
  'appName': app_name,
  'privileges': privileges,
  'heapSize' : 0x13000,
}

sshdcpapp_units = env.SecureAppBuilder(
    sources = sources,
    includes = incl_common,
    metadata = md,
    image = target_name,
    user_libs = arm_libs,
)

op = env.Alias('sshdcpapp', sshdcpapp_units)
Return('sshdcpapp_units')
