import os
from building import *

cwd = GetCurrentDir()

# add general drivers
src = Split('''
board.c
CubeMX_Config/CM4/Src/stm32mp1xx_hal_msp.c
''')

path =  [cwd]
path += [cwd + '/CubeMX_Config/CM4/Inc']

if GetDepend(['BSP_USING_OPENAMP']):
    src +=  Glob('CubeMX_Config/CM4/Src/ipcc.c')
    src +=  Glob('CubeMX_Config/CM4/Src/openamp.c')
    src +=  Glob('CubeMX_Config/CM4/Src/openamp_log.c')
    src +=  Glob('CubeMX_Config/CM4/Src/mbox_ipcc.c')
    src +=  Glob('CubeMX_Config/CM4/Src/rsc_table.c')
    src +=  Glob('ports/OpenAMP/libmetal/lib/*.c')
    src +=  Glob('ports/OpenAMP/libmetal/lib/system/generic/*.c')
    src +=  Glob('ports/OpenAMP/libmetal/lib/system/generic/cortexm/*.c')
    src +=  Glob('ports/OpenAMP/open-amp/lib/rpmsg/*.c')
    src +=  Glob('ports/OpenAMP/open-amp/lib/remoteproc/*.c')
    src +=  Glob('ports/OpenAMP/open-amp/lib/virtio/*.c')
    src +=  Glob('ports/OpenAMP/virtual_driver/*.c')
    src +=  Glob('ports/OpenAMP/drv_openamp.c')

if GetDepend(['BSP_USING_OPENAMP']):
    path += [cwd + '/ports/OpenAMP']
    path += [cwd + '/ports/OpenAMP/open-amp/lib/include']
    path += [cwd + '/ports/OpenAMP/libmetal/lib/include']
    path += [cwd + '/ports/OpenAMP/virtual_driver']
    path += [cwd + '/CubeMX_Config/CM4/Inc']

CPPDEFINES = ['CORE_CM4','NO_ATOMIC_64_SUPPORT','METAL_INTERNAL','METAL_MAX_DEVICE_REGIONS=2','VIRTIO_SLAVE_ONLY','STM32MP157Axx','__LOG_TRACE_IO_']
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

# if os.path.isfile(os.path.join(cwd, "ports", 'SConscript')):
#     group = group + SConscript(os.path.join("ports", 'SConscript'))

list = os.listdir(cwd)
for item in list:
    if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
        group = group + SConscript(os.path.join(item, 'SConscript'))

Return('group')
