Import('env') headers = [] instances = [] sources = [] aliases = {} interrupts = env['PLATFORM_SPEC'].get('interrupt', {}) env.Jinja2('interrupt_enums.h', 'interrupt_enums.h.j2', interrupts = interrupts) headers.append('interrupt_enums.h') sources.append(env.Jinja2('default_handlers.cpp', 'default_handlers.cpp.j2', interrupts = interrupts)) periph = env['PLATFORM_SPEC'].get('periph', {}) if 'nvic' in periph: headers.append('nvic.h') for name, data in periph['nvic'].items(): instances.append({ 'type': 'NVIC_t', 'name': name, 'args': [data['offset']], }) aliases['SCB'] = 'NVIC.SCB' aliases['interrupt_ctl'] = 'NVIC' sources.extend([ env.Jinja2('vectors_nvic.cpp', 'vectors_nvic.cpp.j2', interrupts = interrupts), ]) if 'clic' in periph: headers.append('clic.h') for name, data in periph['clic'].items(): instances.append({ 'type': 'CLIC_t', 'name': name, 'args': [data['offset']], }) aliases['interrupt_ctl'] = 'CLIC' sources.extend([ File('dispatch_clic.cpp'), env.Jinja2('vectors_clic.cpp', 'vectors_clic.cpp.j2', interrupts = interrupts), ]) env.Jinja2('interrupt.h', '../templates/periph_instances.h.j2', headers = headers, instances = instances, aliases = aliases) Return('sources')