change addCSourceFiles to use LazyPath instead Dependency (#19017)

Co-authored-by: Jacob Young <jacobly0@users.noreply.github.com>
This commit is contained in:
David Rubin 2024-02-24 13:12:04 -08:00 committed by GitHub
parent 70fbafacf2
commit 3eacd1b2e5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 14 deletions

View File

@ -79,9 +79,9 @@ pub const SystemLib = struct {
};
pub const CSourceFiles = struct {
dependency: ?*std.Build.Dependency,
/// If `dependency` is not null relative to it,
/// else relative to the build root.
root: LazyPath,
/// `files` is relative to `root`, which is
/// the build root by default
files: []const []const u8,
flags: []const []const u8,
};
@ -453,9 +453,9 @@ pub fn linkFramework(m: *Module, name: []const u8, options: LinkFrameworkOptions
}
pub const AddCSourceFilesOptions = struct {
/// When provided, `files` are relative to `dependency` rather than the
/// When provided, `files` are relative to `root` rather than the
/// package that owns the `Compile` step.
dependency: ?*std.Build.Dependency = null,
root: LazyPath = .{ .path = "" },
files: []const []const u8,
flags: []const []const u8 = &.{},
};
@ -466,7 +466,7 @@ pub fn addCSourceFiles(m: *Module, options: AddCSourceFilesOptions) void {
const allocator = b.allocator;
const c_source_files = allocator.create(CSourceFiles) catch @panic("OOM");
c_source_files.* = .{
.dependency = options.dependency,
.root = options.root,
.files = b.dupeStrings(options.files),
.flags = b.dupeStrings(options.flags),
};

View File

@ -1197,15 +1197,11 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
prev_has_cflags = true;
}
if (c_source_files.dependency) |dep| {
for (c_source_files.files) |file| {
try zig_args.append(dep.builder.pathFromRoot(file));
}
} else {
for (c_source_files.files) |file| {
try zig_args.append(b.pathFromRoot(file));
}
const root_path = c_source_files.root.getPath2(module.owner, step);
for (c_source_files.files) |file| {
try zig_args.append(b.pathJoin(&.{ root_path, file }));
}
total_linker_objects += c_source_files.files.len;
},