P5.2 metadata queries: c_object_paths / link_libraries on the VM
Two abi(.compiler) build-pipeline primitives the sx driver will pass to link: - c_object_paths() -> List(string) (#import c companion objects) - link_libraries() -> List(string) (#library names) They live in a new stdlib home library/modules/std/build.sx and are serviced by comptime_vm.callCompilerFn reading two new BuildConfig fields that main.zig forwards before the post-link callback. New reusable VM helper makeStringList builds a List(string) in flat memory from the call's result type offsets (target-aware); invoke/callCompilerFn now thread ins.ty for that. Legacy handlers bail loudly (VM-only by nature — post-link; List(string) isn't faithfully buildable in the legacy Value model, 0141). Smoke test examples/1662-platform-build-pipeline-queries (AOT + a 1-line C #source → one object): a post-link callback verifies the VM-built list is well-formed; build exit 0 only if so (negative-probe confirmed a real guard). emit_object + link (the actions) deferred to P5.2b — they replace the Zig driver's auto-emit/auto-link and need a host-installed callback vtable. 703/0 both gates.
This commit is contained in:
@@ -57,6 +57,15 @@ pub const BuildConfig = struct {
|
||||
/// sx bundler can switch on iOS vs. macOS vs. simulator.
|
||||
target_triple: ?[]const u8 = null,
|
||||
|
||||
/// C companion object files (`#import c { #source ... }`, compiled to `.o`)
|
||||
/// and `#library` link names, forwarded by main.zig before the post-link
|
||||
/// callback so the sx-driven build pipeline (Phase 5) can read them via the
|
||||
/// `c_object_paths()` / `link_libraries()` compiler primitives and pass them
|
||||
/// to `link`. Slices reference compiler-owned memory that outlives the
|
||||
/// callback.
|
||||
c_object_paths: []const []const u8 = &.{},
|
||||
link_libraries: []const []const u8 = &.{},
|
||||
|
||||
/// Frameworks the binary links against (`-framework` names) and
|
||||
/// the search paths to look them up in (`-F` directories), forwarded
|
||||
/// from the link step so the sx bundler can embed them into
|
||||
|
||||
Reference in New Issue
Block a user