def configure(conf):
    if conf.env.MICRO_FAMILY.startswith('SF32'):
        conf.env.append_unique('DEFINES', 'USE_HAL_DRIVER')
        conf.env.append_unique('DEFINES', 'SOC_BF0_HCPU')
        conf.env.append_unique('DEFINES', 'HAL_TICK_PER_SECOND=1024')
        conf.env.append_unique('DEFINES', 'HAL_NMI_HANLDER_OVERRIDED')
        conf.env.append_unique('LINKFLAGS', '-Wl,--undefined=HAL_GetTick')

    if conf.env.MICRO_FAMILY == 'SF32LB52':
        conf.env.append_unique('DEFINES', 'SF32LB52X')


def build(bld):
    micro_sources = ['hal_glue.c']
    micro_sources += bld.path.ant_glob('SiFli-SDK/drivers/hal/*.c', excl=['**/bf0_hal_audcodec.c'])

    micro_sources += [
        'SiFli-SDK/middleware/ipc_queue/common/circular_buf.c',
        'SiFli-SDK/middleware/ipc_queue/common/ipc_hw.c',
        'SiFli-SDK/middleware/ipc_queue/common/ipc_queue.c',
    ]

    if bld.env.MICRO_FAMILY == 'SF32LB52':
        micro_sources += [
            'SiFli-SDK/drivers/cmsis/sf32lb52x/bf0_pin_const.c',
            'SiFli-SDK/drivers/cmsis/sf32lb52x/bf0_lcpu_init.c',
            'SiFli-SDK/drivers/cmsis/sf32lb52x/lcpu_patch.c',
            'SiFli-SDK/drivers/cmsis/sf32lb52x/lcpu_config_type.c',
            'SiFli-SDK/drivers/cmsis/sf32lb52x/lcpu_patch_rev_b.c',
            'SiFli-SDK/drivers/cmsis/sf32lb52x/bt_rf_fulcal.c',
            'SiFli-SDK/middleware/ipc_queue/porting/sf32lb52x/hcpu/ipc_hw_port.c',
            'sf32lb52/system_bf0_ap.c',
            'sf32lb52/lcpu_config.c',
        ]

    micro_includes = [
        'SiFli-SDK/customer/boards/include',
        'SiFli-SDK/drivers/Include',
        'SiFli-SDK/drivers/cmsis/Include',
        'SiFli-SDK/external/CMSIS/Include',
        'SiFli-SDK/middleware/include',
        'SiFli-SDK/middleware/ipc_queue/common',
        'SiFli-SDK/middleware/ipc_queue/include',
    ]

    if bld.env.MICRO_FAMILY == 'SF32LB52':
        micro_includes += [
            'sf32lb52',
            'SiFli-SDK/drivers/cmsis/sf32lb52x',
            'SiFli-SDK/middleware/ipc_queue/porting/sf32lb52x/hcpu',
        ]

    bld.env.append_unique(
        'CFLAGS',
        [
            '-Wno-unused-value',
            '-Wno-unused-variable',
            '-Wno-unused-function',
            '-Wno-unused-but-set-variable',
        ],
    )

    # FIXME(SF32LB52): board-specific settings should not be here
    micro_defines = []
    if bld.is_obelix():
      micro_defines += ['LXT_DISABLE']

    bld.stlib(
        source=micro_sources,
        target='hal_sifli',
        use=['pblibc'],
        includes=micro_includes,
        export_includes=micro_includes,
        defines=micro_defines,
    )
