import os def BuildAppElf(env, app): work_dir = env.subst("$EXT_APPS_WORK_DIR") app_target_name = os.path.join(work_dir, app.appid) app_alias = f"{env['FIRMWARE_BUILD_CFG']}_{app.appid}" app_elf = env.Program( app_target_name, env.GlobRecursive("*.c*", os.path.join(work_dir, app._appdir)), APP_ENTRY=app.entry_point, ) app_elf_dump = env.ObjDump(app_target_name) env.Alias(f"{app_alias}_list", app_elf_dump) app_stripped_elf = env.ELFStripper( os.path.join(env.subst("$PLUGIN_ELF_DIR"), app.appid), app_elf ) env.Alias(app_alias, app_stripped_elf) return app_stripped_elf def generate(env, **kw): env.SetDefault(EXT_APPS_WORK_DIR=kw.get("EXT_APPS_WORK_DIR", ".extapps")) env.VariantDir(env.subst("$EXT_APPS_WORK_DIR"), ".", duplicate=False) env.AddMethod(BuildAppElf) def exists(env): return True