build: add libintl for macOS builds

This commit is contained in:
Mitchell Hashimoto
2025-03-06 07:23:00 -08:00
parent 67488754d5
commit dd95f727ec
4 changed files with 26 additions and 2 deletions

View File

@ -63,6 +63,7 @@
.gtk4_layer_shell = .{ .path = "./pkg/gtk4-layer-shell" },
.harfbuzz = .{ .path = "./pkg/harfbuzz" },
.highway = .{ .path = "./pkg/highway" },
.libintl = .{ .path = "./pkg/libintl" },
.libpng = .{ .path = "./pkg/libpng" },
.macos = .{ .path = "./pkg/macos" },
.oniguruma = .{ .path = "./pkg/oniguruma" },

View File

@ -359,6 +359,12 @@ pub fn build(b: *std.Build) !void {
lib.addIncludePath(b.path(""));
lib.addIncludePath(upstream.path("gettext-runtime/intl"));
lib.addIncludePath(upstream.path("gettext-runtime/intl/gnulib-lib"));
if (target.result.isDarwin()) {
const apple_sdk = @import("apple_sdk");
try apple_sdk.addPaths(b, &lib.root_module);
}
lib.addConfigHeader(config);
lib.addCSourceFiles(.{
.root = upstream.path("gettext-runtime/intl"),
@ -389,12 +395,16 @@ const srcs: []const []const u8 = &.{
"localealias.c",
"log.c",
"ngettext.c",
"osdep.c",
"plural-exp.c",
"plural.c",
"printf.c",
"setlocale.c",
"textdomain.c",
"version.c",
"compat.c",
// Not needed for macOS, but we might need them for other platforms.
// If we expand this to support other platforms, we should uncomment
// these.
// "osdep.c",
// "printf.c",
};

View File

@ -7,5 +7,7 @@
.url = "https://deps.files.ghostty.org/gettext-0.24.tar.gz",
.hash = "1220f870c853529233ea64a108acaaa81f8d06d7ff4b66c76930be7d78d508aff7a2",
},
.apple_sdk = .{ .path = "../apple-sdk" },
},
}

View File

@ -381,6 +381,17 @@ pub fn add(
if (self.config.renderer == .opengl) {
step.linkFramework("OpenGL");
}
// Apple platforms do not include libc libintl so we bundle it.
// This is LGPL but since our source code is open source we are
// in compliance with the LGPL since end users can modify this
// build script to replace the bundled libintl with their own.
const libintl_dep = b.dependency("libintl", .{
.target = target,
.optimize = optimize,
});
step.linkLibrary(libintl_dep.artifact("intl"));
try static_libs.append(libintl_dep.artifact("intl").getEmittedBin());
}
// cimgui