forked from mirror/vulkan-zig
Merge pull request #113 from SammyJames/new_modules
fixing up vulkan-zig for new build sys
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
|||||||
zig-cache/
|
zig-cache/
|
||||||
zig-out/
|
zig-out/
|
||||||
|
.vscode/
|
||||||
10
build.zig
10
build.zig
@@ -30,7 +30,7 @@ pub fn build(b: *std.Build) void {
|
|||||||
generate_cmd.addArg(path);
|
generate_cmd.addArg(path);
|
||||||
|
|
||||||
_ = b.addModule("vulkan-zig", .{
|
_ = b.addModule("vulkan-zig", .{
|
||||||
.source_file = generate_cmd.addOutputFileArg("vk.zig"),
|
.root_source_file = generate_cmd.addOutputFileArg("vk.zig"),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,15 +40,15 @@ pub fn build(b: *std.Build) void {
|
|||||||
.name = "triangle",
|
.name = "triangle",
|
||||||
.root_source_file = .{ .path = "examples/triangle.zig" },
|
.root_source_file = .{ .path = "examples/triangle.zig" },
|
||||||
.target = target,
|
.target = target,
|
||||||
|
.link_libc = true,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
b.installArtifact(triangle_exe);
|
b.installArtifact(triangle_exe);
|
||||||
triangle_exe.linkLibC();
|
|
||||||
triangle_exe.linkSystemLibrary("glfw");
|
triangle_exe.linkSystemLibrary("glfw");
|
||||||
|
|
||||||
const example_registry = b.option([]const u8, "example-registry", "Override the path to the Vulkan registry used for the examples") orelse "examples/vk.xml";
|
const example_registry = b.option([]const u8, "example-registry", "Override the path to the Vulkan registry used for the examples") orelse "examples/vk.xml";
|
||||||
const gen = VkGenerateStep.create(b, example_registry);
|
const gen = VkGenerateStep.create(b, example_registry);
|
||||||
triangle_exe.addModule("vulkan", gen.getModule());
|
triangle_exe.root_module.addImport("vulkan", gen.getModule());
|
||||||
|
|
||||||
const vk_zig_install_step = b.addInstallFile(gen.getSource(), "src/vk.zig");
|
const vk_zig_install_step = b.addInstallFile(gen.getSource(), "src/vk.zig");
|
||||||
b.getInstallStep().dependOn(&vk_zig_install_step.step);
|
b.getInstallStep().dependOn(&vk_zig_install_step.step);
|
||||||
@@ -60,7 +60,7 @@ pub fn build(b: *std.Build) void {
|
|||||||
);
|
);
|
||||||
shaders.add("triangle_vert", "examples/shaders/triangle.vert", .{});
|
shaders.add("triangle_vert", "examples/shaders/triangle.vert", .{});
|
||||||
shaders.add("triangle_frag", "examples/shaders/triangle.frag", .{});
|
shaders.add("triangle_frag", "examples/shaders/triangle.frag", .{});
|
||||||
triangle_exe.addModule("shaders", shaders.getModule());
|
triangle_exe.root_module.addImport("shaders", shaders.getModule());
|
||||||
|
|
||||||
const triangle_run_cmd = b.addRunArtifact(triangle_exe);
|
const triangle_run_cmd = b.addRunArtifact(triangle_exe);
|
||||||
triangle_run_cmd.step.dependOn(b.getInstallStep());
|
triangle_run_cmd.step.dependOn(b.getInstallStep());
|
||||||
@@ -83,6 +83,6 @@ pub fn build(b: *std.Build) void {
|
|||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
ref_all_decls_test.addModule("vulkan", gen.getModule());
|
ref_all_decls_test.root_module.addImport("vulkan", gen.getModule());
|
||||||
test_step.dependOn(&ref_all_decls_test.step);
|
test_step.dependOn(&ref_all_decls_test.step);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,12 +99,12 @@ pub const ShaderCompileStep = struct {
|
|||||||
/// Returns the shaders module with name.
|
/// Returns the shaders module with name.
|
||||||
pub fn getModule(self: *ShaderCompileStep) *Build.Module {
|
pub fn getModule(self: *ShaderCompileStep) *Build.Module {
|
||||||
return self.step.owner.createModule(.{
|
return self.step.owner.createModule(.{
|
||||||
.source_file = self.getSource(),
|
.root_source_file = self.getSource(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the file source for the generated shader resource code.
|
/// Returns the file source for the generated shader resource code.
|
||||||
pub fn getSource(self: *ShaderCompileStep) Build.FileSource {
|
pub fn getSource(self: *ShaderCompileStep) Build.LazyPath {
|
||||||
return .{ .generated = &self.generated_file };
|
return .{ .generated = &self.generated_file };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,12 +57,12 @@ pub const GenerateStep = struct {
|
|||||||
/// Returns the module with the generated budings, with name `module_name`.
|
/// Returns the module with the generated budings, with name `module_name`.
|
||||||
pub fn getModule(self: *GenerateStep) *Build.Module {
|
pub fn getModule(self: *GenerateStep) *Build.Module {
|
||||||
return self.step.owner.createModule(.{
|
return self.step.owner.createModule(.{
|
||||||
.source_file = self.getSource(),
|
.root_source_file = self.getSource(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the file source for the generated bindings.
|
/// Returns the file source for the generated bindings.
|
||||||
pub fn getSource(self: *GenerateStep) Build.FileSource {
|
pub fn getSource(self: *GenerateStep) Build.LazyPath {
|
||||||
return .{ .generated = &self.generated_file };
|
return .{ .generated = &self.generated_file };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,13 +128,14 @@ pub const GenerateStep = struct {
|
|||||||
var carets: []const u8 = undefined;
|
var carets: []const u8 = undefined;
|
||||||
var current_token: std.zig.Token = undefined;
|
var current_token: std.zig.Token = undefined;
|
||||||
|
|
||||||
std.debug.print("{s}\n", .{ src, });
|
std.debug.print("{s}\n", .{
|
||||||
|
src,
|
||||||
|
});
|
||||||
|
|
||||||
var tokens = try std.ArrayList(std.zig.Ast.Error).initCapacity(b.allocator, tree.errors.len);
|
var tokens = try std.ArrayList(std.zig.Ast.Error).initCapacity(b.allocator, tree.errors.len);
|
||||||
try tokens.appendSlice(tree.errors);
|
try tokens.appendSlice(tree.errors);
|
||||||
|
|
||||||
std.mem.sort(std.zig.Ast.Error, tokens.items, {},
|
std.mem.sort(std.zig.Ast.Error, tokens.items, {}, struct {
|
||||||
struct {
|
|
||||||
pub fn desc(_: void, l_err: std.zig.Ast.Error, r_err: std.zig.Ast.Error) bool {
|
pub fn desc(_: void, l_err: std.zig.Ast.Error, r_err: std.zig.Ast.Error) bool {
|
||||||
return l_err.token > r_err.token;
|
return l_err.token > r_err.token;
|
||||||
}
|
}
|
||||||
@@ -153,18 +154,28 @@ pub const GenerateStep = struct {
|
|||||||
repeat = 1;
|
repeat = 1;
|
||||||
spaces = "";
|
spaces = "";
|
||||||
while (repeat < current_token.loc.start - start) {
|
while (repeat < current_token.loc.start - start) {
|
||||||
spaces = try std.fmt.allocPrint(b.allocator, "{s} ", .{ spaces, });
|
spaces = try std.fmt.allocPrint(b.allocator, "{s} ", .{
|
||||||
|
spaces,
|
||||||
|
});
|
||||||
repeat += 1;
|
repeat += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
repeat = 1;
|
repeat = 1;
|
||||||
carets = "";
|
carets = "";
|
||||||
while (repeat < current_token.loc.end + 1 - current_token.loc.start) {
|
while (repeat < current_token.loc.end + 1 - current_token.loc.start) {
|
||||||
carets = try std.fmt.allocPrint(b.allocator, "{s}^", .{ carets, });
|
carets = try std.fmt.allocPrint(b.allocator, "{s}^", .{
|
||||||
|
carets,
|
||||||
|
});
|
||||||
repeat += 1;
|
repeat += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
std.debug.print("ERROR: {}\nTOKEN: {}\n\n{s}\n{s}{s}\n", .{ tokens.items[tokens.items.len - 1], current_token, if(src[start] == '\n') src[start + 1..end] else src[start..end], spaces, carets, });
|
std.debug.print("ERROR: {}\nTOKEN: {}\n\n{s}\n{s}{s}\n", .{
|
||||||
|
tokens.items[tokens.items.len - 1],
|
||||||
|
current_token,
|
||||||
|
if (src[start] == '\n') src[start + 1 .. end] else src[start..end],
|
||||||
|
spaces,
|
||||||
|
carets,
|
||||||
|
});
|
||||||
|
|
||||||
_ = tokens.pop();
|
_ = tokens.pop();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user