#===========================================================================
#  Copyright (c) 2011-2018 QUALCOMM Technologies Incorporated.
#  All Rights Reserved.
#  Qualcomm Confidential and Proprietary
#===============================================================================

#-------------------------------------------------------------------------------
# Source PATH
#-------------------------------------------------------------------------------
import os
Import('env')
env = env.Clone()

aliases = ['bksecapp', 'uefitzt', 'deploy','allapps']
env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/bksecapp/build/$PROC')
env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/bksecapp/build/${SHORT_BUILDPATH}/$PROC')
target = 'bksecapp'
app_name = 'bksecapp'
uuid_name = '72d7d0c0-ccea-11e8-b568-0800200c9a66'

#------------------------------------------------------------------------------
# We need to specify "neon" to generate SIMD instructions in 32-bit mode
#------------------------------------------------------------------------------
if env['PROC'] == 'scorpion':
  env.Append(CCFLAGS = " -mfpu=neon ")

env.Append(CCFLAGS = ' -DBKSEC_APP=1 ')
env.Append(CCFLAGS = " -DCONFIG_QSEE")
env.Append(LINKFLAGS=' -no-threads ')

chipset_fuse_inc = ['${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/bksecapp/inc/$CHIPSET',
	'${BUILD_ROOT}/core/api/systemdrivers/hwio/${CHIPSET}/phys', #msmhwiobase.h
  ]
includes = ['${BUILD_ROOT}/core/api/services',
    '${BUILD_ROOT}/core/api/boot/qfprom',
    '${BUILD_ROOT}/core/api/kernel/libstd/stringl',
    '${BUILD_ROOT}/core/kernel/smmu/ACv3.0/common/inc/',
    '${BUILD_ROOT}/ssg/securemsm/secmath/shared/inc',
    '${BUILD_ROOT}/ssg/securemsm/secrsa/shared/inc',
    '${BUILD_ROOT}/ssg/securemsm/secrsa/shared/src',
    '${BUILD_ROOT}/ssg/securemsm/uclib/usr/legacy/secrsa/shared/src',
    '${BUILD_ROOT}/ssg/securemsm/uclib/usr/legacy/secrsa/shared/inc',
    '${BUILD_ROOT}/ssg/securemsm/uclib/usr/legacy/secmath/shared/inc',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/common',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/common/idl',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/libs/applib/qsee/src',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsee/mink/include',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/bksecapp/inc',
  ]
includes.extend(chipset_fuse_inc)

#----------------------------------------------------------------------------
# App core Objects
#----------------------------------------------------------------------------
sources = [
        'bksecapp_main.c',
        'bksecapp_warranty.c',
        'bksecapp_kaslr.c',
        'bksecapp_em_fuse.c',
        'bksecapp_wrap_unwrap.c',
        'bksecapp_bl_boot_complete.c',
        'bksecapp_rpmb.c',
        'bksecapp_kdf.c',
]

libs = []

if env['PROC'] == 'scorpion':
  libca = env.SubstRealPath('${MUSL32PATH}/lib/libc.a')
else:
  libca = env.SubstRealPath('${MUSLPATH}/lib/libc.a')

libs.append(env.File(libca))

deploy_sources = []
deploy_sources.extend(sources)

#-------------------------------------------------------------------------------
# Add metadata to image
# For debugging purposes UUID is "SampleApp" in hex.
#-------------------------------------------------------------------------------
md = {
   'appName':    app_name,
   'UUID':       uuid_name,
   'privileges': ['default',
                  'RTICReport',
                  'WhitelistBypass',
                  'HwFuse',
                  'System',
                  'OEMBuf',
                 ],
  'heapSize': 0x10000,
}
if env['PROC'] == 'scorpion':
  md['memoryType'] = 'Unprotected'

deploy_header_files = env.Glob('../inc/*')

bksecapp_units = env.SecureAppBuilder(
    sources = sources,
    includes = includes,
    metadata = md,
    image = target,
    user_libs = libs,
    deploy_sources = deploy_sources + ['SConscript'] + deploy_header_files,
    deploy_variants = env.GetDefaultPublicVariants()
)

env.Alias(aliases, bksecapp_units)
