aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/src/build/GhosttyXCFramework.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/src/build/GhosttyXCFramework.zig
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/src/build/GhosttyXCFramework.zig')
-rw-r--r--vendor/libghostty-vt/src/build/GhosttyXCFramework.zig104
1 files changed, 104 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/src/build/GhosttyXCFramework.zig b/vendor/libghostty-vt/src/build/GhosttyXCFramework.zig
new file mode 100644
index 00000000..3afeb907
--- /dev/null
+++ b/vendor/libghostty-vt/src/build/GhosttyXCFramework.zig
@@ -0,0 +1,104 @@
+const GhosttyXCFramework = @This();
+
+const std = @import("std");
+const Config = @import("Config.zig");
+const SharedDeps = @import("SharedDeps.zig");
+const GhosttyLib = @import("GhosttyLib.zig");
+const XCFrameworkStep = @import("XCFrameworkStep.zig");
+const Target = @import("xcframework.zig").Target;
+
+xcframework: *XCFrameworkStep,
+target: Target,
+
+pub fn init(
+ b: *std.Build,
+ deps: *const SharedDeps,
+ target: Target,
+) !GhosttyXCFramework {
+ // Universal macOS build
+ const macos_universal = try GhosttyLib.initMacOSUniversal(b, deps);
+
+ // Native macOS build
+ const macos_native = try GhosttyLib.initStatic(b, &try deps.retarget(
+ b,
+ Config.genericMacOSTarget(b, null),
+ ));
+
+ // iOS
+ const ios = try GhosttyLib.initStatic(b, &try deps.retarget(
+ b,
+ b.resolveTargetQuery(.{
+ .cpu_arch = .aarch64,
+ .os_tag = .ios,
+ .os_version_min = Config.osVersionMin(.ios),
+ .abi = null,
+ }),
+ ));
+
+ // iOS Simulator
+ const ios_sim = try GhosttyLib.initStatic(b, &try deps.retarget(
+ b,
+ b.resolveTargetQuery(.{
+ .cpu_arch = .aarch64,
+ .os_tag = .ios,
+ .os_version_min = Config.osVersionMin(.ios),
+ .abi = .simulator,
+
+ // We force the Apple CPU model because the simulator
+ // doesn't support the generic CPU model as of Zig 0.14 due
+ // to missing "altnzcv" instructions, which is false. This
+ // surely can't be right but we can fix this if/when we get
+ // back to running simulator builds.
+ .cpu_model = .{ .explicit = &std.Target.aarch64.cpu.apple_a17 },
+ }),
+ ));
+
+ // The xcframework wraps our ghostty library so that we can link
+ // it to the final app built with Swift.
+ const xcframework = XCFrameworkStep.create(b, .{
+ .name = "GhosttyKit",
+ .out_path = "macos/GhosttyKit.xcframework",
+ .libraries = switch (target) {
+ .universal => &.{
+ .{
+ .library = macos_universal.output,
+ .headers = b.path("include"),
+ .dsym = macos_universal.dsym,
+ },
+ .{
+ .library = ios.output,
+ .headers = b.path("include"),
+ .dsym = ios.dsym,
+ },
+ .{
+ .library = ios_sim.output,
+ .headers = b.path("include"),
+ .dsym = ios_sim.dsym,
+ },
+ },
+
+ .native => &.{.{
+ .library = macos_native.output,
+ .headers = b.path("include"),
+ .dsym = macos_native.dsym,
+ }},
+ },
+ });
+
+ return .{
+ .xcframework = xcframework,
+ .target = target,
+ };
+}
+
+pub fn install(self: *const GhosttyXCFramework) void {
+ const b = self.xcframework.step.owner;
+ self.addStepDependencies(b.getInstallStep());
+}
+
+pub fn addStepDependencies(
+ self: *const GhosttyXCFramework,
+ other_step: *std.Build.Step,
+) void {
+ other_step.dependOn(self.xcframework.step);
+}