mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-15 16:26:08 +03:00
56 lines
1.8 KiB
Zig
56 lines
1.8 KiB
Zig
const std = @import("std");
|
|
|
|
pub fn build(b: *std.Build) !void {
|
|
const target = b.standardTargetOptions(.{});
|
|
const optimize = b.standardOptimizeOption(.{});
|
|
_ = target;
|
|
_ = optimize;
|
|
}
|
|
|
|
/// Add the SDK framework, include, and library paths to the given module.
|
|
/// The module target is used to determine the SDK to use so it must have
|
|
/// a resolved target.
|
|
pub fn addPaths(b: *std.Build, m: *std.Build.Module) !void {
|
|
// The active SDK we want to use
|
|
const sdk = try SDK.fromTarget(m.resolved_target.?.result);
|
|
|
|
// Get the path to our active Xcode installation. If this fails then
|
|
// the zig build will fail. We store this in a struct variable so its
|
|
// static and only calculated once per build.
|
|
const Path = struct {
|
|
var value: ?[]const u8 = null;
|
|
};
|
|
const path = Path.value orelse path: {
|
|
const path = std.mem.trim(u8, b.run(&.{ "xcode-select", "--print-path" }), " \r\n");
|
|
Path.value = path;
|
|
break :path path;
|
|
};
|
|
|
|
// Base path
|
|
const base = b.fmt("{s}/Platforms/{s}.platform/Developer/SDKs/{s}{s}.sdk", .{
|
|
path,
|
|
sdk.platform,
|
|
sdk.platform,
|
|
sdk.version,
|
|
});
|
|
|
|
m.addSystemFrameworkPath(.{ .cwd_relative = b.pathJoin(&.{ base, "/System/Library/Frameworks" }) });
|
|
m.addSystemIncludePath(.{ .cwd_relative = b.pathJoin(&.{ base, "/usr/include" }) });
|
|
m.addLibraryPath(.{ .cwd_relative = b.pathJoin(&.{ base, "/usr/lib" }) });
|
|
}
|
|
|
|
const SDK = struct {
|
|
platform: []const u8,
|
|
version: []const u8,
|
|
|
|
pub fn fromTarget(target: std.Target) !SDK {
|
|
return switch (target.os.tag) {
|
|
.macos => .{ .platform = "MacOSX", .version = "14" },
|
|
else => {
|
|
std.log.err("unsupported os={}", .{target.os.tag});
|
|
return error.UnsupportedOS;
|
|
},
|
|
};
|
|
}
|
|
};
|