mirror of
https://github.com/toyota-connected/emb_cli.git
synced 2026-06-21 07:19:37 -07:00
c45952bd58
`cross.extends` gains a second form alongside the board reference:
- <board> : a target in emb's shipped board library (hardware).
- <dir>#<target> : a target in another emb project at <dir> (the project
layer) — e.g. a Flutter app extending an ivi-homescreen
target, so plugin config (DISABLE_PLUGINS/PLUGINS_DIR,
plugin -dev packages) lives with the app.
This completes the layering: app -> project -> board. <dir> is resolved relative
to the extending manifest's project root (the .emb/ parent in .emb/ mode, else
the manifest's dir); the referenced project's own extends chain is applied via
resolve(), and the same merge rules apply (maps deep-merge, backends/cpu_flags
replace, sysroot.dev_packages union). Reference cycles across projects are
detected and reported.
Tests cover the three-layer merge (hardware from board, backends from project,
plugins from app, dev_packages unioned across all three) plus unknown-target
and missing-project errors.
Signed-off-by: Joel Winarske <joel.winarske@gmail.com>