Updates Zig
This commit is contained in:
parent
7cd8f4c8c4
commit
9151811918
3 changed files with 32 additions and 25 deletions
24
build.zig
24
build.zig
|
|
@ -21,10 +21,12 @@ pub fn build(b: *std.Build) void {
|
|||
const upstream = b.dependency("dear-imgui", .{});
|
||||
|
||||
// Compile Dear ImGui as a static library
|
||||
const dear_imgui_lib = b.addStaticLibrary(.{
|
||||
const dear_imgui_lib = b.addLibrary(.{
|
||||
.name = "dear_imgui",
|
||||
.target = target,
|
||||
.optimize = optimize_external,
|
||||
.root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize_external,
|
||||
}),
|
||||
});
|
||||
dear_imgui_lib.addIncludePath(upstream.path(""));
|
||||
dear_imgui_lib.installHeadersDirectory(upstream.path("."), "", .{});
|
||||
|
|
@ -48,10 +50,12 @@ pub fn build(b: *std.Build) void {
|
|||
b.installArtifact(dear_imgui_lib);
|
||||
|
||||
// Compile the Vulkan backend as a static library
|
||||
const dear_imgui_vulkan_lib = b.addStaticLibrary(.{
|
||||
const dear_imgui_vulkan_lib = b.addLibrary(.{
|
||||
.name = "dear_imgui_vulkan",
|
||||
.target = target,
|
||||
.optimize = optimize_external,
|
||||
.root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize_external,
|
||||
}),
|
||||
});
|
||||
dear_imgui_vulkan_lib.linkLibrary(dear_imgui_lib);
|
||||
dear_imgui_vulkan_lib.addCSourceFile(.{ .file = upstream.path("backends/imgui_impl_vulkan.cpp"), .flags = flags });
|
||||
|
|
@ -68,9 +72,11 @@ pub fn build(b: *std.Build) void {
|
|||
// Compile the generator
|
||||
const generate_exe = b.addExecutable(.{
|
||||
.name = "generate",
|
||||
.root_source_file = b.path("src/generate.zig"),
|
||||
.target = native_target,
|
||||
.optimize = optimize,
|
||||
.root_module = b.createModule(.{
|
||||
.root_source_file = b.path("src/generate.zig"),
|
||||
.target = native_target,
|
||||
.optimize = optimize,
|
||||
}),
|
||||
});
|
||||
|
||||
const generate_cmd = b.addRunArtifact(generate_exe);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
.name = .dear_imgui,
|
||||
.fingerprint = 0xc1cc609af54040bd,
|
||||
.version = "0.0.0",
|
||||
.minimum_zig_version = "0.14.0",
|
||||
.minimum_zig_version = "0.15.1",
|
||||
.dependencies = .{
|
||||
.@"dear-imgui" = .{
|
||||
.url = "https://github.com/ocornut/imgui/archive/refs/tags/v1.91.0-docking.tar.gz",
|
||||
|
|
|
|||
|
|
@ -182,8 +182,9 @@ pub fn main() !void {
|
|||
|
||||
const out = try std.fs.cwd().createFile(out_path, .{});
|
||||
defer out.close();
|
||||
var buf = std.io.bufferedWriter(out.writer());
|
||||
const writer = buf.writer();
|
||||
var writer_buf: [4096]u8 = undefined;
|
||||
var file_writer = out.writerStreaming(&writer_buf);
|
||||
const writer = &file_writer.interface;
|
||||
|
||||
// Write the prefix
|
||||
if (prefix_path) |p| {
|
||||
|
|
@ -222,7 +223,7 @@ pub fn main() !void {
|
|||
// Get a list of cimgui methods. These were already written as externs, and can be aliased
|
||||
// when we write their respective types.
|
||||
var methods = try Methods.get(allocator, &header.value);
|
||||
defer methods.deinit();
|
||||
defer methods.deinit(allocator);
|
||||
|
||||
// Write cimgui enums as Zig enums.
|
||||
try writeEnums(allocator, writer, &header.value);
|
||||
|
|
@ -243,7 +244,7 @@ pub fn main() !void {
|
|||
}
|
||||
|
||||
// Flush and exit
|
||||
try buf.flush();
|
||||
try writer.flush();
|
||||
}
|
||||
|
||||
fn getDeclarations(allocator: Allocator, header: *const Header) !Declarations {
|
||||
|
|
@ -347,7 +348,7 @@ fn writeExternFunctions(
|
|||
}
|
||||
try writer.writeAll(", ");
|
||||
}
|
||||
try writer.writeAll(") callconv(.C) ");
|
||||
try writer.writeAll(") callconv(.c) ");
|
||||
try writeType(writer, function.return_type, declarations, .{ .is_result = true });
|
||||
try writer.writeAll(";\n");
|
||||
}
|
||||
|
|
@ -383,12 +384,12 @@ const Methods = struct {
|
|||
// Initialize an empty method list for each type
|
||||
var types = std.StringArrayHashMap(std.ArrayList([]const u8)).init(allocator);
|
||||
errdefer types.deinit();
|
||||
errdefer for (types.values()) |methods| {
|
||||
methods.deinit();
|
||||
errdefer for (types.values()) |*methods| {
|
||||
methods.deinit(allocator);
|
||||
};
|
||||
for (header.structs) |ty| {
|
||||
const methods = std.ArrayList([]const u8).init(allocator);
|
||||
errdefer methods.deinit();
|
||||
var methods: std.ArrayList([]const u8) = .empty;
|
||||
errdefer methods.deinit(allocator);
|
||||
try types.put(ty.name, methods);
|
||||
}
|
||||
|
||||
|
|
@ -399,16 +400,16 @@ const Methods = struct {
|
|||
|
||||
if (function.original_class) |class| {
|
||||
const methods = types.getPtr(class).?;
|
||||
try methods.append(function.name);
|
||||
try methods.append(allocator, function.name);
|
||||
}
|
||||
}
|
||||
|
||||
return .{ .types = types };
|
||||
}
|
||||
|
||||
fn deinit(self: *Methods) void {
|
||||
for (self.types.values()) |methods| {
|
||||
methods.deinit();
|
||||
fn deinit(self: *Methods, allocator: Allocator) void {
|
||||
for (self.types.values()) |*methods| {
|
||||
methods.deinit(allocator);
|
||||
}
|
||||
self.types.deinit();
|
||||
self.* = undefined;
|
||||
|
|
@ -611,7 +612,7 @@ fn writeType(
|
|||
ty: Header.Type,
|
||||
declarations: *const Declarations,
|
||||
hints: WriteTypeHints,
|
||||
) @TypeOf(writer).Error!void {
|
||||
) std.Io.Writer.Error!void {
|
||||
// Handle function pointers which are stored separately.
|
||||
if (ty.type_details) |details| switch (details.flavour) {
|
||||
.function_pointer => return writeFunctionPointer(writer, details, declarations),
|
||||
|
|
@ -637,7 +638,7 @@ fn writeFunctionPointer(
|
|||
try writeType(writer, argument.type, declarations, .{});
|
||||
try writer.writeAll(", ");
|
||||
}
|
||||
try writer.writeAll(") callconv(.C) ");
|
||||
try writer.writeAll(") callconv(.c) ");
|
||||
try writeType(writer, details.return_type.*, declarations, .{});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue