Skip to content

Commit a9ce4a3

Browse files
speak-agentclaude
andcommitted
prepare: each unit imports what it uses
The decomposition gave every implementation unit a copy of the former file's 87 imports. Each unit, the primary interface and `:state` now import only the modules whose namespaces they name, plus every module that exports into mcpp::build itself (usable unqualified from here) or only re-exports others; 835 import lines go. A unit's import list is again a statement of what it depends on. Verified: GCC 16.1 and LLVM 22.1.8 builds, 130 unit tests, and the golden fixtures byte-identical to the pre-decomposition binary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 5ead2d0 commit a9ce4a3

17 files changed

Lines changed: 0 additions & 835 deletions

‎src/build/prepare.cppm‎

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -60,94 +60,40 @@ export module mcpp.build.prepare;
6060
export import mcpp.build.prepare_inputs;
6161

6262
import std;
63-
import mcpp.targetside;
64-
import mcpp.diag;
65-
import mcpp.build.refusal;
66-
import mcpp.xlings.address_set;
6763
import mcpp.build.version_floor;
68-
import mcpp.home;
6964
import mcpp.platform.axis;
70-
import mcpp.libs.json;
71-
import mcpp.log;
7265
import mcpp.manifest;
7366
import mcpp.source_kind;
7467
import mcpp.modgraph.glob;
7568
import mcpp.modgraph.graph;
7669
import mcpp.modgraph.scanner;
7770
import mcpp.modgraph.validate;
78-
import mcpp.toolchain.clang;
7971
import mcpp.toolchain.hostflags; // the compile-token producer the package std module reuses
80-
import mcpp.toolchain.cenv; // [c-abi] declaration → compiler configuration (design 2026-09-18)
81-
import mcpp.toolchain.cenv_probe; // [c-abi] declaration is checked, not trusted (design §3.2)
82-
import mcpp.toolchain.predefines; // the macros this engine defines: contract and emission in one module
83-
import mcpp.toolchain.cppfly;
8472
import mcpp.toolchain.detect;
8573
import mcpp.toolchain.dialect;
8674
import mcpp.toolchain.fingerprint;
87-
import mcpp.toolchain.msvc;
8875
import mcpp.toolchain.registry;
8976
import mcpp.toolchain.linkmodel;
90-
import mcpp.toolchain.gcc;
9177
// For `resolve_version_match` / `list_installed_versions`: a bare compiler
9278
// family named by the dependency graph resolves to a concrete version through
9379
// exactly the path `mcpp toolchain default <family>` uses.
9480
import mcpp.toolchain.lifecycle;
9581
import mcpp.toolchain.stdmod;
96-
import mcpp.freestanding.target; // the target sysroot layout (libdir)
97-
import mcpp.freestanding.linkline; // the ISA profile, for the std module command
9882
import mcpp.toolchain.post_install;
9983
import mcpp.toolchain.abi;
100-
import mcpp.toolchain.triple;
101-
import mcpp.build.linkage_form; // #519 — which form each dependency takes
10284
import mcpp.build.plan;
103-
import mcpp.build.schedule.policy;
10485
import mcpp.build.flags; // compute_flags — the per-role contracts (#418)
105-
import mcpp.build.distribution; // dist::Role / dist::Contract to_string
106-
import mcpp.platform.capacity; // the host fallback handed to schedule::decide
10786
import mcpp.build.graph_shape; // #407: the graph says which mode wrote it
108-
import mcpp.build.runtime_validation; // declared artifact -> identity verdict
109-
import mcpp.build.cache_key;
110-
import mcpp.pack.abi_tag; // the tag a prebuilt dependency is checked against
111-
import mcpp.pack.prebuilt; // …and the check itself
112-
import mcpp.pack.stage_tree; // where `${mcpp.stage_dir}` points, and its manifest
11387
import mcpp.build.build_program;
114-
import mcpp.build.directives; // directive table: mark / fold_private_tail
115-
import mcpp.build.tool_store; // #355 host tools: store layout + key + overrides
116-
import mcpp.build.dep_graph; // queries over the resolved edge graph
117-
import mcpp.build.provisions; // #359 build-time provisions: table + propagation
118-
import mcpp.build.resources; // #365 Windows resources: synthesise / scan / find rc
11988
import mcpp.build.backend; // BuildOptions for the tool sub-build
12089
import mcpp.build.ninja; // make_ninja_backend — driving that sub-build
121-
import mcpp.lockfile;
122-
import mcpp.config;
12390
import mcpp.xlings;
124-
import mcpp.xlings.subos_info;
12591
import mcpp.xlings.runtime_selection;
12692
import mcpp.runtime.binding;
127-
import mcpp.platform.runtime_search;
12893
import mcpp.toolchain.post_install;
12994
import mcpp.platform;
130-
import mcpp.platform.macos;
131-
import mcpp.build.runner_lookup;
132-
import mcpp.fetcher;
133-
import mcpp.fetcher.progress;
134-
import mcpp.pm.resolver;
135-
import mcpp.pm.index_spec;
136-
import mcpp.pm.index_contract;
137-
import mcpp.pm.index_route;
138-
import mcpp.pm.index_refresh;
139-
import mcpp.pm.mangle;
140-
import mcpp.pm.compat;
141-
import mcpp.pm.dep_spec;
142-
import mcpp.pm.dependency_selector;
143-
import mcpp.pm.lock_io;
144-
import mcpp.version_req;
145-
import mcpp.ui;
146-
import mcpp.log;
14795
import mcpp.wire; // Severity, for PlanNote (#699 item 2, E3)
148-
import mcpp.fallback.install_integrity;
14996
import mcpp.bmi_cache;
150-
import mcpp.project;
15197

15298
namespace mcpp::build {
15399

‎src/build/prepare/config.cpp‎

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -12,91 +12,30 @@ import mcpp.build.prepare_inputs;
1212
import std;
1313
import mcpp.targetside;
1414
import mcpp.diag;
15-
import mcpp.build.refusal;
1615
import mcpp.xlings.address_set;
1716
import mcpp.build.version_floor;
18-
import mcpp.home;
1917
import mcpp.platform.axis;
20-
import mcpp.libs.json;
21-
import mcpp.log;
2218
import mcpp.manifest;
2319
import mcpp.source_kind;
2420
import mcpp.modgraph.glob;
2521
import mcpp.modgraph.graph;
2622
import mcpp.modgraph.scanner;
2723
import mcpp.modgraph.validate;
28-
import mcpp.toolchain.clang;
29-
import mcpp.toolchain.hostflags; // the compile-token producer the package std module reuses
30-
import mcpp.toolchain.cenv; // [c-abi] declaration → compiler configuration (design 2026-09-18)
31-
import mcpp.toolchain.cenv_probe; // [c-abi] declaration is checked, not trusted (design §3.2)
32-
import mcpp.toolchain.predefines; // the macros this engine defines: contract and emission in one module
33-
import mcpp.toolchain.cppfly;
34-
import mcpp.toolchain.detect;
35-
import mcpp.toolchain.dialect;
36-
import mcpp.toolchain.fingerprint;
37-
import mcpp.toolchain.msvc;
38-
import mcpp.toolchain.registry;
39-
import mcpp.toolchain.linkmodel;
40-
import mcpp.toolchain.gcc;
4124
// For `resolve_version_match` / `list_installed_versions`: a bare compiler
4225
// family named by the dependency graph resolves to a concrete version through
4326
// exactly the path `mcpp toolchain default <family>` uses.
44-
import mcpp.toolchain.lifecycle;
45-
import mcpp.toolchain.stdmod;
46-
import mcpp.freestanding.target; // the target sysroot layout (libdir)
47-
import mcpp.freestanding.linkline; // the ISA profile, for the std module command
48-
import mcpp.toolchain.post_install;
49-
import mcpp.toolchain.abi;
50-
import mcpp.toolchain.triple;
51-
import mcpp.build.linkage_form; // #519 — which form each dependency takes
5227
import mcpp.build.plan;
53-
import mcpp.build.schedule.policy;
5428
import mcpp.build.flags; // compute_flags — the per-role contracts (#418)
55-
import mcpp.build.distribution; // dist::Role / dist::Contract to_string
56-
import mcpp.platform.capacity; // the host fallback handed to schedule::decide
5729
import mcpp.build.graph_shape; // #407: the graph says which mode wrote it
58-
import mcpp.build.runtime_validation; // declared artifact -> identity verdict
59-
import mcpp.build.cache_key;
6030
import mcpp.pack.abi_tag; // the tag a prebuilt dependency is checked against
6131
import mcpp.pack.prebuilt; // …and the check itself
6232
import mcpp.pack.stage_tree; // where `${mcpp.stage_dir}` points, and its manifest
6333
import mcpp.build.build_program;
64-
import mcpp.build.directives; // directive table: mark / fold_private_tail
65-
import mcpp.build.tool_store; // #355 host tools: store layout + key + overrides
66-
import mcpp.build.dep_graph; // queries over the resolved edge graph
67-
import mcpp.build.provisions; // #359 build-time provisions: table + propagation
68-
import mcpp.build.resources; // #365 Windows resources: synthesise / scan / find rc
6934
import mcpp.build.backend; // BuildOptions for the tool sub-build
7035
import mcpp.build.ninja; // make_ninja_backend — driving that sub-build
71-
import mcpp.lockfile;
72-
import mcpp.config;
7336
import mcpp.xlings;
74-
import mcpp.xlings.subos_info;
75-
import mcpp.xlings.runtime_selection;
76-
import mcpp.runtime.binding;
77-
import mcpp.platform.runtime_search;
78-
import mcpp.toolchain.post_install;
7937
import mcpp.platform;
80-
import mcpp.platform.macos;
81-
import mcpp.build.runner_lookup;
82-
import mcpp.fetcher;
83-
import mcpp.fetcher.progress;
84-
import mcpp.pm.resolver;
85-
import mcpp.pm.index_spec;
86-
import mcpp.pm.index_contract;
87-
import mcpp.pm.index_route;
88-
import mcpp.pm.index_refresh;
89-
import mcpp.pm.mangle;
90-
import mcpp.pm.compat;
91-
import mcpp.pm.dep_spec;
92-
import mcpp.pm.dependency_selector;
93-
import mcpp.pm.lock_io;
94-
import mcpp.version_req;
9538
import mcpp.ui;
96-
import mcpp.log;
97-
import mcpp.wire; // Severity, for PlanNote (#699 item 2, E3)
98-
import mcpp.fallback.install_integrity;
99-
import mcpp.bmi_cache;
10039
import mcpp.project;
10140

10241
namespace mcpp::build {

‎src/build/prepare/driver.cpp‎

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -8,94 +8,19 @@ import :state;
88
import mcpp.build.prepare_inputs;
99

1010
import std;
11-
import mcpp.targetside;
12-
import mcpp.diag;
13-
import mcpp.build.refusal;
14-
import mcpp.xlings.address_set;
1511
import mcpp.build.version_floor;
16-
import mcpp.home;
17-
import mcpp.platform.axis;
18-
import mcpp.libs.json;
19-
import mcpp.log;
2012
import mcpp.manifest;
2113
import mcpp.source_kind;
22-
import mcpp.modgraph.glob;
23-
import mcpp.modgraph.graph;
24-
import mcpp.modgraph.scanner;
25-
import mcpp.modgraph.validate;
26-
import mcpp.toolchain.clang;
27-
import mcpp.toolchain.hostflags; // the compile-token producer the package std module reuses
28-
import mcpp.toolchain.cenv; // [c-abi] declaration → compiler configuration (design 2026-09-18)
29-
import mcpp.toolchain.cenv_probe; // [c-abi] declaration is checked, not trusted (design §3.2)
30-
import mcpp.toolchain.predefines; // the macros this engine defines: contract and emission in one module
31-
import mcpp.toolchain.cppfly;
32-
import mcpp.toolchain.detect;
33-
import mcpp.toolchain.dialect;
34-
import mcpp.toolchain.fingerprint;
35-
import mcpp.toolchain.msvc;
36-
import mcpp.toolchain.registry;
37-
import mcpp.toolchain.linkmodel;
38-
import mcpp.toolchain.gcc;
3914
// For `resolve_version_match` / `list_installed_versions`: a bare compiler
4015
// family named by the dependency graph resolves to a concrete version through
4116
// exactly the path `mcpp toolchain default <family>` uses.
42-
import mcpp.toolchain.lifecycle;
43-
import mcpp.toolchain.stdmod;
44-
import mcpp.freestanding.target; // the target sysroot layout (libdir)
45-
import mcpp.freestanding.linkline; // the ISA profile, for the std module command
46-
import mcpp.toolchain.post_install;
47-
import mcpp.toolchain.abi;
48-
import mcpp.toolchain.triple;
49-
import mcpp.build.linkage_form; // #519 — which form each dependency takes
5017
import mcpp.build.plan;
51-
import mcpp.build.schedule.policy;
5218
import mcpp.build.flags; // compute_flags — the per-role contracts (#418)
53-
import mcpp.build.distribution; // dist::Role / dist::Contract to_string
54-
import mcpp.platform.capacity; // the host fallback handed to schedule::decide
5519
import mcpp.build.graph_shape; // #407: the graph says which mode wrote it
56-
import mcpp.build.runtime_validation; // declared artifact -> identity verdict
57-
import mcpp.build.cache_key;
58-
import mcpp.pack.abi_tag; // the tag a prebuilt dependency is checked against
59-
import mcpp.pack.prebuilt; // …and the check itself
60-
import mcpp.pack.stage_tree; // where `${mcpp.stage_dir}` points, and its manifest
6120
import mcpp.build.build_program;
62-
import mcpp.build.directives; // directive table: mark / fold_private_tail
63-
import mcpp.build.tool_store; // #355 host tools: store layout + key + overrides
64-
import mcpp.build.dep_graph; // queries over the resolved edge graph
65-
import mcpp.build.provisions; // #359 build-time provisions: table + propagation
66-
import mcpp.build.resources; // #365 Windows resources: synthesise / scan / find rc
6721
import mcpp.build.backend; // BuildOptions for the tool sub-build
6822
import mcpp.build.ninja; // make_ninja_backend — driving that sub-build
69-
import mcpp.lockfile;
70-
import mcpp.config;
71-
import mcpp.xlings;
72-
import mcpp.xlings.subos_info;
73-
import mcpp.xlings.runtime_selection;
74-
import mcpp.runtime.binding;
75-
import mcpp.platform.runtime_search;
76-
import mcpp.toolchain.post_install;
7723
import mcpp.platform;
78-
import mcpp.platform.macos;
79-
import mcpp.build.runner_lookup;
80-
import mcpp.fetcher;
81-
import mcpp.fetcher.progress;
82-
import mcpp.pm.resolver;
83-
import mcpp.pm.index_spec;
84-
import mcpp.pm.index_contract;
85-
import mcpp.pm.index_route;
86-
import mcpp.pm.index_refresh;
87-
import mcpp.pm.mangle;
88-
import mcpp.pm.compat;
89-
import mcpp.pm.dep_spec;
90-
import mcpp.pm.dependency_selector;
91-
import mcpp.pm.lock_io;
92-
import mcpp.version_req;
93-
import mcpp.ui;
94-
import mcpp.log;
95-
import mcpp.wire; // Severity, for PlanNote (#699 item 2, E3)
96-
import mcpp.fallback.install_integrity;
97-
import mcpp.bmi_cache;
98-
import mcpp.project;
9924

10025
namespace mcpp::build {
10126

‎src/build/prepare/features.cpp‎

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,94 +7,57 @@ import :state;
77
import mcpp.build.prepare_inputs;
88

99
import std;
10-
import mcpp.targetside;
1110
import mcpp.diag;
1211
import mcpp.build.refusal;
13-
import mcpp.xlings.address_set;
1412
import mcpp.build.version_floor;
1513
import mcpp.home;
1614
import mcpp.platform.axis;
17-
import mcpp.libs.json;
18-
import mcpp.log;
1915
import mcpp.manifest;
2016
import mcpp.source_kind;
2117
import mcpp.modgraph.glob;
2218
import mcpp.modgraph.graph;
2319
import mcpp.modgraph.scanner;
2420
import mcpp.modgraph.validate;
25-
import mcpp.toolchain.clang;
2621
import mcpp.toolchain.hostflags; // the compile-token producer the package std module reuses
27-
import mcpp.toolchain.cenv; // [c-abi] declaration → compiler configuration (design 2026-09-18)
28-
import mcpp.toolchain.cenv_probe; // [c-abi] declaration is checked, not trusted (design §3.2)
29-
import mcpp.toolchain.predefines; // the macros this engine defines: contract and emission in one module
30-
import mcpp.toolchain.cppfly;
3122
import mcpp.toolchain.detect;
3223
import mcpp.toolchain.dialect;
3324
import mcpp.toolchain.fingerprint;
34-
import mcpp.toolchain.msvc;
3525
import mcpp.toolchain.registry;
3626
import mcpp.toolchain.linkmodel;
37-
import mcpp.toolchain.gcc;
3827
// For `resolve_version_match` / `list_installed_versions`: a bare compiler
3928
// family named by the dependency graph resolves to a concrete version through
4029
// exactly the path `mcpp toolchain default <family>` uses.
4130
import mcpp.toolchain.lifecycle;
4231
import mcpp.toolchain.stdmod;
43-
import mcpp.freestanding.target; // the target sysroot layout (libdir)
44-
import mcpp.freestanding.linkline; // the ISA profile, for the std module command
4532
import mcpp.toolchain.post_install;
4633
import mcpp.toolchain.abi;
4734
import mcpp.toolchain.triple;
48-
import mcpp.build.linkage_form; // #519 — which form each dependency takes
4935
import mcpp.build.plan;
50-
import mcpp.build.schedule.policy;
5136
import mcpp.build.flags; // compute_flags — the per-role contracts (#418)
52-
import mcpp.build.distribution; // dist::Role / dist::Contract to_string
53-
import mcpp.platform.capacity; // the host fallback handed to schedule::decide
5437
import mcpp.build.graph_shape; // #407: the graph says which mode wrote it
55-
import mcpp.build.runtime_validation; // declared artifact -> identity verdict
56-
import mcpp.build.cache_key;
5738
import mcpp.pack.abi_tag; // the tag a prebuilt dependency is checked against
5839
import mcpp.pack.prebuilt; // …and the check itself
5940
import mcpp.pack.stage_tree; // where `${mcpp.stage_dir}` points, and its manifest
6041
import mcpp.build.build_program;
61-
import mcpp.build.directives; // directive table: mark / fold_private_tail
6242
import mcpp.build.tool_store; // #355 host tools: store layout + key + overrides
63-
import mcpp.build.dep_graph; // queries over the resolved edge graph
64-
import mcpp.build.provisions; // #359 build-time provisions: table + propagation
65-
import mcpp.build.resources; // #365 Windows resources: synthesise / scan / find rc
6643
import mcpp.build.backend; // BuildOptions for the tool sub-build
6744
import mcpp.build.ninja; // make_ninja_backend — driving that sub-build
68-
import mcpp.lockfile;
69-
import mcpp.config;
7045
import mcpp.xlings;
71-
import mcpp.xlings.subos_info;
7246
import mcpp.xlings.runtime_selection;
7347
import mcpp.runtime.binding;
74-
import mcpp.platform.runtime_search;
7548
import mcpp.toolchain.post_install;
7649
import mcpp.platform;
77-
import mcpp.platform.macos;
78-
import mcpp.build.runner_lookup;
79-
import mcpp.fetcher;
80-
import mcpp.fetcher.progress;
8150
import mcpp.pm.resolver;
8251
import mcpp.pm.index_spec;
8352
import mcpp.pm.index_contract;
8453
import mcpp.pm.index_route;
8554
import mcpp.pm.index_refresh;
8655
import mcpp.pm.mangle;
87-
import mcpp.pm.compat;
8856
import mcpp.pm.dep_spec;
8957
import mcpp.pm.dependency_selector;
9058
import mcpp.pm.lock_io;
91-
import mcpp.version_req;
9259
import mcpp.ui;
93-
import mcpp.log;
9460
import mcpp.wire; // Severity, for PlanNote (#699 item 2, E3)
95-
import mcpp.fallback.install_integrity;
96-
import mcpp.bmi_cache;
97-
import mcpp.project;
9861

9962
namespace mcpp::build {
10063

0 commit comments

Comments
 (0)