You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
L1b: extends the [target.'cfg(...)'] namespace to conditional dependencies —
.dependencies / .dev-dependencies / .build-dependencies — evaluated against the
resolved target (host for native, --target for cross), so e.g. a Windows-only
dependency is declared, not faked out-of-band:
[target.'cfg(windows)'.dependencies.compat]
openblas = "0.3.33"
Mechanism (reuses the 0.0.74 cfg evaluator; the graph stays applicative):
- manifest.cppm: refactor the dependency loader into a table-based
load_deps_table (same selectors/namespaces/legacy-key handling) so it serves
both the global [dependencies] (via doc->get_table) AND the nested conditional
tables, which dotted getters can't address (quoted cfg() segment). The
[target.<predicate>] loop parses .dependencies/.dev-/.build- into the deferred
ConditionalConfig.
- prepare.cppm: matching predicates' dep maps merge into m->{dependencies,
devDependencies,buildDependencies} in the same window as the conditional
flags — before dependency resolution — so they resolve like any dep.
insert() preserves an existing unconditional entry (no silent override).
lazy fetch + content-hash identity remain TODO (documented).
Test: tests/e2e/86_target_cfg_dependencies.sh (a cfg(unix)+cfg(windows) widget
always resolves on any host; a never-matching cfg(arch=no_such_arch) bogus-path
'ghost' is excluded — a clean build proves both). Regression: unit 27/0, dep e2e
(09/18/24/27/...) all pass (load_deps refactor sound), self-host build at 0.0.75.
0 commit comments