mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00

This gets `zig build -Dtarget=aarch64-ios` working. By "working" I mean it produces an object file without compiler errors. However, the object file certainly isn't useful since it uses a number of features that will not work in the iOS sandbox. This is just an experiment more than anything to see how hard it would be to get libghostty working within iOS to render a terminal. Note iOS doesn't support ptys so this wouldn't be a true on-device terminal. The challenge right now is to just get a terminal rendering (not usable).
137 lines
4.1 KiB
Zig
137 lines
4.1 KiB
Zig
const std = @import("std");
|
|
const NativeTargetInfo = std.zig.system.NativeTargetInfo;
|
|
|
|
pub fn build(b: *std.Build) !void {
|
|
const target = b.standardTargetOptions(.{});
|
|
const optimize = b.standardOptimizeOption(.{});
|
|
|
|
const module = b.addModule("oniguruma", .{ .root_source_file = .{ .path = "main.zig" } });
|
|
|
|
const upstream = b.dependency("oniguruma", .{});
|
|
const lib = try buildOniguruma(b, upstream, target, optimize);
|
|
module.addIncludePath(upstream.path("src"));
|
|
b.installArtifact(lib);
|
|
|
|
if (target.query.isNative()) {
|
|
const test_exe = b.addTest(.{
|
|
.name = "test",
|
|
.root_source_file = .{ .path = "main.zig" },
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
test_exe.linkLibrary(lib);
|
|
const tests_run = b.addRunArtifact(test_exe);
|
|
const test_step = b.step("test", "Run tests");
|
|
test_step.dependOn(&tests_run.step);
|
|
|
|
// Uncomment this if we're debugging tests
|
|
b.installArtifact(test_exe);
|
|
}
|
|
}
|
|
|
|
fn buildOniguruma(
|
|
b: *std.Build,
|
|
upstream: *std.Build.Dependency,
|
|
target: std.Build.ResolvedTarget,
|
|
optimize: std.builtin.OptimizeMode,
|
|
) !*std.Build.Step.Compile {
|
|
const lib = b.addStaticLibrary(.{
|
|
.name = "oniguruma",
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
const t = target.result;
|
|
lib.linkLibC();
|
|
lib.addIncludePath(upstream.path("src"));
|
|
|
|
if (target.result.isDarwin()) {
|
|
const apple_sdk = @import("apple_sdk");
|
|
try apple_sdk.addPaths(b, &lib.root_module);
|
|
}
|
|
|
|
lib.addConfigHeader(b.addConfigHeader(.{
|
|
.style = .{ .cmake = upstream.path("src/config.h.cmake.in") },
|
|
}, .{
|
|
.PACKAGE = "oniguruma",
|
|
.PACKAGE_VERSION = "6.9.9",
|
|
.VERSION = "6.9.9",
|
|
.HAVE_STDINT_H = true,
|
|
.HAVE_SYS_TIMES_H = true,
|
|
.HAVE_SYS_TIME_H = true,
|
|
.HAVE_SYS_TYPES_H = true,
|
|
.HAVE_UNISTD_H = true,
|
|
.HAVE_INTTYPES_H = true,
|
|
.SIZEOF_INT = t.c_type_byte_size(.int),
|
|
.SIZEOF_LONG = t.c_type_byte_size(.long),
|
|
.SIZEOF_LONG_LONG = t.c_type_byte_size(.longlong),
|
|
.SIZEOF_VOIDP = t.ptrBitWidth() / t.c_type_bit_size(.char),
|
|
}));
|
|
|
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
|
defer flags.deinit();
|
|
try flags.appendSlice(&.{});
|
|
lib.addCSourceFiles(.{
|
|
.dependency = upstream,
|
|
.flags = flags.items,
|
|
.files = &.{
|
|
"src/regerror.c",
|
|
"src/regparse.c",
|
|
"src/regext.c",
|
|
"src/regcomp.c",
|
|
"src/regexec.c",
|
|
"src/reggnu.c",
|
|
"src/regenc.c",
|
|
"src/regsyntax.c",
|
|
"src/regtrav.c",
|
|
"src/regversion.c",
|
|
"src/st.c",
|
|
"src/onig_init.c",
|
|
"src/unicode.c",
|
|
"src/ascii.c",
|
|
"src/utf8.c",
|
|
"src/utf16_be.c",
|
|
"src/utf16_le.c",
|
|
"src/utf32_be.c",
|
|
"src/utf32_le.c",
|
|
"src/euc_jp.c",
|
|
"src/sjis.c",
|
|
"src/iso8859_1.c",
|
|
"src/iso8859_2.c",
|
|
"src/iso8859_3.c",
|
|
"src/iso8859_4.c",
|
|
"src/iso8859_5.c",
|
|
"src/iso8859_6.c",
|
|
"src/iso8859_7.c",
|
|
"src/iso8859_8.c",
|
|
"src/iso8859_9.c",
|
|
"src/iso8859_10.c",
|
|
"src/iso8859_11.c",
|
|
"src/iso8859_13.c",
|
|
"src/iso8859_14.c",
|
|
"src/iso8859_15.c",
|
|
"src/iso8859_16.c",
|
|
"src/euc_tw.c",
|
|
"src/euc_kr.c",
|
|
"src/big5.c",
|
|
"src/gb18030.c",
|
|
"src/koi8_r.c",
|
|
"src/cp1251.c",
|
|
"src/euc_jp_prop.c",
|
|
"src/sjis_prop.c",
|
|
"src/unicode_unfold_key.c",
|
|
"src/unicode_fold1_key.c",
|
|
"src/unicode_fold2_key.c",
|
|
"src/unicode_fold3_key.c",
|
|
},
|
|
});
|
|
|
|
lib.installHeadersDirectoryOptions(.{
|
|
.source_dir = upstream.path("src"),
|
|
.install_dir = .header,
|
|
.install_subdir = "",
|
|
.include_extensions = &.{".h"},
|
|
});
|
|
|
|
return lib;
|
|
}
|