def options(opt):
    opt.recurse('memfault')
    opt.recurse('nimble')


def configure(conf):
    conf.recurse('hal_nordic')
    conf.recurse('hal_sifli')
    conf.recurse('hal_stm32')
    conf.recurse('memfault')
    conf.recurse('nimble')

    if conf.capability('HAS_ROCKY_JS'):
        conf.recurse('jerryscript')

def build(bld):
    bld.recurse('cmsis_core')
    bld.recurse('freertos')
    bld.recurse('nanopb')
    bld.recurse('tinymt')
    bld.recurse('qr_code_generator')
    bld.recurse('speex')
    bld.recurse('nonfree')

    if bld.env.MICRO_FAMILY.startswith('STM32'):
        bld.recurse('hal_stm32')
    elif bld.env.MICRO_FAMILY.startswith('NRF'):
        bld.recurse('hal_nordic')
    elif bld.env.MICRO_FAMILY.startswith('SF32'):
        bld.recurse('hal_sifli')

    if bld.env.bt_controller in ('cc2564x', 'nrf52', 'sf32lb52'):
        bld.recurse('nimble')

    if bld.env.bt_controller == 'cc2564x':
        bld.recurse('ti_bt_sp')

    if bld.is_asterix():
        bld.recurse('hal_lsm6dso')

    if bld.is_obelix():
        bld.recurse('hal_lis2dw12')

    bld.recurse('memfault')
