clean up ShaderCompileStep.make

This commit is contained in:
Robin Voetter
2022-08-20 12:20:45 +02:00
parent efa1a714a8
commit 2d76a88a46

View File

@@ -86,30 +86,26 @@ pub const ShaderCompileStep = struct {
const self = @fieldParentPtr(ShaderCompileStep, "step", step); const self = @fieldParentPtr(ShaderCompileStep, "step", step);
const cwd = std.fs.cwd(); const cwd = std.fs.cwd();
const cmd = try self.builder.allocator.alloc([]const u8, self.glslc_cmd.len + 5); var cmd = std.ArrayList([]const u8).init(self.builder.allocator);
for (self.glslc_cmd) |part, i| { try cmd.appendSlice(self.glslc_cmd);
cmd[i] = part; const base_cmd_len = cmd.items.len;
}
for (self.shaders.items) |shader| { for (self.shaders.items) |shader| {
var argc: usize = cmd.len - 2; cmd.items.len = base_cmd_len;
if (shader.entry_point) |entry_point| { if (shader.entry_point) |entry_point| {
cmd[argc - 3] = try std.fmt.allocPrint(self.builder.allocator, "-fentry-point={s}", .{entry_point}); try cmd.append(try std.fmt.allocPrint(self.builder.allocator, "-fentry-point={s}", .{entry_point}));
argc += 1;
} }
if (shader.stage) |stage| { if (shader.stage) |stage| {
cmd[argc - 3] = try std.fmt.allocPrint(self.builder.allocator, "-fshader-stage={s}", .{@tagName(stage)}); try cmd.append(try std.fmt.allocPrint(self.builder.allocator, "-fshader-stage={s}", .{@tagName(stage)}));
argc += 1;
} }
const dir = path.dirname(shader.full_out_path).?; const dir = path.dirname(shader.full_out_path).?;
try cwd.makePath(dir); try cwd.makePath(dir);
cmd[argc - 3] = shader.source_path;
cmd[argc - 2] = "-o"; try cmd.appendSlice(&.{shader.source_path, "-o", shader.full_out_path});
cmd[argc - 1] = shader.full_out_path; try self.builder.spawnChild(cmd.items);
try self.builder.spawnChild(cmd[0..argc]);
} }
} }
}; };