diff --git a/build.zig.zon b/build.zig.zon index cb077768d..addfacb16 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -41,6 +41,10 @@ .hash = "ziglyph-0.11.2-AAAAAHPtHwB4Mbzn1KvOV7Wpjo82NYEc_v0WC8oCLrkf", .lazy = true, }, + .uucode = .{ + .url = "https://github.com/jacobsandlund/uucode/archive/fdcd8582f050e3054091d3ce3c60bf7a78bc8830.tar.gz", + .hash = "uucode-0.0.0-ZZjBPpnZOgCLQD3BsYbQ4N6dGqR3CRKlOngOBB3YEU_j", + }, .zig_wayland = .{ // codeberg ifreund/zig-wayland .url = "https://codeberg.org/ifreund/zig-wayland/archive/f3c5d503e540ada8cbcb056420de240af0c094f7.tar.gz", diff --git a/src/build/SharedDeps.zig b/src/build/SharedDeps.zig index c03746a48..543c87df2 100644 --- a/src/build/SharedDeps.zig +++ b/src/build/SharedDeps.zig @@ -15,6 +15,7 @@ help_strings: HelpStrings, metallib: ?*MetallibStep, unicode_tables: UnicodeTables, framedata: GhosttyFrameData, +uucode_table_data: std.Build.LazyPath, /// Used to keep track of a list of file sources. pub const LazyPathList = std.ArrayList(std.Build.LazyPath); @@ -25,6 +26,24 @@ pub fn init(b: *std.Build, cfg: *const Config) !SharedDeps { .help_strings = try .init(b, cfg), .unicode_tables = try .init(b), .framedata = try .init(b), + .uucode_table_data = b.dependency("uucode", .{ + .@"table_configs.zig" = @as( + []const u8, + \\const types = @import("types.zig"); + \\const config = @import("config.zig"); + \\ + \\pub const configs = [_]types.TableConfig{ + \\ .override(&config.default, .{ + \\ .fields = &.{"case_folding_simple"}, + \\ }), + \\ .override(&config.default, .{ + \\ .fields = &.{"alphabetic","lowercase","uppercase"}, + \\ }), + \\}; + \\ + , + ), + }).namedLazyPath("table_data.zig"), // Setup by retarget .options = undefined, @@ -415,6 +434,13 @@ pub fn add( })) |dep| { step.root_module.addImport("ziglyph", dep.module("ziglyph")); } + if (b.lazyDependency("uucode", .{ + .target = target, + .optimize = optimize, + .@"table_data.zig" = self.uucode_table_data, + })) |dep| { + step.root_module.addImport("uucode", dep.module("uucode")); + } if (b.lazyDependency("zf", .{ .target = target, .optimize = optimize, diff --git a/src/global.zig b/src/global.zig index e68ec7f74..6d0aa655d 100644 --- a/src/global.zig +++ b/src/global.zig @@ -10,6 +10,7 @@ const oni = @import("oniguruma"); const crash = @import("crash/main.zig"); const renderer = @import("renderer.zig"); const apprt = @import("apprt.zig"); +const uucode = @import("uucode"); /// We export the xev backend we want to use so that the rest of /// Ghostty can import this once and have access to the proper @@ -54,6 +55,11 @@ pub const GlobalState = struct { // std.log.err("[global init time] start={}us duration={}ns", .{ start_micro, end.since(start) / std.time.ns_per_us }); // } + std.log.err("XXX Uucode testing: {d}, {}\n", .{ + uucode.case_folding_simple(65), + uucode.alphabetic(97), + }); + // Initialize ourself to nothing so we don't have any extra state. // IMPORTANT: this MUST be initialized before any log output because // the log function uses the global state.