#===========================================================================
#  Copyright (c) 2011-2014 QUALCOMM Incorporated.
#  All Rights Reserved.
#  Qualcomm Confidential and Proprietary
#===========================================================================
#
# App Core
#
# GENERAL DESCRIPTION
#    build script
#                      EDIT HISTORY FOR FILE
#
#  This section contains schedulerents describing changes made to the module.
#  Notice that changes are listed in reverse chronological order.
#===============================================================================
import os
Import('env')
env = env.Clone()      
Export('env')

app_name = 'tad'

if env.has_key('USES_NO_CP'):
  env.Append(CCFLAGS = ' -DUSES_NO_CP ')

#------------------------------------------------------------------------------
# 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 = ' -fstack-protector -fstack-protector-all')
env.Append(CCFLAGS = ' -DUSE_QSEE')


includes = [
   '#../../core/api/services',
   '#../../core/api/securemsm/trustzone/qsee',
   '#../../core/api/boot/qfprom',
   '#../../core/securemsm/tz_common/public',
   '#../../core/securemsm/tz_platform/public/tl',
   '#../../core/securemsm/tz_platform/vendor/QSEE/tl',
   '../src/inc',
   '../src/dependency_qsee/inc',
]


#----------------------------------------------------------------------------
# App core Objects
#----------------------------------------------------------------------------
sources = [
        '../src/dependency_qsee/qseedep_main.c',
        '../src/dependency_qsee/qseedep_util.c',
        '../src/dependency_qsee/qseedep_crypto.c',
        '../src/cmd_manager.c',
        '../src/tlv_parser.c',
        '../src/parser_tlv.c',
        '../src/util.c',
        '../src/parser_certificate.c',
        '../src/cmd_crypto.c',
        '../src/cmd_skpm.c',
        '../src/cmd_common.c',
]

print('[TAD]SUPPORT_NEW_TA_BUILD: ' + os.getenv('SUPPORT_NEW_TA_BUILD', 'false'))
if os.getenv('SUPPORT_NEW_TA_BUILD', 'false') == 'true':
    env.Append(LINKFLAGS=' -no-threads ')
    print('[TAD]build TA in deterministic way')

if os.environ['SOC_NAME'] == "sdm845":
    env.Append(CCFLAGS = ' -DUSE_SDM845')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}')

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )

    if hasattr(env, 'IMAGE_ALIASES'):
      for image in env['IMAGE_ALIASES']:
        env.Alias(image, tad_units)
    else:
      aliases = []
      aliases = [app_name,]
      env.Alias(aliases, tad_units)
      

elif os.environ['SOC_NAME'] == "sm8150":
    env.Append(CCFLAGS = ' -DUSE_SM8150')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/scorpion')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/$PROC')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

elif os.environ['SOC_NAME'] == "sm6150":
    env.Append(CCFLAGS = ' -DUSE_SM6150')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/scorpion')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/$PROC')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

elif os.environ['SOC_NAME'] == "sdm710":
    env.Append(CCFLAGS = ' -DUSE_SDM710')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}')
    
    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    if hasattr(env, 'IMAGE_ALIASES'):
      for image in env['IMAGE_ALIASES']:
        env.Alias(image, tad_units)
    else:
      aliases = []
      aliases = [app_name,]
      env.Alias(aliases, tad_units)

elif os.environ['SOC_NAME'] == "sm8250":
    env.Append(CCFLAGS = ' -DUSE_SM8250')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/scorpion')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/$PROC')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

elif os.environ['SOC_NAME'] == "sm7250":
    env.Append(CCFLAGS = ' -DUSE_SM7250')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/scorpion')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/$PROC')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

elif os.environ['SOC_NAME'] == "sm7225":
    env.Append(CCFLAGS = ' -DUSE_SM7225')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/scorpion')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/$PROC')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

elif os.environ['SOC_NAME'] == "sm8350":
    env.Append(CCFLAGS = ' -DUSE_SM8350')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/scorpion')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/$PROC')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'System',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

elif os.environ['SOC_NAME'] == "sm7125":
    env.Append(CCFLAGS = ' -DUSE_SM7125')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/scorpion')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/$PROC')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'System',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

elif os.environ['SOC_NAME'] == "sm7325":
    env.Append(CCFLAGS = ' -DUSE_SM7325')
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/scorpion')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/ssg/bsp/trustzone/qsapps/tad/build/$PROC')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'System',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

elif os.environ['SOC_NAME'] == "sm8450":
    env.Append(CCFLAGS = ' -DUSE_SM8450')
    includes.extend(['${SDK_ROOT}/inc/qsee/', '${BUILD_ROOT}/apps/securemsm/trustzone/qsapps/misc_headers/'])
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/apps/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/${PROC}')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/apps/bsp/trustzone/qsapps/tad/build/${PROC}')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'System',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

elif os.environ['SOC_NAME'] == "sm6225":
    env.Append(CCFLAGS = ' -DUSE_SM6225')
    includes.extend(['${SDK_ROOT}/inc/qsee/', '${BUILD_ROOT}/apps/securemsm/trustzone/qsapps/misc_headers/'])
    env.Replace(LIB_OUT_DIR = '${BUILD_ROOT}/apps/bsp/trustzone/qsapps/tad/build/${SHORT_BUILDPATH}/${PROC}')
    
    #alias
    image = ['tad', 'uefitzt', 'deploy','allapps']
    env.Replace(OUT_DIR = '${BUILD_ROOT}/apps/bsp/trustzone/qsapps/tad/build/${PROC}')
    uuid_name = '53616D70-6C65-4170-7000-000000000032'

    libraries = [
    ]

    md = {
       'appName':    app_name,
       'privileges': ['default',
                      'System',
                      'I2C',
                      'OEMUnwrapKeys',
                      'CertValidate',
                      'SPI',
                      'TLMM',
                      'IntMask',
                      'OEMBuf',
                      'TransNSAddr',
                      'HwFuse',
                      'WhitelistBypass',
                     ],
       'heapSize': 0x400000,
    }

    tad_units = env.SecureAppBuilder(
      sources = sources,
      includes = includes,
      metadata = md,
      image = app_name,
      user_libs = libraries
    )
    
    env.Alias(image, tad_units)

else:
    print("\n\n\n***********************************************************************")
    print("******************************** ERROR ********************************")
    print(os.environ['SOC_NAME'], " is not set up.")
    print("***********************************************************************\n\n\n")
    exit()
