Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,9 @@ jobs:
- name: Build XCFramework
run: nix develop -c zig build -Demit-lib-vt

- name: Verify XCFramework artifact
run: test -f zig-out/lib/ghostty-vt.xcframework/Info.plist

- name: Build and Run Example
run: |
cd example/${{ matrix.dir }}
Expand Down
11 changes: 8 additions & 3 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ pub fn build(b: *std.Build) !void {
// libghostty-vt xcframework (Apple only, universal binary).
// Only when building on macOS (not cross-compiling) since
// xcodebuild is required.
if (builtin.os.tag.isDarwin() and config.target.result.os.tag.isDarwin()) {
if (config.emit_lib_vt and
config.emit_xcframework and
builtin.os.tag.isDarwin() and
config.target.result.os.tag.isDarwin())
{
const apple_libs = try buildpkg.GhosttyLibVt.initStaticAppleUniversal(
b,
&config,
Expand Down Expand Up @@ -200,8 +204,9 @@ pub fn build(b: *std.Build) !void {
}

// macOS only artifacts. These will error if they're initialized for
// other targets.
if (config.target.result.os.tag.isDarwin() and
// other targets. In lib-vt mode emit_xcframework controls the lib-vt
// xcframework above, not this one.
if (!config.emit_lib_vt and config.target.result.os.tag.isDarwin() and
(config.emit_xcframework or config.emit_macos_app))
{
// Ghostty xcframework
Expand Down
23 changes: 16 additions & 7 deletions src/build/Config.zig
Original file line number Diff line number Diff line change
Expand Up @@ -444,13 +444,22 @@ pub fn init(b: *std.Build, appVersion: []const u8, libVersion: []const u8) !Conf
bool,
"emit-xcframework",
"Build and install the xcframework for the macOS library.",
) orelse !config.emit_lib_vt and
builtin.target.os.tag.isDarwin() and
target.result.os.tag == .macos and
config.app_runtime == .none and
(!config.emit_bench and
!config.emit_test_exe and
!config.emit_helpgen);
) orelse emit_xcfw: {
if (!builtin.target.os.tag.isDarwin() or target.result.os.tag != .macos)
break :emit_xcfw false;
if (config.emit_lib_vt) {
// In lib-vt mode default to whether xcodebuild is available,
// since xcodebuild is required to produce the XCFramework.
const path = expandPath(b.allocator, "xcodebuild") catch
break :emit_xcfw false;
defer if (path) |p| b.allocator.free(p);
break :emit_xcfw path != null;
}
break :emit_xcfw config.app_runtime == .none and
(!config.emit_bench and
!config.emit_test_exe and
!config.emit_helpgen);
};

config.emit_macos_app = b.option(
bool,
Expand Down
Loading