#===========================================================================
#  Copyright (c) 2011-2018 QUALCOMM Technologies Incorporated.
#  All Rights Reserved.
#  Qualcomm Confidential and Proprietary
#===============================================================================

#-------------------------------------------------------------------------------
# Source PATH
#-------------------------------------------------------------------------------
import os

try:
  #normal builds and integrated apps + sdk builds
  Import('env')
except:
  #standalone TA build against an sdk
  #this sconscript is included in $SDK_ROOT/samples/sampleapp/src
  env = SConscript('../../../external/SConstruct')
  env.InitArch(ARGUMENTS.get('ARCH','aarch64'))
  pass

env = env.Clone()

env.Append( CPPFLAGS = ' -Wno-format' )
aliases = ['ifbio', 'uefitzt', 'deploy','allapps']
env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/ifbio/build/$PROC')
env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/ifbio/build/${SHORT_BUILDPATH}/$PROC')

app_name = 'ifbio'
target_name = 'ifbio'

includes = [
#    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/libs/sp_iris/inc',
    '${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/api/securemsm/trustzone/gp',
    '${BUILD_ROOT}/ssg/securemsm/secmath/shared/inc',
    '${BUILD_ROOT}/ssg/securemsm/secrsa/shared/inc',
#    '${BUILD_ROOT}/ssg/securemsm/sse/qsee/SecureTouch/drTs/include',
#    '${BUILD_ROOT}/ssg/securemsm/sse/qsee/SecureUI/inc',
#    '${BUILD_ROOT}/ssg/securemsm/sse/qsee/SecureUILib/include',
    '${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/qsapps/libs/biometric/inc',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/ifbio/inc',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/ifbio/src',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/ifbio/src/tzWrappers',
#'${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/sampleapp/idl',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/smplserv/src',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/smplserv/idl',
    '${BUILD_ROOT}/ssg/securemsm/trustzone/qsee/mink/include',
    '${BUILD_ROOT}/ssg/securemsm/uclib/usr/legacy/secrsa/shared/inc',
    '${BUILD_ROOT}/ssg/securemsm/uclib/usr/legacy/unifiedcrypto/shared/ecies/inc',
]
#  includes.extend(test_fuse_inc)

#----------------------------------------------------------------------------
# App core Objects
#----------------------------------------------------------------------------
from ifbio import ifbioSource

print '+++++++++++++++[compiling files]+++++++++++++++++++++++++++++++'
for fn in ifbioSource:
    print "++++       " + fn
print '++++++++++++++++++++[total:%d]+++++++++++++++++++++++++++++++++' % len(ifbioSource)

sources = ifbioSource

#########################USER DEFINED MACROS[START]################
import os                       
os.environ['CHIPSET_NAME'] = "sm6150"
os.environ['COMMIT_SHA1'] = "f2ecb4b4e91d8db34eede2eddcc3bc60e29ae4c3"
#os.environ['BUILD_MODE'] = "__DEBUG__"
#os.environ['BUILD_MODE'] = "__RELEASE__"
#os.environ['IFBIO_TA_VERSION_NAME'] = "v2"
print "TARGET_BUILD_VARIANT is " + os.environ['TARGET_BUILD_VARIANT']
if os.environ['TARGET_BUILD_VARIANT'] == "eng":
    os.environ['BUILD_MODE'] = "__DEBUG__"
else:
    os.environ['BUILD_MODE'] = "__RELEASE__"
if 'BUILD_MODE' in os.environ :                                     
    if os.environ['BUILD_MODE'] == "__RELEASE__":                   
        env.Append(CPPDEFINES = ['IFBIO_RELEASE'])                                 
        env.Append(CPPDEFINES = ['TA_RELEASE'])      
        print "++++++++ ifbio release mode ++++++++++"		
    else:                                                           
        print "++++++++ ifbio debug mode ++++++++++"
#        env.Append(CPPDEFINES = ['__DEV_DEBUG__'])                
# develop TA debug for storage                                      
#env.Append(CPPDEFINES = ['DEV_TA_STORAGE_DEBUG'])                  
# develop TA debug for ATTK/DRK                                     
#env.Append(CPPDEFINES = ['DEV_TA_DRK_DEBUG'])                      
# develop TA debug for dump Request #============SCONS_PATCH: DONOT EDIT======== Respone                       
#env.Append(CPPDEFINES = ['DEV_TA_DUMP_INOUT'])                     

## add env variables                                                
env.Replace(USERNAME = os.environ['USER'])                          
                                                                    
if 'CHIPSET_NAME' in os.environ:                                    
    env.Replace(CHIPSET_NAME = os.environ[ 'CHIPSET_NAME' ].lower())
	

if 'COMMIT_SHA1' in os.environ:                                     
    env.Replace(COMMIT_SHA1 = os.environ[ 'COMMIT_SHA1' ])          
                                                                    
## add CPPDEFINES                                                   
env.Append(CPPDEFINES = [                                           
    "__USER__=\\\"${USERNAME}\\\"",                           
    "__CHIPSET__=\\\"${CHIPSET_NAME}\\\"",                    
    "__COMMIT_SHA1__=\\\"${COMMIT_SHA1}\\\"",   
    "__IFBIO_TA_VERSION_NAME__=\\\"${IFBIO_TA_VERSION_NAME}\\\"",  	
])                                                                  
env.Append(CPPDEFINES = ['__QUALCOMM__'])                           

if 'CHIPSET_NAME' in os.environ:
	env.Append(CPPDEFINES = [os.environ[ 'CHIPSET_NAME' ].upper()])     
#target=os.environ[ 'RAW_CHIPSET' ]
#env.Append(CPPDEFINES = [ target ])      
#env.Append(CPPDEFINES = ['SM8250'])       

# env.Append(CPPDEFINES = ['DEV_TA_DRK_DEBUG'])                     
# env.Append(CPPDEFINES = ['SVTS_CMD_ID_SUPPORT'])                    
#                                                                   
env.Append(CPPDEFINES = ['__TA_LOG_TAG__=\\\"IFBIO-TA\\\"'])
env.Append(CPPDEFINES = ['TZ_MODEL_QCOM'])

#########################USER DEFINED MACROS[END]##################

if env.StandaloneSdk():
  libs = [
    '${SDK_ROOT}/libs/${APP_EXEC_MODE}/biometric.lib',
  ]
else:
  libs = [
    env.SConscript('${BUILD_ROOT}/ssg/securemsm/trustzone/qsapps/libs/biometric/build/SConscript', exports='env'),
  ]

#if env['PROC'] == 'scorpion':
#  libca = env.SubstRealPath('${MUSL32PATH}/lib/libc.a')
#  libs.Append(env.File("../libs/sm6150/aarch32/libifaakm_sm6150_aarch32_v1.2.lib"))
#else:
libca = env.SubstRealPath('${MUSLPATH}/lib/libc.a')
libs.append(env.File("../libs/sm6150/aarch64/libifaakm_sm6150_aarch64_v1.2.lib"))
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',
#                    'I2C',
                    'OEMUnwrapKeys',
                    'TestSandbox',
                    'CertValidate',
#                    'SPI',
                    'SPCOM',
                    'TLMM',
#                    'SecureDisplay',
#                    'DebugPolicySource',
                    'IntMask',
                    'OEMBuf',
                    'TransNSAddr',
                    'NSSystemReg',
                    'HdcpEncryption',
                    'RTICReport',
                   ],
#    'heapSize': 0x1B8000,
#    'storageFilesNoPersist': True,
#    'totalStorageFiles': 2000,
#    'cryptoSelfTest' : True,
}

#  if env['PROC'] == 'scorpion':
#    md['memoryType'] = 'Unprotected'

deploy_header_files = env.Glob('../inc/*')

ifbio_units = env.SecureAppBuilder(
    sources = sources,
    includes = includes,
    metadata = md,
    image = target_name,
    user_libs = libs,
    deploy_sources = deploy_sources + ['SConscript'] + deploy_header_files,
    deploy_variants = env.GetDefaultPublicVariants()
)

env.Alias(aliases, ifbio_units)
