From 3ac6e8392d56e1d7d735733744352930fc26dbe3 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 18 Oct 2023 17:34:12 -0700 Subject: [PATCH] pkg/cimgui: add metal backend --- pkg/cimgui/build.zig | 8 ++++++++ pkg/cimgui/build.zig.zon | 2 ++ pkg/cimgui/c.zig | 6 ++++++ 3 files changed, 16 insertions(+) diff --git a/pkg/cimgui/build.zig b/pkg/cimgui/build.zig index 9a508a699..344eee8a2 100644 --- a/pkg/cimgui/build.zig +++ b/pkg/cimgui/build.zig @@ -47,6 +47,14 @@ pub fn build(b: *std.Build) !void { .flags = flags.items, }); + if (target.isDarwin()) { + if (!target.isNative()) try @import("apple_sdk").addPaths(b, lib); + lib.addCSourceFile(.{ + .file = imgui.path("backends/imgui_impl_metal.mm"), + .flags = flags.items, + }); + } + lib.installHeadersDirectoryOptions(.{ .source_dir = .{ .path = "vendor" }, .install_dir = .header, diff --git a/pkg/cimgui/build.zig.zon b/pkg/cimgui/build.zig.zon index e4acd91e2..d29374536 100644 --- a/pkg/cimgui/build.zig.zon +++ b/pkg/cimgui/build.zig.zon @@ -9,5 +9,7 @@ .url = "https://github.com/ocornut/imgui/archive/1d8e48c161370c37628c4f37f3f87cb19fbcb723.tar.gz", .hash = "12205e93e208aada4c835acdc3e2c1fac95b3ad92b47abe6412ab043f9f13817ad9b", }, + + .apple_sdk = .{ .path = "../apple-sdk" }, }, } diff --git a/pkg/cimgui/c.zig b/pkg/cimgui/c.zig index 42b620d4b..16e529312 100644 --- a/pkg/cimgui/c.zig +++ b/pkg/cimgui/c.zig @@ -11,3 +11,9 @@ pub extern fn ImGui_ImplOpenGL3_Init(?[*:0]const u8) callconv(.C) void; pub extern fn ImGui_ImplOpenGL3_Shutdown() callconv(.C) void; pub extern fn ImGui_ImplOpenGL3_NewFrame() callconv(.C) void; pub extern fn ImGui_ImplOpenGL3_RenderDrawData(*c.ImDrawData) callconv(.C) void; + +// Metal +pub extern fn ImGui_ImplMetal_Init(*anyopaque) callconv(.C) bool; +pub extern fn ImGui_ImplMetal_Shutdown() callconv(.C) void; +pub extern fn ImGui_ImplMetal_NewFrame(*anyopaque) callconv(.C) void; +pub extern fn ImGui_ImplMetal_RenderDrawData(*c.ImDrawData, *anyopaque, *anyopaque) callconv(.C) void;