Zig 0.14 (#6699)
Closes #5744 This gets Ghostty onto Zig 0.14. The goal of this PR is to focus only on Zig 0.14 _compatibility_. I plan to open a number of subsequent issues for future improvements I'd like to tackle, as noted in #5744. I did run some basic benchmarks on a Zig 0.13 vs 0.14 build and didn't notice any statistically significant changes. All our scrolling benchmarks on vtebench got consistently 1 or 2ms faster but that may just be noise. The good news is nothing got consistently slower (nothing got slower at all on any runs!). The Git history here is kind of nasty, I'm going to squash it.pull/6701/head
commit
aeada3f1a8
|
|
@ -686,4 +686,4 @@ jobs:
|
||||||
file: src/build/docker/debian/Dockerfile
|
file: src/build/docker/debian/Dockerfile
|
||||||
build-args: |
|
build-args: |
|
||||||
DISTRO_VERSION=12
|
DISTRO_VERSION=12
|
||||||
ZIG_VERSION=0.13.0
|
ZIG_VERSION=0.14.0
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ To find the version of Zig required to build Ghostty, check the `required_zig`
|
||||||
constant in `build.zig`. You don't need to know Zig to extract this information.
|
constant in `build.zig`. You don't need to know Zig to extract this information.
|
||||||
This version will always be an official released version of Zig.
|
This version will always be an official released version of Zig.
|
||||||
|
|
||||||
For example, at the time of writing this document, Ghostty requires Zig 0.13.0.
|
For example, at the time of writing this document, Ghostty requires Zig 0.14.0.
|
||||||
|
|
||||||
## Building Ghostty
|
## Building Ghostty
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ const builtin = @import("builtin");
|
||||||
const buildpkg = @import("src/build/main.zig");
|
const buildpkg = @import("src/build/main.zig");
|
||||||
|
|
||||||
comptime {
|
comptime {
|
||||||
buildpkg.requireZig("0.13.0");
|
buildpkg.requireZig("0.14.0");
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn build(b: *std.Build) !void {
|
pub fn build(b: *std.Build) !void {
|
||||||
|
|
@ -50,7 +50,7 @@ pub fn build(b: *std.Build) !void {
|
||||||
// As such, these build steps are lacking. For example, the Darwin
|
// As such, these build steps are lacking. For example, the Darwin
|
||||||
// build only produces an xcframework.
|
// build only produces an xcframework.
|
||||||
if (config.app_runtime == .none) {
|
if (config.app_runtime == .none) {
|
||||||
if (config.target.result.isDarwin()) darwin: {
|
if (config.target.result.os.tag.isDarwin()) darwin: {
|
||||||
if (!config.emit_xcframework) break :darwin;
|
if (!config.emit_xcframework) break :darwin;
|
||||||
|
|
||||||
// Build the xcframework
|
// Build the xcframework
|
||||||
|
|
|
||||||
|
|
@ -1,59 +1,61 @@
|
||||||
.{
|
.{
|
||||||
.name = "ghostty",
|
.name = .ghostty,
|
||||||
.version = "1.1.3",
|
.version = "1.1.3",
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
|
.fingerprint = 0x64407a2a0b4147e5,
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// Zig libs
|
// Zig libs
|
||||||
|
|
||||||
.libxev = .{
|
.libxev = .{
|
||||||
// mitchellh/libxev
|
// mitchellh/libxev
|
||||||
.url = "https://github.com/mitchellh/libxev/archive/8943932a668f338cb2c500f6e1a7396bacd8b55d.tar.gz",
|
.url = "https://github.com/mitchellh/libxev/archive/3df9337a9e84450a58a2c4af434ec1a036f7b494.tar.gz",
|
||||||
.hash = "1220a67b584c9499154de8c96851ed8e92315452cb2027c06e2d7d07a39c6f900d1a",
|
.hash = "libxev-0.0.0-86vtc-ziEgDbLP0vihUn1MhsxNKY4GJEga6BEr7oyHpz",
|
||||||
},
|
},
|
||||||
.mach_glfw = .{
|
.mach_glfw = .{
|
||||||
// mitchellh/mach-glfw
|
// mitchellh/mach-glfw
|
||||||
.url = "https://deps.files.ghostty.org/mach_glfw-12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62.tar.gz",
|
.url = "https://github.com/mitchellh/mach-glfw/archive/d84bc11b0601cdad71035a0e9cf21572d76aa0d2.zip",
|
||||||
.hash = "12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62",
|
.hash = "mach_glfw-0.2.0-EJSQm2M9BQCiYGTd9VcKjg2DhSD7WT4kS-MfX68ORRT_",
|
||||||
.lazy = true,
|
.lazy = true,
|
||||||
},
|
},
|
||||||
.vaxis = .{
|
.vaxis = .{
|
||||||
// rockorager/libvaxis
|
// rockorager/libvaxis
|
||||||
.url = "git+https://github.com/rockorager/libvaxis#2237a7059eae99e9f132dd5acd1555e49d6c7d93",
|
.url = "git+https://github.com/rockorager/libvaxis#1e24e0dfb509e974e1c8713bcd119d0ae032a8c7",
|
||||||
.hash = "1220f5aec880d4f430cc1597ede88f1530da69e39a4986080e976b0c7b919c2ebfeb",
|
.hash = "vaxis-0.1.0-BWNV_MHyCAARemSCSwwc3sA1etNgv7ge0BCIXspX6CZv",
|
||||||
},
|
},
|
||||||
.z2d = .{
|
.z2d = .{
|
||||||
// vancluever/z2d
|
// vancluever/z2d
|
||||||
.url = "https://deps.files.ghostty.org/z2d-12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a.tar.gz",
|
.url = "https://github.com/vancluever/z2d/archive/1e89605a624940c310c7a1d81b46a7c5c05919e3.tar.gz",
|
||||||
.hash = "12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a",
|
.hash = "z2d-0.6.0-j5P_HvLdCABu-dXpCeRM7Uk4m16vULg1980lMNCQj4_C",
|
||||||
},
|
},
|
||||||
.zig_objc = .{
|
.zig_objc = .{
|
||||||
// mitchellh/zig-objc
|
// mitchellh/zig-objc
|
||||||
.url = "https://deps.files.ghostty.org/zig_objc-1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634.tar.gz",
|
.url = "https://github.com/mitchellh/zig-objc/archive/3ab0d37c7d6b933d6ded1b3a35b6b60f05590a98.tar.gz",
|
||||||
.hash = "1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634",
|
.hash = "zig_objc-0.0.0-Ir_Sp3TyAADEVRTxXlScq3t_uKAM91MYNerZkHfbD0yt",
|
||||||
},
|
},
|
||||||
.zig_js = .{
|
.zig_js = .{
|
||||||
// mitchellh/zig-js
|
// mitchellh/zig-js
|
||||||
.url = "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz",
|
.url = "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz",
|
||||||
.hash = "12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc",
|
.hash = "N-V-__8AAB9YCQBaZtQjJZVndk-g_GDIK-NTZcIa63bFp9yZ",
|
||||||
},
|
},
|
||||||
.ziglyph = .{
|
.ziglyph = .{
|
||||||
.url = "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz",
|
.url = "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz",
|
||||||
.hash = "12207831bce7d4abce57b5a98e8f3635811cfefd160bca022eb91fe905d36a02cf25",
|
.hash = "ziglyph-0.11.2-AAAAAHPtHwB4Mbzn1KvOV7Wpjo82NYEc_v0WC8oCLrkf",
|
||||||
},
|
},
|
||||||
.zig_wayland = .{
|
.zig_wayland = .{
|
||||||
// codeberg ifreund/zig-wayland
|
// codeberg ifreund/zig-wayland
|
||||||
.url = "https://deps.files.ghostty.org/zig-wayland-fbfe3b4ac0b472a27b1f1a67405436c58cbee12d.tar.gz",
|
.url = "https://codeberg.org/ifreund/zig-wayland/archive/f3c5d503e540ada8cbcb056420de240af0c094f7.tar.gz",
|
||||||
.hash = "12209ca054cb1919fa276e328967f10b253f7537c4136eb48f3332b0f7cf661cad38",
|
.hash = "wayland-0.4.0-dev-lQa1kjfIAQCmhhQu3xF0KH-94-TzeMXOqfnP0-Dg6Wyy",
|
||||||
},
|
},
|
||||||
.zf = .{
|
.zf = .{
|
||||||
// natecraddock/zf
|
// natecraddock/zf
|
||||||
.url = "https://deps.files.ghostty.org/zf-1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8.tar.gz",
|
.url = "https://github.com/natecraddock/zf/archive/03176fcf23fda543cc02a8675e92c1fe3b1ee2eb.tar.gz",
|
||||||
.hash = "1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8",
|
.hash = "zf-0.10.3-OIRy8bKIAACV6JaNNncXA68Nw2BUAD9JVfQdzjyoZQ-J",
|
||||||
},
|
},
|
||||||
.gobject = .{
|
.gobject = .{
|
||||||
// ianprime0509/zig-gobject
|
// https://github.com/jcollie/ghostty-gobject based on zig_gobject
|
||||||
.url = "https://deps.files.ghostty.org/gobject-12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d.tar.zst",
|
// Temporary until we generate them at build time automatically.
|
||||||
.hash = "12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d",
|
.url = "https://github.com/jcollie/ghostty-gobject/releases/download/0.14.0-2025-03-11-16-1/ghostty-gobject-0.14.0-2025-03-11-16-1.tar.gz",
|
||||||
|
.hash = "gobject-0.2.0-Skun7H6DlQDWCiNQtdE5TXYcCvx7MyjW01OQe5M_n_jV",
|
||||||
},
|
},
|
||||||
|
|
||||||
// C libs
|
// C libs
|
||||||
|
|
@ -81,22 +83,22 @@
|
||||||
// Wayland
|
// Wayland
|
||||||
.wayland = .{
|
.wayland = .{
|
||||||
.url = "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz",
|
.url = "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz",
|
||||||
.hash = "12202cdac858abc52413a6c6711d5026d2d3c8e13f95ca2c327eade0736298bb021f",
|
.hash = "N-V-__8AAKrHGAAs2shYq8UkE6bGcR1QJtLTyOE_lcosMn6t",
|
||||||
},
|
},
|
||||||
.wayland_protocols = .{
|
.wayland_protocols = .{
|
||||||
.url = "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz",
|
.url = "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz",
|
||||||
.hash = "12201a57c6ce0001aa034fa80fba3e1cd2253c560a45748f4f4dd21ff23b491cddef",
|
.hash = "N-V-__8AAKw-DAAaV8bOAAGqA0-oD7o-HNIlPFYKRXSPT03S",
|
||||||
},
|
},
|
||||||
.plasma_wayland_protocols = .{
|
.plasma_wayland_protocols = .{
|
||||||
.url = "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz",
|
.url = "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz",
|
||||||
.hash = "12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566",
|
.hash = "N-V-__8AAKYZBAB-CFHBKs3u4JkeiT4BMvyHu3Y5aaWF3Bbs",
|
||||||
},
|
},
|
||||||
|
|
||||||
// Other
|
// Other
|
||||||
.apple_sdk = .{ .path = "./pkg/apple-sdk" },
|
.apple_sdk = .{ .path = "./pkg/apple-sdk" },
|
||||||
.iterm2_themes = .{
|
.iterm2_themes = .{
|
||||||
.url = "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/e21d5ffd19605741d0e3e19d7c5a8c6c25648673.tar.gz",
|
.url = "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/e21d5ffd19605741d0e3e19d7c5a8c6c25648673.tar.gz",
|
||||||
.hash = "122071ad56fd984afb4f94d441b6ea3e21f1741a0e026b02860d9a46110fac2cd109",
|
.hash = "N-V-__8AAABBKARxrVb9mEr7T5TUQbbqPiHxdBoOAmsChg2a",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
fetchurl,
|
fetchurl,
|
||||||
fetchgit,
|
fetchgit,
|
||||||
runCommandLocal,
|
runCommandLocal,
|
||||||
zig_0_13,
|
zig_0_14,
|
||||||
name ? "zig-packages",
|
name ? "zig-packages",
|
||||||
}:
|
}:
|
||||||
with builtins;
|
with builtins;
|
||||||
|
|
@ -16,7 +16,7 @@ with lib; let
|
||||||
}:
|
}:
|
||||||
runCommandLocal name
|
runCommandLocal name
|
||||||
{
|
{
|
||||||
nativeBuildInputs = [zig_0_13];
|
nativeBuildInputs = [zig_0_14];
|
||||||
}
|
}
|
||||||
''
|
''
|
||||||
hash="$(zig fetch --global-cache-dir "$TMPDIR" ${artifact})"
|
hash="$(zig fetch --global-cache-dir "$TMPDIR" ${artifact})"
|
||||||
|
|
@ -84,103 +84,103 @@ with lib; let
|
||||||
in
|
in
|
||||||
linkFarm name [
|
linkFarm name [
|
||||||
{
|
{
|
||||||
name = "1220a67b584c9499154de8c96851ed8e92315452cb2027c06e2d7d07a39c6f900d1a";
|
name = "libxev-0.0.0-86vtc-ziEgDbLP0vihUn1MhsxNKY4GJEga6BEr7oyHpz";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "libxev";
|
name = "libxev";
|
||||||
url = "https://github.com/mitchellh/libxev/archive/8943932a668f338cb2c500f6e1a7396bacd8b55d.tar.gz";
|
url = "https://github.com/mitchellh/libxev/archive/3df9337a9e84450a58a2c4af434ec1a036f7b494.tar.gz";
|
||||||
hash = "sha256-TGooUoby2J8PyzbdKHwdEXnu7f2g4T2/TUHj/ktBsN4=";
|
hash = "sha256-oKZqA9d79jHnp/HsqJWQE33Ffn5Ee5G4VnlQepQuY4o=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62";
|
name = "mach_glfw-0.2.0-EJSQm2M9BQCiYGTd9VcKjg2DhSD7WT4kS-MfX68ORRT_";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "mach_glfw";
|
name = "mach_glfw";
|
||||||
url = "https://deps.files.ghostty.org/mach_glfw-12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62.tar.gz";
|
url = "https://github.com/mitchellh/mach-glfw/archive/d84bc11b0601cdad71035a0e9cf21572d76aa0d2.zip";
|
||||||
hash = "sha256-HhXIvWUS8/CHWY4VXPG2ZEo+we8XOn3o5rYJCQ1n8Nk=";
|
hash = "sha256-Sh1DvCmawdN+a2JEhNP3wTX43/i5FDlDVOIx7Um/d0U=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220736fa4ba211162c7a0e46cc8fe04d95921927688bff64ab5da7420d098a7272d";
|
name = "glfw-0.0.0-bOgnngiqGQCt5HJK25zx1lf9emPYDNtEuQPYmrTCdOoN";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "glfw";
|
name = "glfw";
|
||||||
url = "https://github.com/mitchellh/glfw/archive/b552c6ec47326b94015feddb36058ea567b87159.tar.gz";
|
url = "git+https://github.com/der-teufel-programming/glfw.git#206deaa2485703ac700d0f3020a8854282aecdbb";
|
||||||
hash = "sha256-IeBVAOQmtyFqVxzuXPek1onuPwIamcOyYtxqKpPEQjU=";
|
hash = "sha256-GFeN4J4ZpKvQV8Gw6fxJ+KSpzzdjIYBbO/fTZ0Ooiuk=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12202adbfecdad671d585c9a5bfcbd5cdf821726779430047742ce1bf94ad67d19cb";
|
name = "N-V-__8AABHMqAWYuRdIlflwi8gksPnlUMQBiSxAqQAAZFms";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "xcode_frameworks";
|
name = "xcode_frameworks";
|
||||||
url = "https://github.com/mitchellh/xcode-frameworks/archive/69801c154c39d7ae6129ea1ba8fe1afe00585fc8.tar.gz";
|
url = "https://pkg.machengine.org/xcode-frameworks/9a45f3ac977fd25dff77e58c6de1870b6808c4a7.tar.gz";
|
||||||
hash = "sha256-mP/I2coL57UJm/3+4Q8sPAgQwk8V4zM+S4VBBTrX2To=";
|
hash = "sha256-jWMT0p7klpkgX9GOUNAhrR2e6Ej7MobbqT5ZxJrNQoM=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "122004bfd4c519dadfb8e6281a42fc34fd1aa15aea654ea8a492839046f9894fa2cf";
|
name = "N-V-__8AAAIGzwDju1iAEUEqIbBeI3K4JhQ0vBdNzmETnIRQ";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "vulkan_headers";
|
name = "vulkan_headers";
|
||||||
url = "https://github.com/mitchellh/vulkan-headers/archive/04c8a0389d5a0236a96312988017cd4ce27d8041.tar.gz";
|
url = "https://pkg.machengine.org/vulkan-headers/53e3ee66a78b97075863135b429956f225b149a5.tar.gz";
|
||||||
hash = "sha256-K+zrRudgHFukOM6En1StRYRMNYkeRk+qHTXvrXaG+FU=";
|
hash = "sha256-kXOn43ntsvxnufobQO0xfzg1cg0R97BmFOU3WRqFsH0=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220b3164434d2ec9db146a40bf3a30f490590d68fa8529776a3138074f0da2c11ca";
|
name = "N-V-__8AAJfbCQBWPD1WA6AuYSk8LAIj4Bo_KY-2Br8NEIKT";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "wayland_headers";
|
name = "wayland_headers";
|
||||||
url = "https://github.com/mitchellh/wayland-headers/archive/5f991515a29f994d87b908115a2ab0b899474bd1.tar.gz";
|
url = "https://pkg.machengine.org/wayland-headers/7c53e7483c3cfb5c6780ae542c9f5cfa712a826a.tar.gz";
|
||||||
hash = "sha256-uFilLZinKkZt6RdVTV3lUmJpzpswDdFva22FvwU/XQI=";
|
hash = "sha256-uGIvMyp+xR1jQXTDr6RqYl40Ukiw9l3fW1t6XpYztPY=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "122089c326186c84aa2fd034b16abc38f3ebf4862d9ae106dc1847ac44f557b36465";
|
name = "N-V-__8AACbnQQDnnaLV79Xp3YtkU_g6nseVNOLiA7MzF2a4";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "x11_headers";
|
name = "x11_headers";
|
||||||
url = "https://github.com/mitchellh/x11-headers/archive/2ffbd62d82ff73ec929dd8de802bc95effa0ef88.tar.gz";
|
url = "https://pkg.machengine.org/x11-headers/29aefb525d5c08b05b0351e34b1623854a138c21.tar.gz";
|
||||||
hash = "sha256-EhV2bmTY/OMYN1wEul35gD0hQgS/Al262jO3pVr0O+c=";
|
hash = "sha256-UsbWkOmedS4ygY9C1g7OiPVnTcXzfGKdXImmztYAAiI=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220f5aec880d4f430cc1597ede88f1530da69e39a4986080e976b0c7b919c2ebfeb";
|
name = "vaxis-0.1.0-BWNV_MHyCAARemSCSwwc3sA1etNgv7ge0BCIXspX6CZv";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "vaxis";
|
name = "vaxis";
|
||||||
url = "git+https://github.com/rockorager/libvaxis#2237a7059eae99e9f132dd5acd1555e49d6c7d93";
|
url = "git+https://github.com/rockorager/libvaxis#1e24e0dfb509e974e1c8713bcd119d0ae032a8c7";
|
||||||
hash = "sha256-ZzLNJOsXzyBhkdUhbET30RoU2T9xKYsBUQz2NAjK/G8=";
|
hash = "sha256-6p9aSklLTPV9epzGkXBg5SQfjxfTT+/SYLFPiM04VF0=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220dd654ef941fc76fd96f9ec6adadf83f69b9887a0d3f4ee5ac0a1a3e11be35cf5";
|
name = "zigimg-0.1.0-lly-O-NTEABwkjg9_WM4uLQr_TtL-7jp375PsZJyugGN";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "zigimg";
|
name = "zigimg";
|
||||||
url = "git+https://github.com/zigimg/zigimg#3a667bdb3d7f0955a5a51c8468eac83210c1439e";
|
url = "git+https://github.com/TUSF/zigimg#5102e09be233d372e9e05f4cb2ffbefba30bc1c0";
|
||||||
hash = "sha256-oLf3YH3yeg4ikVO/GahMCDRMTU31AHkfSnF4rt7xTKo=";
|
hash = "sha256-0HYK5A8Jlx1WD1hdU07r+m2AXl6UuazFiZd7P3uh/wY=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "122055beff332830a391e9895c044d33b15ea21063779557024b46169fb1984c6e40";
|
name = "zg-0.13.4-AAAAAGiZ7QLz4pvECFa_wG4O4TP4FLABHHbemH2KakWM";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "zg";
|
name = "zg";
|
||||||
url = "https://codeberg.org/atman/zg/archive/v0.13.2.tar.gz";
|
url = "git+https://codeberg.org/atman/zg#4a002763419a34d61dcbb1f415821b83b9bf8ddc";
|
||||||
hash = "sha256-2x9hT7bYq9KJYWLVOf21a+QvTG/F7HWT+YK15IMRzNY=";
|
hash = "sha256-fo3l6cjkrr/godElTGnQzalBsasN7J73IDIRmw7v1gA=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a";
|
name = "z2d-0.6.0-j5P_HvLdCABu-dXpCeRM7Uk4m16vULg1980lMNCQj4_C";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "z2d";
|
name = "z2d";
|
||||||
url = "https://deps.files.ghostty.org/z2d-12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a.tar.gz";
|
url = "https://github.com/vancluever/z2d/archive/1e89605a624940c310c7a1d81b46a7c5c05919e3.tar.gz";
|
||||||
hash = "sha256-P0UJ54RO/vVyDa+UkBl+QEOjzoMMEFSOTexQP/uBXfc=";
|
hash = "sha256-PEKVSUZ6teRbDyhFPWSiuBSe40pgr0kVRivIY8Cn8HQ=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634";
|
name = "zig_objc-0.0.0-Ir_Sp3TyAADEVRTxXlScq3t_uKAM91MYNerZkHfbD0yt";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "zig_objc";
|
name = "zig_objc";
|
||||||
url = "https://deps.files.ghostty.org/zig_objc-1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634.tar.gz";
|
url = "https://github.com/mitchellh/zig-objc/archive/3ab0d37c7d6b933d6ded1b3a35b6b60f05590a98.tar.gz";
|
||||||
hash = "sha256-H+HIbh2T23uzrsg9/1/vl9Ir1HCAa2pzeTx6zktJH9Q=";
|
hash = "sha256-zn1tR6xhSmDla4UJ3t+Gni4Ni3R8deSK3tEe7DGzNXw=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc";
|
name = "N-V-__8AAB9YCQBaZtQjJZVndk-g_GDIK-NTZcIa63bFp9yZ";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "zig_js";
|
name = "zig_js";
|
||||||
url = "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz";
|
url = "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz";
|
||||||
|
|
@ -188,7 +188,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12207831bce7d4abce57b5a98e8f3635811cfefd160bca022eb91fe905d36a02cf25";
|
name = "ziglyph-0.11.2-AAAAAHPtHwB4Mbzn1KvOV7Wpjo82NYEc_v0WC8oCLrkf";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "ziglyph";
|
name = "ziglyph";
|
||||||
url = "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz";
|
url = "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz";
|
||||||
|
|
@ -196,39 +196,39 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12209ca054cb1919fa276e328967f10b253f7537c4136eb48f3332b0f7cf661cad38";
|
name = "wayland-0.4.0-dev-lQa1kjfIAQCmhhQu3xF0KH-94-TzeMXOqfnP0-Dg6Wyy";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "zig_wayland";
|
name = "zig_wayland";
|
||||||
url = "https://deps.files.ghostty.org/zig-wayland-fbfe3b4ac0b472a27b1f1a67405436c58cbee12d.tar.gz";
|
url = "https://codeberg.org/ifreund/zig-wayland/archive/f3c5d503e540ada8cbcb056420de240af0c094f7.tar.gz";
|
||||||
hash = "sha256-RtAystqK/GRYIquTK1KfD7rRSCrfuzAvCD1Z9DE1ldc=";
|
hash = "sha256-E77GZ15APYbbO1WzmuJi8eG9/iQFbc2CgkNBxjCLUhk=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8";
|
name = "zf-0.10.3-OIRy8bKIAACV6JaNNncXA68Nw2BUAD9JVfQdzjyoZQ-J";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "zf";
|
name = "zf";
|
||||||
url = "https://deps.files.ghostty.org/zf-1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8.tar.gz";
|
url = "https://github.com/natecraddock/zf/archive/03176fcf23fda543cc02a8675e92c1fe3b1ee2eb.tar.gz";
|
||||||
hash = "sha256-/oLryY3VQfjbtQi+UP+n6FJTVA/YxIetjO+6Ovrh6/E=";
|
hash = "sha256-HqS2NFUuTQkltFsQlZz4HYHgfhEUEkZY83NnCW2x5Sg=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220c72c1697dd9008461ead702997a15d8a1c5810247f02e7983b9f74c6c6e4c087";
|
name = "vaxis-0.1.0-BWNV_K3yCACrTy3A5cbZElLyICx5a2O2EzPxmgVRcbKJ";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "vaxis";
|
name = "vaxis";
|
||||||
url = "git+https://github.com/rockorager/libvaxis/?ref=main#dc0a228a5544988d4a920cfb40be9cd28db41423";
|
url = "git+https://github.com/rockorager/libvaxis/?ref=main#6a37605dde55898dcca4769dd3eb1e333959c209";
|
||||||
hash = "sha256-QWN4jOrA91KlbqmeEHHJ4HTnCC9nmfxt8DHUXJpAzLI=";
|
hash = "sha256-5DW2V2bVsHtSw7UMGvJ+P0FpXIf5kTNjrq2SMqU6FIk=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d";
|
name = "gobject-0.2.0-Skun7H6DlQDWCiNQtdE5TXYcCvx7MyjW01OQe5M_n_jV";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "gobject";
|
name = "gobject";
|
||||||
url = "https://deps.files.ghostty.org/gobject-12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d.tar.zst";
|
url = "https://github.com/jcollie/ghostty-gobject/releases/download/0.14.0-2025-03-11-16-1/ghostty-gobject-0.14.0-2025-03-11-16-1.tar.gz";
|
||||||
hash = "sha256-UU97kNv/bZzQPKz1djhEDLapLguvfBpFfWVb6FthtcI=";
|
hash = "sha256-eMmS9oysZheHwSCCvmOUSDJmP9zN7cAr6qqDIbz6EmY=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12202cdac858abc52413a6c6711d5026d2d3c8e13f95ca2c327eade0736298bb021f";
|
name = "N-V-__8AAKrHGAAs2shYq8UkE6bGcR1QJtLTyOE_lcosMn6t";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "wayland";
|
name = "wayland";
|
||||||
url = "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz";
|
url = "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz";
|
||||||
|
|
@ -236,7 +236,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12201a57c6ce0001aa034fa80fba3e1cd2253c560a45748f4f4dd21ff23b491cddef";
|
name = "N-V-__8AAKw-DAAaV8bOAAGqA0-oD7o-HNIlPFYKRXSPT03S";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "wayland_protocols";
|
name = "wayland_protocols";
|
||||||
url = "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz";
|
url = "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz";
|
||||||
|
|
@ -244,7 +244,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566";
|
name = "N-V-__8AAKYZBAB-CFHBKs3u4JkeiT4BMvyHu3Y5aaWF3Bbs";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "plasma_wayland_protocols";
|
name = "plasma_wayland_protocols";
|
||||||
url = "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz";
|
url = "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz";
|
||||||
|
|
@ -252,7 +252,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "122071ad56fd984afb4f94d441b6ea3e21f1741a0e026b02860d9a46110fac2cd109";
|
name = "N-V-__8AAABBKARxrVb9mEr7T5TUQbbqPiHxdBoOAmsChg2a";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "iterm2_themes";
|
name = "iterm2_themes";
|
||||||
url = "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/e21d5ffd19605741d0e3e19d7c5a8c6c25648673.tar.gz";
|
url = "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/e21d5ffd19605741d0e3e19d7c5a8c6c25648673.tar.gz";
|
||||||
|
|
@ -260,7 +260,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402";
|
name = "N-V-__8AAH0GaQC8a52s6vfIxg88OZgFgEW6DFxfSK4lX_l3";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "imgui";
|
name = "imgui";
|
||||||
url = "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz";
|
url = "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz";
|
||||||
|
|
@ -268,7 +268,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d";
|
name = "N-V-__8AAKLKpwC4H27Ps_0iL3bPkQb-z6ZVSrB-x_3EEkub";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "freetype";
|
name = "freetype";
|
||||||
url = "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz";
|
url = "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz";
|
||||||
|
|
@ -276,7 +276,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66";
|
name = "N-V-__8AAJrvXQCqAT8Mg9o_tk6m0yf5Fz-gCNEOKLyTSerD";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "libpng";
|
name = "libpng";
|
||||||
url = "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz";
|
url = "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz";
|
||||||
|
|
@ -284,7 +284,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb";
|
name = "N-V-__8AAB0eQwD-0MdOEBmz7intriBReIsIDNlukNVoNu6o";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "zlib";
|
name = "zlib";
|
||||||
url = "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz";
|
url = "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz";
|
||||||
|
|
@ -292,7 +292,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12201149afb3326c56c05bb0a577f54f76ac20deece63aa2f5cd6ff31a4fa4fcb3b7";
|
name = "N-V-__8AAIrfdwARSa-zMmxWwFuwpXf1T3asIN7s5jqi9c1v";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "fontconfig";
|
name = "fontconfig";
|
||||||
url = "https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz";
|
url = "https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz";
|
||||||
|
|
@ -300,23 +300,23 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "122032442d95c3b428ae8e526017fad881e7dc78eab4d558e9a58a80bfbd65a64f7d";
|
name = "N-V-__8AAG3RoQEyRC2Vw7Qoro5SYBf62IHn3HjqtNVY6aWK";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "libxml2";
|
name = "libxml2";
|
||||||
url = "https://github.com/GNOME/libxml2/archive/refs/tags/v2.11.5.tar.gz";
|
url = "https://deps.files.ghostty.org/libxml2-2.11.5.tar.gz";
|
||||||
hash = "sha256-bCgFni4+60K1tLFkieORamNGwQladP7jvGXNxdiaYhU=";
|
hash = "sha256-bCgFni4+60K1tLFkieORamNGwQladP7jvGXNxdiaYhU=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12203eff4829ad8afdd828eb323d48e5ba8dbb44d224e9e314d4ab1533c2bec20f4b";
|
name = "N-V-__8AALiNBAA-_0gprYr92CjrMj1I5bqNu0TSJOnjFNSr";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "gtk4_layer_shell";
|
name = "gtk4_layer_shell";
|
||||||
url = "https://github.com/wmww/gtk4-layer-shell/archive/refs/tags/v1.1.0.tar.gz";
|
url = "https://deps.files.ghostty.org/gtk4-layer-shell-1.1.0.tar.gz";
|
||||||
hash = "sha256-mChCgSYKXu9bT2OlXxbEv2p4ihAgptsDfssPcfozaYg=";
|
hash = "sha256-mChCgSYKXu9bT2OlXxbEv2p4ihAgptsDfssPcfozaYg=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122";
|
name = "N-V-__8AAKa0rgW4WI8QbJlq8QJJv6CSxvsvNfussVBe9Heg";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "harfbuzz";
|
name = "harfbuzz";
|
||||||
url = "https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz";
|
url = "https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz";
|
||||||
|
|
@ -324,15 +324,15 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b";
|
name = "N-V-__8AAGmZhABbsPJLfbqrh6JTHsXhY6qCaLAQyx25e0XE";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "highway";
|
name = "highway";
|
||||||
url = "https://deps.files.ghostty.org/highway-12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b.tar.gz";
|
url = "https://deps.files.ghostty.org/highway-66486a10623fa0d72fe91260f96c892e41aceb06.tar.gz";
|
||||||
hash = "sha256-NUqLRTm1iOcLmOxwhEJz4/J0EwLEw3e8xOgbPRhm98k=";
|
hash = "sha256-h9T4iT704I8iSXNgj/6/lCaKgTgLp5wS6IQZaMgKohI=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220f870c853529233ea64a108acaaa81f8d06d7ff4b66c76930be7d78d508aff7a2";
|
name = "N-V-__8AADcZkgn4cMhTUpIz6mShCKyqqB-NBtf_S2bHaTC-";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "gettext";
|
name = "gettext";
|
||||||
url = "https://deps.files.ghostty.org/gettext-0.24.tar.gz";
|
url = "https://deps.files.ghostty.org/gettext-0.24.tar.gz";
|
||||||
|
|
@ -340,7 +340,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb";
|
name = "N-V-__8AAHjwMQDBXnLq3Q2QhaivE0kE2aD138vtX2Bq1g7c";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "oniguruma";
|
name = "oniguruma";
|
||||||
url = "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz";
|
url = "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz";
|
||||||
|
|
@ -348,7 +348,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e";
|
name = "N-V-__8AAPlZGwBEa-gxrcypGBZ2R8Bse4JYSfo_ul8i2jlG";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "sentry";
|
name = "sentry";
|
||||||
url = "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz";
|
url = "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz";
|
||||||
|
|
@ -356,15 +356,15 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12207fd37bb8251919c112dcdd8f616a491857b34a451f7e4486490077206dc2a1ea";
|
name = "N-V-__8AALw2uwF_03u4JRkZwRLc3Y9hakkYV7NKRR9-RIZJ";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "breakpad";
|
name = "breakpad";
|
||||||
url = "https://github.com/getsentry/breakpad/archive/b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz";
|
url = "https://deps.files.ghostty.org/breakpad-b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz";
|
||||||
hash = "sha256-bMqYlD0amQdmzvYQd8Ca/1k4Bj/heh7+EijlQSttatk=";
|
hash = "sha256-bMqYlD0amQdmzvYQd8Ca/1k4Bj/heh7+EijlQSttatk=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641";
|
name = "N-V-__8AAHffAgDU0YQmynL8K35WzkcnMUmBVQHQ0jlcKpjH";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "utfcpp";
|
name = "utfcpp";
|
||||||
url = "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz";
|
url = "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz";
|
||||||
|
|
@ -372,7 +372,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd";
|
name = "N-V-__8AAAzZywE3s51XfsLbP9eyEw57ae9swYB9aGB6fCMs";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "wuffs";
|
name = "wuffs";
|
||||||
url = "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz";
|
url = "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz";
|
||||||
|
|
@ -380,7 +380,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806";
|
name = "N-V-__8AADYiAAB_80AWnH1AxXC0tql9thT-R-DYO1gBqTLc";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "pixels";
|
name = "pixels";
|
||||||
url = "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz";
|
url = "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz";
|
||||||
|
|
@ -388,7 +388,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1";
|
name = "N-V-__8AABzkUgISeKGgXAzgtutgJsZc0-kkeqBBscJgMkvy";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "glslang";
|
name = "glslang";
|
||||||
url = "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz";
|
url = "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz";
|
||||||
|
|
@ -396,7 +396,7 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da";
|
name = "N-V-__8AANb6pwD7O1WG6L5nvD_rNMvnSc9Cpg1ijSlTYywv";
|
||||||
path = fetchZigArtifact {
|
path = fetchZigArtifact {
|
||||||
name = "spirv_cross";
|
name = "spirv_cross";
|
||||||
url = "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz";
|
url = "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz";
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,20 @@
|
||||||
git+https://github.com/rockorager/libvaxis#2237a7059eae99e9f132dd5acd1555e49d6c7d93
|
git+https://codeberg.org/atman/zg#4a002763419a34d61dcbb1f415821b83b9bf8ddc
|
||||||
git+https://github.com/rockorager/libvaxis/?ref=main#dc0a228a5544988d4a920cfb40be9cd28db41423
|
git+https://github.com/TUSF/zigimg#5102e09be233d372e9e05f4cb2ffbefba30bc1c0
|
||||||
git+https://github.com/zigimg/zigimg#3a667bdb3d7f0955a5a51c8468eac83210c1439e
|
git+https://github.com/der-teufel-programming/glfw.git#206deaa2485703ac700d0f3020a8854282aecdbb
|
||||||
https://codeberg.org/atman/zg/archive/v0.13.2.tar.gz
|
git+https://github.com/rockorager/libvaxis#1e24e0dfb509e974e1c8713bcd119d0ae032a8c7
|
||||||
|
git+https://github.com/rockorager/libvaxis/?ref=main#6a37605dde55898dcca4769dd3eb1e333959c209
|
||||||
|
https://codeberg.org/ifreund/zig-wayland/archive/f3c5d503e540ada8cbcb056420de240af0c094f7.tar.gz
|
||||||
|
https://deps.files.ghostty.org/breakpad-b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz
|
||||||
https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz
|
https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz
|
||||||
https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz
|
https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz
|
||||||
https://deps.files.ghostty.org/gettext-0.24.tar.gz
|
https://deps.files.ghostty.org/gettext-0.24.tar.gz
|
||||||
https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz
|
https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz
|
||||||
https://deps.files.ghostty.org/gobject-12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d.tar.zst
|
https://deps.files.ghostty.org/gtk4-layer-shell-1.1.0.tar.gz
|
||||||
https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz
|
https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz
|
||||||
https://deps.files.ghostty.org/highway-12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b.tar.gz
|
https://deps.files.ghostty.org/highway-66486a10623fa0d72fe91260f96c892e41aceb06.tar.gz
|
||||||
https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz
|
https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz
|
||||||
https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz
|
https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz
|
||||||
https://deps.files.ghostty.org/mach_glfw-12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62.tar.gz
|
https://deps.files.ghostty.org/libxml2-2.11.5.tar.gz
|
||||||
https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz
|
https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz
|
||||||
https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz
|
https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz
|
||||||
https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz
|
https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz
|
||||||
|
|
@ -21,20 +24,17 @@ https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0
|
||||||
https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz
|
https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz
|
||||||
https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz
|
https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz
|
||||||
https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz
|
https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz
|
||||||
https://deps.files.ghostty.org/z2d-12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a.tar.gz
|
|
||||||
https://deps.files.ghostty.org/zf-1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8.tar.gz
|
|
||||||
https://deps.files.ghostty.org/zig-wayland-fbfe3b4ac0b472a27b1f1a67405436c58cbee12d.tar.gz
|
|
||||||
https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz
|
https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz
|
||||||
https://deps.files.ghostty.org/zig_objc-1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634.tar.gz
|
|
||||||
https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz
|
https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz
|
||||||
https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz
|
https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz
|
||||||
https://github.com/GNOME/libxml2/archive/refs/tags/v2.11.5.tar.gz
|
https://github.com/jcollie/ghostty-gobject/releases/download/0.14.0-2025-03-11-16-1/ghostty-gobject-0.14.0-2025-03-11-16-1.tar.gz
|
||||||
https://github.com/getsentry/breakpad/archive/b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz
|
|
||||||
https://github.com/mbadolato/iTerm2-Color-Schemes/archive/e21d5ffd19605741d0e3e19d7c5a8c6c25648673.tar.gz
|
https://github.com/mbadolato/iTerm2-Color-Schemes/archive/e21d5ffd19605741d0e3e19d7c5a8c6c25648673.tar.gz
|
||||||
https://github.com/mitchellh/glfw/archive/b552c6ec47326b94015feddb36058ea567b87159.tar.gz
|
https://github.com/mitchellh/libxev/archive/3df9337a9e84450a58a2c4af434ec1a036f7b494.tar.gz
|
||||||
https://github.com/mitchellh/libxev/archive/8943932a668f338cb2c500f6e1a7396bacd8b55d.tar.gz
|
https://github.com/mitchellh/mach-glfw/archive/d84bc11b0601cdad71035a0e9cf21572d76aa0d2.zip
|
||||||
https://github.com/mitchellh/vulkan-headers/archive/04c8a0389d5a0236a96312988017cd4ce27d8041.tar.gz
|
https://github.com/mitchellh/zig-objc/archive/3ab0d37c7d6b933d6ded1b3a35b6b60f05590a98.tar.gz
|
||||||
https://github.com/mitchellh/wayland-headers/archive/5f991515a29f994d87b908115a2ab0b899474bd1.tar.gz
|
https://github.com/natecraddock/zf/archive/03176fcf23fda543cc02a8675e92c1fe3b1ee2eb.tar.gz
|
||||||
https://github.com/mitchellh/x11-headers/archive/2ffbd62d82ff73ec929dd8de802bc95effa0ef88.tar.gz
|
https://github.com/vancluever/z2d/archive/1e89605a624940c310c7a1d81b46a7c5c05919e3.tar.gz
|
||||||
https://github.com/mitchellh/xcode-frameworks/archive/69801c154c39d7ae6129ea1ba8fe1afe00585fc8.tar.gz
|
https://pkg.machengine.org/vulkan-headers/53e3ee66a78b97075863135b429956f225b149a5.tar.gz
|
||||||
https://github.com/wmww/gtk4-layer-shell/archive/refs/tags/v1.1.0.tar.gz
|
https://pkg.machengine.org/wayland-headers/7c53e7483c3cfb5c6780ae542c9f5cfa712a826a.tar.gz
|
||||||
|
https://pkg.machengine.org/x11-headers/29aefb525d5c08b05b0351e34b1623854a138c21.tar.gz
|
||||||
|
https://pkg.machengine.org/xcode-frameworks/9a45f3ac977fd25dff77e58c6de1870b6808c4a7.tar.gz
|
||||||
|
|
|
||||||
|
|
@ -1,200 +1,200 @@
|
||||||
{
|
{
|
||||||
"1220a67b584c9499154de8c96851ed8e92315452cb2027c06e2d7d07a39c6f900d1a": {
|
"libxev-0.0.0-86vtc-ziEgDbLP0vihUn1MhsxNKY4GJEga6BEr7oyHpz": {
|
||||||
"name": "libxev",
|
"name": "libxev",
|
||||||
"url": "https://github.com/mitchellh/libxev/archive/8943932a668f338cb2c500f6e1a7396bacd8b55d.tar.gz",
|
"url": "https://github.com/mitchellh/libxev/archive/3df9337a9e84450a58a2c4af434ec1a036f7b494.tar.gz",
|
||||||
"hash": "sha256-TGooUoby2J8PyzbdKHwdEXnu7f2g4T2/TUHj/ktBsN4="
|
"hash": "sha256-oKZqA9d79jHnp/HsqJWQE33Ffn5Ee5G4VnlQepQuY4o="
|
||||||
},
|
},
|
||||||
"12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62": {
|
"mach_glfw-0.2.0-EJSQm2M9BQCiYGTd9VcKjg2DhSD7WT4kS-MfX68ORRT_": {
|
||||||
"name": "mach_glfw",
|
"name": "mach_glfw",
|
||||||
"url": "https://deps.files.ghostty.org/mach_glfw-12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62.tar.gz",
|
"url": "https://github.com/mitchellh/mach-glfw/archive/d84bc11b0601cdad71035a0e9cf21572d76aa0d2.zip",
|
||||||
"hash": "sha256-HhXIvWUS8/CHWY4VXPG2ZEo+we8XOn3o5rYJCQ1n8Nk="
|
"hash": "sha256-Sh1DvCmawdN+a2JEhNP3wTX43/i5FDlDVOIx7Um/d0U="
|
||||||
},
|
},
|
||||||
"1220736fa4ba211162c7a0e46cc8fe04d95921927688bff64ab5da7420d098a7272d": {
|
"glfw-0.0.0-bOgnngiqGQCt5HJK25zx1lf9emPYDNtEuQPYmrTCdOoN": {
|
||||||
"name": "glfw",
|
"name": "glfw",
|
||||||
"url": "https://github.com/mitchellh/glfw/archive/b552c6ec47326b94015feddb36058ea567b87159.tar.gz",
|
"url": "git+https://github.com/der-teufel-programming/glfw.git#206deaa2485703ac700d0f3020a8854282aecdbb",
|
||||||
"hash": "sha256-IeBVAOQmtyFqVxzuXPek1onuPwIamcOyYtxqKpPEQjU="
|
"hash": "sha256-GFeN4J4ZpKvQV8Gw6fxJ+KSpzzdjIYBbO/fTZ0Ooiuk="
|
||||||
},
|
},
|
||||||
"12202adbfecdad671d585c9a5bfcbd5cdf821726779430047742ce1bf94ad67d19cb": {
|
"N-V-__8AABHMqAWYuRdIlflwi8gksPnlUMQBiSxAqQAAZFms": {
|
||||||
"name": "xcode_frameworks",
|
"name": "xcode_frameworks",
|
||||||
"url": "https://github.com/mitchellh/xcode-frameworks/archive/69801c154c39d7ae6129ea1ba8fe1afe00585fc8.tar.gz",
|
"url": "https://pkg.machengine.org/xcode-frameworks/9a45f3ac977fd25dff77e58c6de1870b6808c4a7.tar.gz",
|
||||||
"hash": "sha256-mP/I2coL57UJm/3+4Q8sPAgQwk8V4zM+S4VBBTrX2To="
|
"hash": "sha256-jWMT0p7klpkgX9GOUNAhrR2e6Ej7MobbqT5ZxJrNQoM="
|
||||||
},
|
},
|
||||||
"122004bfd4c519dadfb8e6281a42fc34fd1aa15aea654ea8a492839046f9894fa2cf": {
|
"N-V-__8AAAIGzwDju1iAEUEqIbBeI3K4JhQ0vBdNzmETnIRQ": {
|
||||||
"name": "vulkan_headers",
|
"name": "vulkan_headers",
|
||||||
"url": "https://github.com/mitchellh/vulkan-headers/archive/04c8a0389d5a0236a96312988017cd4ce27d8041.tar.gz",
|
"url": "https://pkg.machengine.org/vulkan-headers/53e3ee66a78b97075863135b429956f225b149a5.tar.gz",
|
||||||
"hash": "sha256-K+zrRudgHFukOM6En1StRYRMNYkeRk+qHTXvrXaG+FU="
|
"hash": "sha256-kXOn43ntsvxnufobQO0xfzg1cg0R97BmFOU3WRqFsH0="
|
||||||
},
|
},
|
||||||
"1220b3164434d2ec9db146a40bf3a30f490590d68fa8529776a3138074f0da2c11ca": {
|
"N-V-__8AAJfbCQBWPD1WA6AuYSk8LAIj4Bo_KY-2Br8NEIKT": {
|
||||||
"name": "wayland_headers",
|
"name": "wayland_headers",
|
||||||
"url": "https://github.com/mitchellh/wayland-headers/archive/5f991515a29f994d87b908115a2ab0b899474bd1.tar.gz",
|
"url": "https://pkg.machengine.org/wayland-headers/7c53e7483c3cfb5c6780ae542c9f5cfa712a826a.tar.gz",
|
||||||
"hash": "sha256-uFilLZinKkZt6RdVTV3lUmJpzpswDdFva22FvwU/XQI="
|
"hash": "sha256-uGIvMyp+xR1jQXTDr6RqYl40Ukiw9l3fW1t6XpYztPY="
|
||||||
},
|
},
|
||||||
"122089c326186c84aa2fd034b16abc38f3ebf4862d9ae106dc1847ac44f557b36465": {
|
"N-V-__8AACbnQQDnnaLV79Xp3YtkU_g6nseVNOLiA7MzF2a4": {
|
||||||
"name": "x11_headers",
|
"name": "x11_headers",
|
||||||
"url": "https://github.com/mitchellh/x11-headers/archive/2ffbd62d82ff73ec929dd8de802bc95effa0ef88.tar.gz",
|
"url": "https://pkg.machengine.org/x11-headers/29aefb525d5c08b05b0351e34b1623854a138c21.tar.gz",
|
||||||
"hash": "sha256-EhV2bmTY/OMYN1wEul35gD0hQgS/Al262jO3pVr0O+c="
|
"hash": "sha256-UsbWkOmedS4ygY9C1g7OiPVnTcXzfGKdXImmztYAAiI="
|
||||||
},
|
},
|
||||||
"1220f5aec880d4f430cc1597ede88f1530da69e39a4986080e976b0c7b919c2ebfeb": {
|
"vaxis-0.1.0-BWNV_MHyCAARemSCSwwc3sA1etNgv7ge0BCIXspX6CZv": {
|
||||||
"name": "vaxis",
|
"name": "vaxis",
|
||||||
"url": "git+https://github.com/rockorager/libvaxis#2237a7059eae99e9f132dd5acd1555e49d6c7d93",
|
"url": "git+https://github.com/rockorager/libvaxis#1e24e0dfb509e974e1c8713bcd119d0ae032a8c7",
|
||||||
"hash": "sha256-ZzLNJOsXzyBhkdUhbET30RoU2T9xKYsBUQz2NAjK/G8="
|
"hash": "sha256-6p9aSklLTPV9epzGkXBg5SQfjxfTT+/SYLFPiM04VF0="
|
||||||
},
|
},
|
||||||
"1220dd654ef941fc76fd96f9ec6adadf83f69b9887a0d3f4ee5ac0a1a3e11be35cf5": {
|
"zigimg-0.1.0-lly-O-NTEABwkjg9_WM4uLQr_TtL-7jp375PsZJyugGN": {
|
||||||
"name": "zigimg",
|
"name": "zigimg",
|
||||||
"url": "git+https://github.com/zigimg/zigimg#3a667bdb3d7f0955a5a51c8468eac83210c1439e",
|
"url": "git+https://github.com/TUSF/zigimg#5102e09be233d372e9e05f4cb2ffbefba30bc1c0",
|
||||||
"hash": "sha256-oLf3YH3yeg4ikVO/GahMCDRMTU31AHkfSnF4rt7xTKo="
|
"hash": "sha256-0HYK5A8Jlx1WD1hdU07r+m2AXl6UuazFiZd7P3uh/wY="
|
||||||
},
|
},
|
||||||
"122055beff332830a391e9895c044d33b15ea21063779557024b46169fb1984c6e40": {
|
"zg-0.13.4-AAAAAGiZ7QLz4pvECFa_wG4O4TP4FLABHHbemH2KakWM": {
|
||||||
"name": "zg",
|
"name": "zg",
|
||||||
"url": "https://codeberg.org/atman/zg/archive/v0.13.2.tar.gz",
|
"url": "git+https://codeberg.org/atman/zg#4a002763419a34d61dcbb1f415821b83b9bf8ddc",
|
||||||
"hash": "sha256-2x9hT7bYq9KJYWLVOf21a+QvTG/F7HWT+YK15IMRzNY="
|
"hash": "sha256-fo3l6cjkrr/godElTGnQzalBsasN7J73IDIRmw7v1gA="
|
||||||
},
|
},
|
||||||
"12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a": {
|
"z2d-0.6.0-j5P_HvLdCABu-dXpCeRM7Uk4m16vULg1980lMNCQj4_C": {
|
||||||
"name": "z2d",
|
"name": "z2d",
|
||||||
"url": "https://deps.files.ghostty.org/z2d-12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a.tar.gz",
|
"url": "https://github.com/vancluever/z2d/archive/1e89605a624940c310c7a1d81b46a7c5c05919e3.tar.gz",
|
||||||
"hash": "sha256-P0UJ54RO/vVyDa+UkBl+QEOjzoMMEFSOTexQP/uBXfc="
|
"hash": "sha256-PEKVSUZ6teRbDyhFPWSiuBSe40pgr0kVRivIY8Cn8HQ="
|
||||||
},
|
},
|
||||||
"1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634": {
|
"zig_objc-0.0.0-Ir_Sp3TyAADEVRTxXlScq3t_uKAM91MYNerZkHfbD0yt": {
|
||||||
"name": "zig_objc",
|
"name": "zig_objc",
|
||||||
"url": "https://deps.files.ghostty.org/zig_objc-1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634.tar.gz",
|
"url": "https://github.com/mitchellh/zig-objc/archive/3ab0d37c7d6b933d6ded1b3a35b6b60f05590a98.tar.gz",
|
||||||
"hash": "sha256-H+HIbh2T23uzrsg9/1/vl9Ir1HCAa2pzeTx6zktJH9Q="
|
"hash": "sha256-zn1tR6xhSmDla4UJ3t+Gni4Ni3R8deSK3tEe7DGzNXw="
|
||||||
},
|
},
|
||||||
"12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc": {
|
"N-V-__8AAB9YCQBaZtQjJZVndk-g_GDIK-NTZcIa63bFp9yZ": {
|
||||||
"name": "zig_js",
|
"name": "zig_js",
|
||||||
"url": "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz",
|
"url": "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz",
|
||||||
"hash": "sha256-fyNeCVbC9UAaKJY6JhAZlT0A479M/AKYMPIWEZbDWD0="
|
"hash": "sha256-fyNeCVbC9UAaKJY6JhAZlT0A479M/AKYMPIWEZbDWD0="
|
||||||
},
|
},
|
||||||
"12207831bce7d4abce57b5a98e8f3635811cfefd160bca022eb91fe905d36a02cf25": {
|
"ziglyph-0.11.2-AAAAAHPtHwB4Mbzn1KvOV7Wpjo82NYEc_v0WC8oCLrkf": {
|
||||||
"name": "ziglyph",
|
"name": "ziglyph",
|
||||||
"url": "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz",
|
"url": "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz",
|
||||||
"hash": "sha256-cse98+Ft8QUjX+P88yyYfaxJOJGQ9M7Ymw7jFxDz89k="
|
"hash": "sha256-cse98+Ft8QUjX+P88yyYfaxJOJGQ9M7Ymw7jFxDz89k="
|
||||||
},
|
},
|
||||||
"12209ca054cb1919fa276e328967f10b253f7537c4136eb48f3332b0f7cf661cad38": {
|
"wayland-0.4.0-dev-lQa1kjfIAQCmhhQu3xF0KH-94-TzeMXOqfnP0-Dg6Wyy": {
|
||||||
"name": "zig_wayland",
|
"name": "zig_wayland",
|
||||||
"url": "https://deps.files.ghostty.org/zig-wayland-fbfe3b4ac0b472a27b1f1a67405436c58cbee12d.tar.gz",
|
"url": "https://codeberg.org/ifreund/zig-wayland/archive/f3c5d503e540ada8cbcb056420de240af0c094f7.tar.gz",
|
||||||
"hash": "sha256-RtAystqK/GRYIquTK1KfD7rRSCrfuzAvCD1Z9DE1ldc="
|
"hash": "sha256-E77GZ15APYbbO1WzmuJi8eG9/iQFbc2CgkNBxjCLUhk="
|
||||||
},
|
},
|
||||||
"1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8": {
|
"zf-0.10.3-OIRy8bKIAACV6JaNNncXA68Nw2BUAD9JVfQdzjyoZQ-J": {
|
||||||
"name": "zf",
|
"name": "zf",
|
||||||
"url": "https://deps.files.ghostty.org/zf-1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8.tar.gz",
|
"url": "https://github.com/natecraddock/zf/archive/03176fcf23fda543cc02a8675e92c1fe3b1ee2eb.tar.gz",
|
||||||
"hash": "sha256-/oLryY3VQfjbtQi+UP+n6FJTVA/YxIetjO+6Ovrh6/E="
|
"hash": "sha256-HqS2NFUuTQkltFsQlZz4HYHgfhEUEkZY83NnCW2x5Sg="
|
||||||
},
|
},
|
||||||
"1220c72c1697dd9008461ead702997a15d8a1c5810247f02e7983b9f74c6c6e4c087": {
|
"vaxis-0.1.0-BWNV_K3yCACrTy3A5cbZElLyICx5a2O2EzPxmgVRcbKJ": {
|
||||||
"name": "vaxis",
|
"name": "vaxis",
|
||||||
"url": "git+https://github.com/rockorager/libvaxis/?ref=main#dc0a228a5544988d4a920cfb40be9cd28db41423",
|
"url": "git+https://github.com/rockorager/libvaxis/?ref=main#6a37605dde55898dcca4769dd3eb1e333959c209",
|
||||||
"hash": "sha256-QWN4jOrA91KlbqmeEHHJ4HTnCC9nmfxt8DHUXJpAzLI="
|
"hash": "sha256-5DW2V2bVsHtSw7UMGvJ+P0FpXIf5kTNjrq2SMqU6FIk="
|
||||||
},
|
},
|
||||||
"12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d": {
|
"gobject-0.2.0-Skun7H6DlQDWCiNQtdE5TXYcCvx7MyjW01OQe5M_n_jV": {
|
||||||
"name": "gobject",
|
"name": "gobject",
|
||||||
"url": "https://deps.files.ghostty.org/gobject-12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d.tar.zst",
|
"url": "https://github.com/jcollie/ghostty-gobject/releases/download/0.14.0-2025-03-11-16-1/ghostty-gobject-0.14.0-2025-03-11-16-1.tar.gz",
|
||||||
"hash": "sha256-UU97kNv/bZzQPKz1djhEDLapLguvfBpFfWVb6FthtcI="
|
"hash": "sha256-eMmS9oysZheHwSCCvmOUSDJmP9zN7cAr6qqDIbz6EmY="
|
||||||
},
|
},
|
||||||
"12202cdac858abc52413a6c6711d5026d2d3c8e13f95ca2c327eade0736298bb021f": {
|
"N-V-__8AAKrHGAAs2shYq8UkE6bGcR1QJtLTyOE_lcosMn6t": {
|
||||||
"name": "wayland",
|
"name": "wayland",
|
||||||
"url": "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz",
|
"url": "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz",
|
||||||
"hash": "sha256-6kGR1o5DdnflHzqs3ieCmBAUTpMdOXoyfcYDXiw5xQ0="
|
"hash": "sha256-6kGR1o5DdnflHzqs3ieCmBAUTpMdOXoyfcYDXiw5xQ0="
|
||||||
},
|
},
|
||||||
"12201a57c6ce0001aa034fa80fba3e1cd2253c560a45748f4f4dd21ff23b491cddef": {
|
"N-V-__8AAKw-DAAaV8bOAAGqA0-oD7o-HNIlPFYKRXSPT03S": {
|
||||||
"name": "wayland_protocols",
|
"name": "wayland_protocols",
|
||||||
"url": "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz",
|
"url": "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz",
|
||||||
"hash": "sha256-XO3K3egbdeYPI+XoO13SuOtO+5+Peb16NH0UiusFMPg="
|
"hash": "sha256-XO3K3egbdeYPI+XoO13SuOtO+5+Peb16NH0UiusFMPg="
|
||||||
},
|
},
|
||||||
"12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566": {
|
"N-V-__8AAKYZBAB-CFHBKs3u4JkeiT4BMvyHu3Y5aaWF3Bbs": {
|
||||||
"name": "plasma_wayland_protocols",
|
"name": "plasma_wayland_protocols",
|
||||||
"url": "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz",
|
"url": "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz",
|
||||||
"hash": "sha256-XFi6IUrNjmvKNCbcCLAixGqN2Zeymhs+KLrfccIN9EE="
|
"hash": "sha256-XFi6IUrNjmvKNCbcCLAixGqN2Zeymhs+KLrfccIN9EE="
|
||||||
},
|
},
|
||||||
"122071ad56fd984afb4f94d441b6ea3e21f1741a0e026b02860d9a46110fac2cd109": {
|
"N-V-__8AAABBKARxrVb9mEr7T5TUQbbqPiHxdBoOAmsChg2a": {
|
||||||
"name": "iterm2_themes",
|
"name": "iterm2_themes",
|
||||||
"url": "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/e21d5ffd19605741d0e3e19d7c5a8c6c25648673.tar.gz",
|
"url": "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/e21d5ffd19605741d0e3e19d7c5a8c6c25648673.tar.gz",
|
||||||
"hash": "sha256-pyoGlKOWdZVbjGoxPP+CZ6zwil8O12gMOlzX0BJEfAc="
|
"hash": "sha256-pyoGlKOWdZVbjGoxPP+CZ6zwil8O12gMOlzX0BJEfAc="
|
||||||
},
|
},
|
||||||
"1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402": {
|
"N-V-__8AAH0GaQC8a52s6vfIxg88OZgFgEW6DFxfSK4lX_l3": {
|
||||||
"name": "imgui",
|
"name": "imgui",
|
||||||
"url": "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz",
|
"url": "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz",
|
||||||
"hash": "sha256-oF/QHgTPEat4Hig4fGIdLkIPHmBEyOJ6JeYD6pnveGA="
|
"hash": "sha256-oF/QHgTPEat4Hig4fGIdLkIPHmBEyOJ6JeYD6pnveGA="
|
||||||
},
|
},
|
||||||
"1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d": {
|
"N-V-__8AAKLKpwC4H27Ps_0iL3bPkQb-z6ZVSrB-x_3EEkub": {
|
||||||
"name": "freetype",
|
"name": "freetype",
|
||||||
"url": "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz",
|
"url": "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz",
|
||||||
"hash": "sha256-QnIB9dUVFnDQXB9bRb713aHy592XHvVPD+qqf/0quQw="
|
"hash": "sha256-QnIB9dUVFnDQXB9bRb713aHy592XHvVPD+qqf/0quQw="
|
||||||
},
|
},
|
||||||
"1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66": {
|
"N-V-__8AAJrvXQCqAT8Mg9o_tk6m0yf5Fz-gCNEOKLyTSerD": {
|
||||||
"name": "libpng",
|
"name": "libpng",
|
||||||
"url": "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz",
|
"url": "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz",
|
||||||
"hash": "sha256-/syVtGzwXo4/yKQUdQ4LparQDYnp/fF16U/wQcrxoDo="
|
"hash": "sha256-/syVtGzwXo4/yKQUdQ4LparQDYnp/fF16U/wQcrxoDo="
|
||||||
},
|
},
|
||||||
"1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb": {
|
"N-V-__8AAB0eQwD-0MdOEBmz7intriBReIsIDNlukNVoNu6o": {
|
||||||
"name": "zlib",
|
"name": "zlib",
|
||||||
"url": "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz",
|
"url": "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz",
|
||||||
"hash": "sha256-F+iIY/NgBnKrSRgvIXKBtvxNPHYr3jYZNeQ2qVIU0Fw="
|
"hash": "sha256-F+iIY/NgBnKrSRgvIXKBtvxNPHYr3jYZNeQ2qVIU0Fw="
|
||||||
},
|
},
|
||||||
"12201149afb3326c56c05bb0a577f54f76ac20deece63aa2f5cd6ff31a4fa4fcb3b7": {
|
"N-V-__8AAIrfdwARSa-zMmxWwFuwpXf1T3asIN7s5jqi9c1v": {
|
||||||
"name": "fontconfig",
|
"name": "fontconfig",
|
||||||
"url": "https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz",
|
"url": "https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz",
|
||||||
"hash": "sha256-O6LdkhWHGKzsXKrxpxYEO1qgVcJ7CB2RSvPMtA3OilU="
|
"hash": "sha256-O6LdkhWHGKzsXKrxpxYEO1qgVcJ7CB2RSvPMtA3OilU="
|
||||||
},
|
},
|
||||||
"122032442d95c3b428ae8e526017fad881e7dc78eab4d558e9a58a80bfbd65a64f7d": {
|
"N-V-__8AAG3RoQEyRC2Vw7Qoro5SYBf62IHn3HjqtNVY6aWK": {
|
||||||
"name": "libxml2",
|
"name": "libxml2",
|
||||||
"url": "https://github.com/GNOME/libxml2/archive/refs/tags/v2.11.5.tar.gz",
|
"url": "https://deps.files.ghostty.org/libxml2-2.11.5.tar.gz",
|
||||||
"hash": "sha256-bCgFni4+60K1tLFkieORamNGwQladP7jvGXNxdiaYhU="
|
"hash": "sha256-bCgFni4+60K1tLFkieORamNGwQladP7jvGXNxdiaYhU="
|
||||||
},
|
},
|
||||||
"12203eff4829ad8afdd828eb323d48e5ba8dbb44d224e9e314d4ab1533c2bec20f4b": {
|
"N-V-__8AALiNBAA-_0gprYr92CjrMj1I5bqNu0TSJOnjFNSr": {
|
||||||
"name": "gtk4_layer_shell",
|
"name": "gtk4_layer_shell",
|
||||||
"url": "https://github.com/wmww/gtk4-layer-shell/archive/refs/tags/v1.1.0.tar.gz",
|
"url": "https://deps.files.ghostty.org/gtk4-layer-shell-1.1.0.tar.gz",
|
||||||
"hash": "sha256-mChCgSYKXu9bT2OlXxbEv2p4ihAgptsDfssPcfozaYg="
|
"hash": "sha256-mChCgSYKXu9bT2OlXxbEv2p4ihAgptsDfssPcfozaYg="
|
||||||
},
|
},
|
||||||
"1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122": {
|
"N-V-__8AAKa0rgW4WI8QbJlq8QJJv6CSxvsvNfussVBe9Heg": {
|
||||||
"name": "harfbuzz",
|
"name": "harfbuzz",
|
||||||
"url": "https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz",
|
"url": "https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz",
|
||||||
"hash": "sha256-nxygiYE7BZRK0c6MfgGCEwJtNdybq0gKIeuHaDg5ZVY="
|
"hash": "sha256-nxygiYE7BZRK0c6MfgGCEwJtNdybq0gKIeuHaDg5ZVY="
|
||||||
},
|
},
|
||||||
"12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b": {
|
"N-V-__8AAGmZhABbsPJLfbqrh6JTHsXhY6qCaLAQyx25e0XE": {
|
||||||
"name": "highway",
|
"name": "highway",
|
||||||
"url": "https://deps.files.ghostty.org/highway-12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b.tar.gz",
|
"url": "https://deps.files.ghostty.org/highway-66486a10623fa0d72fe91260f96c892e41aceb06.tar.gz",
|
||||||
"hash": "sha256-NUqLRTm1iOcLmOxwhEJz4/J0EwLEw3e8xOgbPRhm98k="
|
"hash": "sha256-h9T4iT704I8iSXNgj/6/lCaKgTgLp5wS6IQZaMgKohI="
|
||||||
},
|
},
|
||||||
"1220f870c853529233ea64a108acaaa81f8d06d7ff4b66c76930be7d78d508aff7a2": {
|
"N-V-__8AADcZkgn4cMhTUpIz6mShCKyqqB-NBtf_S2bHaTC-": {
|
||||||
"name": "gettext",
|
"name": "gettext",
|
||||||
"url": "https://deps.files.ghostty.org/gettext-0.24.tar.gz",
|
"url": "https://deps.files.ghostty.org/gettext-0.24.tar.gz",
|
||||||
"hash": "sha256-yRhQPVk9cNr0hE0XWhPYFq+stmfAb7oeydzVACwVGLc="
|
"hash": "sha256-yRhQPVk9cNr0hE0XWhPYFq+stmfAb7oeydzVACwVGLc="
|
||||||
},
|
},
|
||||||
"1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb": {
|
"N-V-__8AAHjwMQDBXnLq3Q2QhaivE0kE2aD138vtX2Bq1g7c": {
|
||||||
"name": "oniguruma",
|
"name": "oniguruma",
|
||||||
"url": "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz",
|
"url": "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz",
|
||||||
"hash": "sha256-ABqhIC54RI9MC/GkjHblVodrNvFtks4yB+zP1h2Z8qA="
|
"hash": "sha256-ABqhIC54RI9MC/GkjHblVodrNvFtks4yB+zP1h2Z8qA="
|
||||||
},
|
},
|
||||||
"1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e": {
|
"N-V-__8AAPlZGwBEa-gxrcypGBZ2R8Bse4JYSfo_ul8i2jlG": {
|
||||||
"name": "sentry",
|
"name": "sentry",
|
||||||
"url": "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz",
|
"url": "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz",
|
||||||
"hash": "sha256-KsZJfMjWGo0xCT5HrduMmyxFsWsHBbszSoNbZCPDGN8="
|
"hash": "sha256-KsZJfMjWGo0xCT5HrduMmyxFsWsHBbszSoNbZCPDGN8="
|
||||||
},
|
},
|
||||||
"12207fd37bb8251919c112dcdd8f616a491857b34a451f7e4486490077206dc2a1ea": {
|
"N-V-__8AALw2uwF_03u4JRkZwRLc3Y9hakkYV7NKRR9-RIZJ": {
|
||||||
"name": "breakpad",
|
"name": "breakpad",
|
||||||
"url": "https://github.com/getsentry/breakpad/archive/b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz",
|
"url": "https://deps.files.ghostty.org/breakpad-b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz",
|
||||||
"hash": "sha256-bMqYlD0amQdmzvYQd8Ca/1k4Bj/heh7+EijlQSttatk="
|
"hash": "sha256-bMqYlD0amQdmzvYQd8Ca/1k4Bj/heh7+EijlQSttatk="
|
||||||
},
|
},
|
||||||
"1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641": {
|
"N-V-__8AAHffAgDU0YQmynL8K35WzkcnMUmBVQHQ0jlcKpjH": {
|
||||||
"name": "utfcpp",
|
"name": "utfcpp",
|
||||||
"url": "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz",
|
"url": "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz",
|
||||||
"hash": "sha256-/8ZooxDndgfTk/PBizJxXyI9oerExNbgV5oR345rWc8="
|
"hash": "sha256-/8ZooxDndgfTk/PBizJxXyI9oerExNbgV5oR345rWc8="
|
||||||
},
|
},
|
||||||
"122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd": {
|
"N-V-__8AAAzZywE3s51XfsLbP9eyEw57ae9swYB9aGB6fCMs": {
|
||||||
"name": "wuffs",
|
"name": "wuffs",
|
||||||
"url": "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz",
|
"url": "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz",
|
||||||
"hash": "sha256-nkzSCr6W5sTG7enDBXEIhgEm574uLD41UVR2wlC+HBM="
|
"hash": "sha256-nkzSCr6W5sTG7enDBXEIhgEm574uLD41UVR2wlC+HBM="
|
||||||
},
|
},
|
||||||
"12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806": {
|
"N-V-__8AADYiAAB_80AWnH1AxXC0tql9thT-R-DYO1gBqTLc": {
|
||||||
"name": "pixels",
|
"name": "pixels",
|
||||||
"url": "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz",
|
"url": "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz",
|
||||||
"hash": "sha256-Veg7FtCRCCUCvxSb9FfzH0IJLFmCZQ4/+657SIcb8Ro="
|
"hash": "sha256-Veg7FtCRCCUCvxSb9FfzH0IJLFmCZQ4/+657SIcb8Ro="
|
||||||
},
|
},
|
||||||
"12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1": {
|
"N-V-__8AABzkUgISeKGgXAzgtutgJsZc0-kkeqBBscJgMkvy": {
|
||||||
"name": "glslang",
|
"name": "glslang",
|
||||||
"url": "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz",
|
"url": "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz",
|
||||||
"hash": "sha256-FKLtu1Ccs+UamlPj9eQ12/WXFgS0uDPmPmB26MCpl7U="
|
"hash": "sha256-FKLtu1Ccs+UamlPj9eQ12/WXFgS0uDPmPmB26MCpl7U="
|
||||||
},
|
},
|
||||||
"1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da": {
|
"N-V-__8AANb6pwD7O1WG6L5nvD_rNMvnSc9Cpg1ijSlTYywv": {
|
||||||
"name": "spirv_cross",
|
"name": "spirv_cross",
|
||||||
"url": "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz",
|
"url": "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz",
|
||||||
"hash": "sha256-tStvz8Ref6abHwahNiwVVHNETizAmZVVaxVsU7pmV+M="
|
"hash": "sha256-tStvz8Ref6abHwahNiwVVHNETizAmZVVaxVsU7pmV+M="
|
||||||
|
|
|
||||||
22
flake.lock
22
flake.lock
|
|
@ -52,11 +52,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738136902,
|
"lastModified": 1741708242,
|
||||||
"narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=",
|
"narHash": "sha256-cNRqdQD4sZpN7JLqxVOze4+WsWTmv2DGH0wNCOVwrWc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c",
|
"rev": "b62d2a95c72fb068aecd374a7262b37ed92df82b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -102,11 +102,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738239110,
|
"lastModified": 1741702955,
|
||||||
"narHash": "sha256-Y5i9mQ++dyIQr+zEPNy+KIbc5wjPmfllBrag3cHZgcE=",
|
"narHash": "sha256-Emk3VnNByigCBlBN34IH2cMrsUqIhdex02uw9TSDsN0=",
|
||||||
"owner": "mitchellh",
|
"owner": "mitchellh",
|
||||||
"repo": "zig-overlay",
|
"repo": "zig-overlay",
|
||||||
"rev": "1a8fb6f3a04724519436355564b95fce5e272504",
|
"rev": "1152ce759114a94134081270affd970ae1b957ed",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -121,20 +121,20 @@
|
||||||
"flake-utils"
|
"flake-utils"
|
||||||
],
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-stable"
|
"nixpkgs-unstable"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1741368279,
|
"lastModified": 1741816255,
|
||||||
"narHash": "sha256-WTaC8HmnIq6O71iK0g9as404BbmS+YyEP5qS85m2JBY=",
|
"narHash": "sha256-SJQMnm1vwXy8Td2qp/omjybn+4xZ/MDdZHeK6aa2nb0=",
|
||||||
"owner": "jcollie",
|
"owner": "jcollie",
|
||||||
"repo": "zig2nix",
|
"repo": "zig2nix",
|
||||||
"rev": "672971b5b6911de21446ad4fc76dee677922eda0",
|
"rev": "c2a24405298373123e12ca81805e436da648aaf5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "jcollie",
|
"owner": "jcollie",
|
||||||
"ref": "672971b5b6911de21446ad4fc76dee677922eda0",
|
"ref": "c2a24405298373123e12ca81805e436da648aaf5",
|
||||||
"repo": "zig2nix",
|
"repo": "zig2nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
20
flake.nix
20
flake.nix
|
|
@ -26,9 +26,9 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
zig2nix = {
|
zig2nix = {
|
||||||
url = "github:jcollie/zig2nix?ref=672971b5b6911de21446ad4fc76dee677922eda0";
|
url = "github:jcollie/zig2nix?ref=c2a24405298373123e12ca81805e436da648aaf5";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.follows = "nixpkgs-stable";
|
nixpkgs.follows = "nixpkgs-unstable";
|
||||||
flake-utils.follows = "flake-utils";
|
flake-utils.follows = "flake-utils";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
|
pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
|
||||||
in {
|
in {
|
||||||
devShell.${system} = pkgs-stable.callPackage ./nix/devShell.nix {
|
devShell.${system} = pkgs-stable.callPackage ./nix/devShell.nix {
|
||||||
zig = zig.packages.${system}."0.13.0";
|
zig = zig.packages.${system}."0.14.0";
|
||||||
wraptest = pkgs-stable.callPackage ./nix/wraptest.nix {};
|
wraptest = pkgs-stable.callPackage ./nix/wraptest.nix {};
|
||||||
zig2nix = zig2nix;
|
zig2nix = zig2nix;
|
||||||
};
|
};
|
||||||
|
|
@ -61,10 +61,10 @@
|
||||||
revision = self.shortRev or self.dirtyShortRev or "dirty";
|
revision = self.shortRev or self.dirtyShortRev or "dirty";
|
||||||
};
|
};
|
||||||
in rec {
|
in rec {
|
||||||
deps = pkgs-stable.callPackage ./build.zig.zon.nix {};
|
deps = pkgs-unstable.callPackage ./build.zig.zon.nix {};
|
||||||
ghostty-debug = pkgs-stable.callPackage ./nix/package.nix (mkArgs "Debug");
|
ghostty-debug = pkgs-unstable.callPackage ./nix/package.nix (mkArgs "Debug");
|
||||||
ghostty-releasesafe = pkgs-stable.callPackage ./nix/package.nix (mkArgs "ReleaseSafe");
|
ghostty-releasesafe = pkgs-unstable.callPackage ./nix/package.nix (mkArgs "ReleaseSafe");
|
||||||
ghostty-releasefast = pkgs-stable.callPackage ./nix/package.nix (mkArgs "ReleaseFast");
|
ghostty-releasefast = pkgs-unstable.callPackage ./nix/package.nix (mkArgs "ReleaseFast");
|
||||||
|
|
||||||
ghostty = ghostty-releasefast;
|
ghostty = ghostty-releasefast;
|
||||||
default = ghostty;
|
default = ghostty;
|
||||||
|
|
@ -77,14 +77,14 @@
|
||||||
module: let
|
module: let
|
||||||
vm = import ./nix/vm/create.nix {
|
vm = import ./nix/vm/create.nix {
|
||||||
inherit system module;
|
inherit system module;
|
||||||
nixpkgs = nixpkgs-stable;
|
nixpkgs = nixpkgs-unstable;
|
||||||
overlay = self.overlays.debug;
|
overlay = self.overlays.debug;
|
||||||
};
|
};
|
||||||
program = pkgs-stable.writeShellScript "run-ghostty-vm" ''
|
program = pkgs-unstable.writeShellScript "run-ghostty-vm" ''
|
||||||
SHARED_DIR=$(pwd)
|
SHARED_DIR=$(pwd)
|
||||||
export SHARED_DIR
|
export SHARED_DIR
|
||||||
|
|
||||||
${pkgs-stable.lib.getExe vm.config.system.build.vm} "$@"
|
${pkgs-unstable.lib.getExe vm.config.system.build.vm} "$@"
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
type = "app";
|
type = "app";
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ elif [ "$1" != "--update" ]; then
|
||||||
help
|
help
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
jq -r '.[] .url' "$BUILD_ZIG_ZON_LOCK" | sort > "$BUILD_ZIG_ZON_TXT"
|
jq -r '.[] .url' "$BUILD_ZIG_ZON_LOCK" | LANG=C sort > "$BUILD_ZIG_ZON_TXT"
|
||||||
mv "$WORK_DIR/build.zig.zon.nix" "$BUILD_ZIG_ZON_NIX"
|
mv "$WORK_DIR/build.zig.zon.nix" "$BUILD_ZIG_ZON_NIX"
|
||||||
echo -e "\nOK: build.zig.zon.nix updated."
|
echo -e "\nOK: build.zig.zon.nix updated."
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
||||||
|
|
@ -200,5 +200,9 @@ in
|
||||||
# and we need iOS too.
|
# and we need iOS too.
|
||||||
unset SDKROOT
|
unset SDKROOT
|
||||||
unset DEVELOPER_DIR
|
unset DEVELOPER_DIR
|
||||||
|
|
||||||
|
# We need to remove "xcrun" from the PATH. It is injected by
|
||||||
|
# some dependency but we need to rely on system Xcode tools
|
||||||
|
export PATH=$(echo "$PATH" | awk -v RS=: -v ORS=: '$0 !~ /xcrun/ || $0 == "/usr/bin" {print}' | sed 's/:$//')
|
||||||
'');
|
'');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
git,
|
git,
|
||||||
ncurses,
|
ncurses,
|
||||||
pkg-config,
|
pkg-config,
|
||||||
zig_0_13,
|
zig_0_14,
|
||||||
pandoc,
|
pandoc,
|
||||||
revision ? "dirty",
|
revision ? "dirty",
|
||||||
optimize ? "Debug",
|
optimize ? "Debug",
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
# https://github.com/ziglang/zig/issues/14281#issuecomment-1624220653 is
|
# https://github.com/ziglang/zig/issues/14281#issuecomment-1624220653 is
|
||||||
# ultimately acted on and has made its way to a nixpkgs implementation, this
|
# ultimately acted on and has made its way to a nixpkgs implementation, this
|
||||||
# can probably be removed in favor of that.
|
# can probably be removed in favor of that.
|
||||||
zig_hook = zig_0_13.hook.overrideAttrs {
|
zig_hook = zig_0_14.hook.overrideAttrs {
|
||||||
zig_default_flags = "-Dcpu=baseline -Doptimize=${optimize} --color off";
|
zig_default_flags = "-Dcpu=baseline -Doptimize=${optimize} --color off";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
.{
|
.{
|
||||||
.name = "apple-sdk",
|
.name = .apple_sdk,
|
||||||
.version = "0.1.0",
|
.version = "0.1.0",
|
||||||
.dependencies = .{},
|
.dependencies = .{},
|
||||||
|
.fingerprint = 0xdde52860f7c464d2,
|
||||||
|
.paths = .{""},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,9 @@ pub fn build(b: *std.Build) !void {
|
||||||
lib.linkLibCpp();
|
lib.linkLibCpp();
|
||||||
lib.addIncludePath(upstream.path("src"));
|
lib.addIncludePath(upstream.path("src"));
|
||||||
lib.addIncludePath(b.path("vendor"));
|
lib.addIncludePath(b.path("vendor"));
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||||
|
|
@ -29,7 +29,7 @@ pub fn build(b: *std.Build) !void {
|
||||||
.flags = flags.items,
|
.flags = flags.items,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
lib.addCSourceFiles(.{
|
lib.addCSourceFiles(.{
|
||||||
.root = upstream.path(""),
|
.root = upstream.path(""),
|
||||||
.files = common_apple,
|
.files = common_apple,
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
.{
|
.{
|
||||||
.name = "breakpad",
|
.name = .breakpad,
|
||||||
.version = "0.1.0",
|
.version = "0.1.0",
|
||||||
|
.fingerprint = 0xfe9f9e4c76d5f962,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
.breakpad = .{
|
.breakpad = .{
|
||||||
.url = "https://github.com/getsentry/breakpad/archive/b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz",
|
.url = "https://deps.files.ghostty.org/breakpad-b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz",
|
||||||
.hash = "12207fd37bb8251919c112dcdd8f616a491857b34a451f7e4486490077206dc2a1ea",
|
.hash = "N-V-__8AALw2uwF_03u4JRkZwRLc3Y9hakkYV7NKRR9-RIZJ",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -76,9 +76,9 @@ pub fn build(b: *std.Build) !void {
|
||||||
.flags = flags.items,
|
.flags = flags.items,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
if (!target.query.isNative()) {
|
if (!target.query.isNative()) {
|
||||||
try @import("apple_sdk").addPaths(b, &lib.root_module);
|
try @import("apple_sdk").addPaths(b, lib.root_module);
|
||||||
try @import("apple_sdk").addPaths(b, module);
|
try @import("apple_sdk").addPaths(b, module);
|
||||||
}
|
}
|
||||||
lib.addCSourceFile(.{
|
lib.addCSourceFile(.{
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
.{
|
.{
|
||||||
.name = "cimgui",
|
.name = .cimgui,
|
||||||
.version = "1.90.6", // -docking branch
|
.version = "1.90.6", // -docking branch
|
||||||
|
.fingerprint = 0x49726f5f8acbc90d,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// This should be kept in sync with the submodule in the cimgui source
|
// This should be kept in sync with the submodule in the cimgui source
|
||||||
|
|
@ -8,7 +9,7 @@
|
||||||
.imgui = .{
|
.imgui = .{
|
||||||
// ocornut/imgui
|
// ocornut/imgui
|
||||||
.url = "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz",
|
.url = "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz",
|
||||||
.hash = "1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402",
|
.hash = "N-V-__8AAH0GaQC8a52s6vfIxg88OZgFgEW6DFxfSK4lX_l3",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
.{
|
.{
|
||||||
.name = "fontconfig",
|
.name = .fontconfig,
|
||||||
.version = "2.14.2",
|
.version = "2.14.2",
|
||||||
|
.fingerprint = 0x4a79a5a40c6d6d8,
|
||||||
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
.fontconfig = .{
|
.fontconfig = .{
|
||||||
.url = "https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz",
|
.url = "https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz",
|
||||||
.hash = "12201149afb3326c56c05bb0a577f54f76ac20deece63aa2f5cd6ff31a4fa4fcb3b7",
|
.hash = "N-V-__8AAIrfdwARSa-zMmxWwFuwpXf1T3asIN7s5jqi9c1v",
|
||||||
},
|
},
|
||||||
|
|
||||||
.freetype = .{ .path = "../freetype" },
|
.freetype = .{ .path = "../freetype" },
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ pub const Property = enum {
|
||||||
|
|
||||||
pub fn cval(self: Property) [:0]const u8 {
|
pub fn cval(self: Property) [:0]const u8 {
|
||||||
@setEvalBranchQuota(10_000);
|
@setEvalBranchQuota(10_000);
|
||||||
inline for (@typeInfo(Property).Enum.fields) |field| {
|
inline for (@typeInfo(Property).@"enum".fields) |field| {
|
||||||
if (self == @field(Property, field.name)) {
|
if (self == @field(Property, field.name)) {
|
||||||
// Build our string in a comptime context so it is a binary
|
// Build our string in a comptime context so it is a binary
|
||||||
// constant and not stack allocated.
|
// constant and not stack allocated.
|
||||||
|
|
|
||||||
|
|
@ -69,9 +69,9 @@ fn buildLib(b: *std.Build, module: *std.Build.Module, options: anytype) !*std.Bu
|
||||||
});
|
});
|
||||||
lib.linkLibC();
|
lib.linkLibC();
|
||||||
lib.addIncludePath(upstream.path("include"));
|
lib.addIncludePath(upstream.path("include"));
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.addIncludePath(upstream.path("include"));
|
module.addIncludePath(upstream.path("include"));
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "freetype",
|
.name = .freetype,
|
||||||
.version = "2.13.2",
|
.version = "2.13.2",
|
||||||
|
.fingerprint = 0xac2059b6f7bbfe0a,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// freetype/freetype
|
// freetype/freetype
|
||||||
.freetype = .{
|
.freetype = .{
|
||||||
.url = "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz",
|
.url = "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz",
|
||||||
.hash = "1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d",
|
.hash = "N-V-__8AAKLKpwC4H27Ps_0iL3bPkQb-z6ZVSrB-x_3EEkub",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ pub fn build(b: *std.Build) !void {
|
||||||
|
|
||||||
module.addIncludePath(upstream.path(""));
|
module.addIncludePath(upstream.path(""));
|
||||||
module.addIncludePath(b.path("override"));
|
module.addIncludePath(b.path("override"));
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, module);
|
try apple_sdk.addPaths(b, module);
|
||||||
}
|
}
|
||||||
|
|
@ -53,9 +53,9 @@ fn buildGlslang(
|
||||||
lib.linkLibCpp();
|
lib.linkLibCpp();
|
||||||
lib.addIncludePath(upstream.path(""));
|
lib.addIncludePath(upstream.path(""));
|
||||||
lib.addIncludePath(b.path("override"));
|
lib.addIncludePath(b.path("override"));
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "glslang",
|
.name = .glslang,
|
||||||
.version = "14.2.0",
|
.version = "14.2.0",
|
||||||
|
.fingerprint = 0x274a35558e2e504,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// KhronosGroup/glslang
|
// KhronosGroup/glslang
|
||||||
.glslang = .{
|
.glslang = .{
|
||||||
.url = "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz",
|
.url = "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz",
|
||||||
.hash = "12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1",
|
.hash = "N-V-__8AABzkUgISeKGgXAzgtutgJsZc0-kkeqBBscJgMkvy",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,16 @@ fn buildLib(b: *std.Build, module: *std.Build.Module, options: anytype) !*std.Bu
|
||||||
b.fmt("-DGTK_LAYER_SHELL_MAJOR={}", .{version.major}),
|
b.fmt("-DGTK_LAYER_SHELL_MAJOR={}", .{version.major}),
|
||||||
b.fmt("-DGTK_LAYER_SHELL_MINOR={}", .{version.minor}),
|
b.fmt("-DGTK_LAYER_SHELL_MINOR={}", .{version.minor}),
|
||||||
b.fmt("-DGTK_LAYER_SHELL_MICRO={}", .{version.patch}),
|
b.fmt("-DGTK_LAYER_SHELL_MICRO={}", .{version.patch}),
|
||||||
|
|
||||||
|
// Zig 0.14 regression: this is required because building with
|
||||||
|
// ubsan results in unknown symbols. Bundling the ubsan/compiler
|
||||||
|
// RT doesn't help. I'm not sure what the root cause is but I
|
||||||
|
// suspect its related to this:
|
||||||
|
// https://github.com/ziglang/zig/issues/23052
|
||||||
|
//
|
||||||
|
// We can remove this in the future for Zig updates and see
|
||||||
|
// if our binaries run in debug on NixOS.
|
||||||
|
"-fno-sanitize=undefined",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,16 @@
|
||||||
.{
|
.{
|
||||||
.name = "gtk4-layer-shell",
|
.name = .gtk4_layer_shell,
|
||||||
.version = "1.1.0",
|
.version = "1.1.0",
|
||||||
|
.fingerprint = 0x4b96f9483c6feeb1,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
.gtk4_layer_shell = .{
|
.gtk4_layer_shell = .{
|
||||||
.url = "https://github.com/wmww/gtk4-layer-shell/archive/refs/tags/v1.1.0.tar.gz",
|
.url = "https://deps.files.ghostty.org/gtk4-layer-shell-1.1.0.tar.gz",
|
||||||
.hash = "12203eff4829ad8afdd828eb323d48e5ba8dbb44d224e9e314d4ab1533c2bec20f4b",
|
.hash = "N-V-__8AALiNBAA-_0gprYr92CjrMj1I5bqNu0TSJOnjFNSr",
|
||||||
},
|
},
|
||||||
.wayland_protocols = .{
|
.wayland_protocols = .{
|
||||||
.url = "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz",
|
.url = "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz",
|
||||||
.hash = "12201a57c6ce0001aa034fa80fba3e1cd2253c560a45748f4f4dd21ff23b491cddef",
|
.hash = "N-V-__8AAKw-DAAaV8bOAAGqA0-oD7o-HNIlPFYKRXSPT03S",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,8 +95,8 @@ fn buildLib(b: *std.Build, module: *std.Build.Module, options: anytype) !*std.Bu
|
||||||
lib.addIncludePath(upstream.path("src"));
|
lib.addIncludePath(upstream.path("src"));
|
||||||
module.addIncludePath(upstream.path("src"));
|
module.addIncludePath(upstream.path("src"));
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
try apple_sdk.addPaths(b, module);
|
try apple_sdk.addPaths(b, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "harfbuzz",
|
.name = .harfbuzz,
|
||||||
.version = "8.4.0",
|
.version = "8.4.0",
|
||||||
|
.fingerprint = 0xbd60917cd18865d8,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// harfbuzz/harfbuzz
|
// harfbuzz/harfbuzz
|
||||||
.harfbuzz = .{
|
.harfbuzz = .{
|
||||||
.url = "https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz",
|
.url = "https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz",
|
||||||
.hash = "1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122",
|
.hash = "N-V-__8AAKa0rgW4WI8QbJlq8QJJv6CSxvsvNfussVBe9Heg",
|
||||||
},
|
},
|
||||||
|
|
||||||
.freetype = .{ .path = "../freetype" },
|
.freetype = .{ .path = "../freetype" },
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,9 @@ pub fn build(b: *std.Build) !void {
|
||||||
lib.addIncludePath(upstream.path(""));
|
lib.addIncludePath(upstream.path(""));
|
||||||
module.addIncludePath(upstream.path(""));
|
module.addIncludePath(upstream.path(""));
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
try apple_sdk.addPaths(b, module);
|
try apple_sdk.addPaths(b, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -76,6 +76,7 @@ pub fn build(b: *std.Build) !void {
|
||||||
.root = upstream.path(""),
|
.root = upstream.path(""),
|
||||||
.flags = flags.items,
|
.flags = flags.items,
|
||||||
.files = &.{
|
.files = &.{
|
||||||
|
"hwy/abort.cc",
|
||||||
"hwy/aligned_allocator.cc",
|
"hwy/aligned_allocator.cc",
|
||||||
"hwy/nanobenchmark.cc",
|
"hwy/nanobenchmark.cc",
|
||||||
"hwy/per_target.cc",
|
"hwy/per_target.cc",
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "highway",
|
.name = .highway,
|
||||||
.version = "1.1.0",
|
.version = "1.2.0",
|
||||||
|
.fingerprint = 0xdbcf1a7425023274,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// google/highway
|
// google/highway
|
||||||
.highway = .{
|
.highway = .{
|
||||||
.url = "https://deps.files.ghostty.org/highway-12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b.tar.gz",
|
.url = "https://deps.files.ghostty.org/highway-66486a10623fa0d72fe91260f96c892e41aceb06.tar.gz",
|
||||||
.hash = "12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b",
|
.hash = "N-V-__8AAGmZhABbsPJLfbqrh6JTHsXhY6qCaLAQyx25e0XE",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -42,9 +42,9 @@ pub fn build(b: *std.Build) !void {
|
||||||
lib.addIncludePath(upstream.path("gettext-runtime/intl"));
|
lib.addIncludePath(upstream.path("gettext-runtime/intl"));
|
||||||
lib.addIncludePath(upstream.path("gettext-runtime/intl/gnulib-lib"));
|
lib.addIncludePath(upstream.path("gettext-runtime/intl/gnulib-lib"));
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
lib.addCSourceFiles(.{
|
lib.addCSourceFiles(.{
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
.{
|
.{
|
||||||
.name = "libintl",
|
.name = .libintl,
|
||||||
.version = "0.24.0",
|
.version = "0.24.0",
|
||||||
|
.fingerprint = 0x16434c723ba7278a,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
.gettext = .{
|
.gettext = .{
|
||||||
.url = "https://deps.files.ghostty.org/gettext-0.24.tar.gz",
|
.url = "https://deps.files.ghostty.org/gettext-0.24.tar.gz",
|
||||||
.hash = "1220f870c853529233ea64a108acaaa81f8d06d7ff4b66c76930be7d78d508aff7a2",
|
.hash = "N-V-__8AADcZkgn4cMhTUpIz6mShCKyqqB-NBtf_S2bHaTC-",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ pub fn build(b: *std.Build) !void {
|
||||||
if (target.result.os.tag == .linux) {
|
if (target.result.os.tag == .linux) {
|
||||||
lib.linkSystemLibrary("m");
|
lib.linkSystemLibrary("m");
|
||||||
}
|
}
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
// For dynamic linking, we prefer dynamic linking and to search by
|
// For dynamic linking, we prefer dynamic linking and to search by
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "libpng",
|
.name = .libpng,
|
||||||
.version = "1.6.43",
|
.version = "1.6.43",
|
||||||
|
.fingerprint = 0xb7a09eb437ca8a79,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// glennrp/libpng
|
// glennrp/libpng
|
||||||
.libpng = .{
|
.libpng = .{
|
||||||
.url = "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz",
|
.url = "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz",
|
||||||
.hash = "1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66",
|
.hash = "N-V-__8AAJrvXQCqAT8Mg9o_tk6m0yf5Fz-gCNEOKLyTSerD",
|
||||||
},
|
},
|
||||||
|
|
||||||
.zlib = .{ .path = "../zlib" },
|
.zlib = .{ .path = "../zlib" },
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ pub fn build(b: *std.Build) !void {
|
||||||
// it to the `LIBXML_{field}_ENABLED` C define where field is uppercased.
|
// it to the `LIBXML_{field}_ENABLED` C define where field is uppercased.
|
||||||
inline for (std.meta.fields(Options)) |field| {
|
inline for (std.meta.fields(Options)) |field| {
|
||||||
const opt = b.option(bool, field.name, "Configure flag") orelse
|
const opt = b.option(bool, field.name, "Configure flag") orelse
|
||||||
@as(*const bool, @ptrCast(field.default_value.?)).*;
|
@as(*const bool, @ptrCast(field.default_value_ptr.?)).*;
|
||||||
if (opt) {
|
if (opt) {
|
||||||
var nameBuf: [32]u8 = undefined;
|
var nameBuf: [32]u8 = undefined;
|
||||||
const name = std.ascii.upperString(&nameBuf, field.name);
|
const name = std.ascii.upperString(&nameBuf, field.name);
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
.{
|
.{
|
||||||
.name = "libxml2",
|
.name = .libxml2,
|
||||||
.version = "2.11.5",
|
.version = "2.11.5",
|
||||||
|
.fingerprint = 0xf268267b0b8b040d,
|
||||||
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
.libxml2 = .{
|
.libxml2 = .{
|
||||||
.url = "https://github.com/GNOME/libxml2/archive/refs/tags/v2.11.5.tar.gz",
|
.url = "https://deps.files.ghostty.org/libxml2-2.11.5.tar.gz",
|
||||||
.hash = "122032442d95c3b428ae8e526017fad881e7dc78eab4d558e9a58a80bfbd65a64f7d",
|
.hash = "N-V-__8AAG3RoQEyRC2Vw7Qoro5SYBf62IHn3HjqtNVY6aWK",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ pub fn build(b: *std.Build) !void {
|
||||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||||
defer flags.deinit();
|
defer flags.deinit();
|
||||||
lib.addCSourceFile(.{
|
lib.addCSourceFile(.{
|
||||||
.file = b.path("os/log.c"),
|
.file = b.path("os/zig_log.c"),
|
||||||
.flags = flags.items,
|
.flags = flags.items,
|
||||||
});
|
});
|
||||||
lib.addCSourceFile(.{
|
lib.addCSourceFile(.{
|
||||||
|
|
@ -38,7 +38,7 @@ pub fn build(b: *std.Build) !void {
|
||||||
module.linkFramework("Carbon", .{});
|
module.linkFramework("Carbon", .{});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
module.linkFramework("CoreFoundation", .{});
|
module.linkFramework("CoreFoundation", .{});
|
||||||
module.linkFramework("CoreGraphics", .{});
|
module.linkFramework("CoreGraphics", .{});
|
||||||
module.linkFramework("CoreText", .{});
|
module.linkFramework("CoreText", .{});
|
||||||
|
|
@ -46,7 +46,7 @@ pub fn build(b: *std.Build) !void {
|
||||||
module.linkFramework("QuartzCore", .{});
|
module.linkFramework("QuartzCore", .{});
|
||||||
|
|
||||||
if (!target.query.isNative()) {
|
if (!target.query.isNative()) {
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
try apple_sdk.addPaths(b, module);
|
try apple_sdk.addPaths(b, module);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,9 +68,9 @@ fn buildLib(b: *std.Build, module: *std.Build.Module, options: anytype) !*std.Bu
|
||||||
lib.addIncludePath(upstream.path("src"));
|
lib.addIncludePath(upstream.path("src"));
|
||||||
module.addIncludePath(upstream.path("src"));
|
module.addIncludePath(upstream.path("src"));
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
lib.addConfigHeader(b.addConfigHeader(.{
|
lib.addConfigHeader(b.addConfigHeader(.{
|
||||||
|
|
@ -88,10 +88,10 @@ fn buildLib(b: *std.Build, module: *std.Build.Module, options: anytype) !*std.Bu
|
||||||
.HAVE_SYS_TYPES_H = true,
|
.HAVE_SYS_TYPES_H = true,
|
||||||
.HAVE_UNISTD_H = true,
|
.HAVE_UNISTD_H = true,
|
||||||
.HAVE_INTTYPES_H = true,
|
.HAVE_INTTYPES_H = true,
|
||||||
.SIZEOF_INT = t.c_type_byte_size(.int),
|
.SIZEOF_INT = t.cTypeByteSize(.int),
|
||||||
.SIZEOF_LONG = t.c_type_byte_size(.long),
|
.SIZEOF_LONG = t.cTypeByteSize(.long),
|
||||||
.SIZEOF_LONG_LONG = t.c_type_byte_size(.longlong),
|
.SIZEOF_LONG_LONG = t.cTypeByteSize(.longlong),
|
||||||
.SIZEOF_VOIDP = t.ptrBitWidth() / t.c_type_bit_size(.char),
|
.SIZEOF_VOIDP = t.ptrBitWidth() / t.cTypeBitSize(.char),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "oniguruma",
|
.name = .oniguruma,
|
||||||
.version = "6.9.9",
|
.version = "6.9.9",
|
||||||
|
.fingerprint = 0xe3b537b18c5785a8,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// kkos/oniguruma
|
// kkos/oniguruma
|
||||||
.oniguruma = .{
|
.oniguruma = .{
|
||||||
.url = "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz",
|
.url = "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz",
|
||||||
.hash = "1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb",
|
.hash = "N-V-__8AAHjwMQDBXnLq3Q2QhaivE0kE2aD138vtX2Bq1g7c",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -115,12 +115,12 @@ pub const Binding = struct {
|
||||||
ptr: *const anyopaque,
|
ptr: *const anyopaque,
|
||||||
} {
|
} {
|
||||||
return switch (@typeInfo(@TypeOf(data))) {
|
return switch (@typeInfo(@TypeOf(data))) {
|
||||||
.Pointer => |ptr| switch (ptr.size) {
|
.pointer => |ptr| switch (ptr.size) {
|
||||||
.One => .{
|
.one => .{
|
||||||
.size = @sizeOf(ptr.child),
|
.size = @sizeOf(ptr.child),
|
||||||
.ptr = data,
|
.ptr = data,
|
||||||
},
|
},
|
||||||
.Slice => .{
|
.slice => .{
|
||||||
.size = @intCast(@sizeOf(ptr.child) * data.len),
|
.size = @intCast(@sizeOf(ptr.child) * data.len),
|
||||||
.ptr = data.ptr,
|
.ptr = data.ptr,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ pub fn load(getProcAddress: anytype) !c_int {
|
||||||
@TypeOf(null) => c.gladLoaderLoadGLContext(&context),
|
@TypeOf(null) => c.gladLoaderLoadGLContext(&context),
|
||||||
|
|
||||||
// try as-is. If this introduces a compiler error, then add a new case.
|
// try as-is. If this introduces a compiler error, then add a new case.
|
||||||
else => c.gladLoadGLContext(&context, getProcAddress),
|
else => c.gladLoadGLContext(&context, @ptrCast(getProcAddress)),
|
||||||
};
|
};
|
||||||
if (res == 0) return error.GLInitFailed;
|
if (res == 0) return error.GLInitFailed;
|
||||||
return res;
|
return res;
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,9 @@ pub fn build(b: *std.Build) !void {
|
||||||
lib.linkLibC();
|
lib.linkLibC();
|
||||||
lib.addIncludePath(upstream.path("include"));
|
lib.addIncludePath(upstream.path("include"));
|
||||||
lib.addIncludePath(upstream.path("src"));
|
lib.addIncludePath(upstream.path("src"));
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
try apple_sdk.addPaths(b, module);
|
try apple_sdk.addPaths(b, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "sentry",
|
.name = .sentry,
|
||||||
.version = "0.7.8",
|
.version = "0.7.8",
|
||||||
|
.fingerprint = 0xd177b4a12f6b3b79,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// getsentry/sentry-native
|
// getsentry/sentry-native
|
||||||
.sentry = .{
|
.sentry = .{
|
||||||
.url = "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz",
|
.url = "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz",
|
||||||
.hash = "1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e",
|
.hash = "N-V-__8AAPlZGwBEa-gxrcypGBZ2R8Bse4JYSfo_ul8i2jlG",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
pub fn build(b: *std.Build) !void {
|
pub fn build(b: *std.Build) !void {
|
||||||
const target = b.standardTargetOptions(.{});
|
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
const optimize = b.standardOptimizeOption(.{});
|
||||||
|
const target = b.standardTargetOptions(.{});
|
||||||
|
|
||||||
const lib = b.addStaticLibrary(.{
|
const lib = b.addStaticLibrary(.{
|
||||||
.name = "simdutf",
|
.name = "simdutf",
|
||||||
|
|
@ -12,9 +12,9 @@ pub fn build(b: *std.Build) !void {
|
||||||
lib.linkLibCpp();
|
lib.linkLibCpp();
|
||||||
lib.addIncludePath(b.path("vendor"));
|
lib.addIncludePath(b.path("vendor"));
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
.{
|
.{
|
||||||
.name = "simdutf",
|
.name = .simdutf,
|
||||||
.version = "5.2.8",
|
.version = "5.2.8",
|
||||||
|
.fingerprint = 0x7494ad640528a0d,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -42,9 +42,9 @@ fn buildSpirvCross(
|
||||||
});
|
});
|
||||||
lib.linkLibC();
|
lib.linkLibC();
|
||||||
lib.linkLibCpp();
|
lib.linkLibCpp();
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "spirv-cross",
|
.name = .spirv_cross,
|
||||||
.version = "13.1.1",
|
.version = "13.1.1",
|
||||||
|
.fingerprint = 0x7ea1d8312b06cca,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// KhronosGroup/SPIRV-Cross
|
// KhronosGroup/SPIRV-Cross
|
||||||
.spirv_cross = .{
|
.spirv_cross = .{
|
||||||
.url = "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz",
|
.url = "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz",
|
||||||
.hash = "1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da",
|
.hash = "N-V-__8AANb6pwD7O1WG6L5nvD_rNMvnSc9Cpg1ijSlTYywv",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,9 @@ pub fn build(b: *std.Build) !void {
|
||||||
lib.linkLibCpp();
|
lib.linkLibCpp();
|
||||||
lib.addIncludePath(upstream.path(""));
|
lib.addIncludePath(upstream.path(""));
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "utfcpp",
|
.name = .utfcpp,
|
||||||
.version = "4.0.5",
|
.version = "4.0.5",
|
||||||
|
.fingerprint = 0xcd99aeb2334ae11a,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// nemtrif/utfcpp
|
// nemtrif/utfcpp
|
||||||
.utfcpp = .{
|
.utfcpp = .{
|
||||||
.url = "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz",
|
.url = "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz",
|
||||||
.hash = "1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641",
|
.hash = "N-V-__8AAHffAgDU0YQmynL8K35WzkcnMUmBVQHQ0jlcKpjH",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ pub fn build(b: *std.Build) !void {
|
||||||
.link_libc = true,
|
.link_libc = true,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, module);
|
try apple_sdk.addPaths(b, module);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
.{
|
.{
|
||||||
.name = "wuffs",
|
.name = .wuffs,
|
||||||
.version = "0.0.0",
|
.version = "0.0.0",
|
||||||
|
.fingerprint = 0x67c0c059de921c4f,
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// google/wuffs
|
// google/wuffs
|
||||||
.wuffs = .{
|
.wuffs = .{
|
||||||
.url = "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz",
|
.url = "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz",
|
||||||
.hash = "122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd",
|
.hash = "N-V-__8AAAzZywE3s51XfsLbP9eyEw57ae9swYB9aGB6fCMs",
|
||||||
},
|
},
|
||||||
|
|
||||||
// make-github-pseudonymous-again/pixels
|
// make-github-pseudonymous-again/pixels
|
||||||
.pixels = .{
|
.pixels = .{
|
||||||
.url = "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz",
|
.url = "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz",
|
||||||
.hash = "12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806",
|
.hash = "N-V-__8AADYiAAB_80AWnH1AxXC0tql9thT-R-DYO1gBqTLc",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@ pub fn build(b: *std.Build) !void {
|
||||||
});
|
});
|
||||||
lib.linkLibC();
|
lib.linkLibC();
|
||||||
lib.addIncludePath(upstream.path(""));
|
lib.addIncludePath(upstream.path(""));
|
||||||
if (target.result.isDarwin()) {
|
if (target.result.os.tag.isDarwin()) {
|
||||||
const apple_sdk = @import("apple_sdk");
|
const apple_sdk = @import("apple_sdk");
|
||||||
try apple_sdk.addPaths(b, &lib.root_module);
|
try apple_sdk.addPaths(b, lib.root_module);
|
||||||
}
|
}
|
||||||
|
|
||||||
lib.installHeadersDirectory(
|
lib.installHeadersDirectory(
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
.{
|
.{
|
||||||
.name = "zlib",
|
.name = .zlib,
|
||||||
.version = "1.3.1",
|
.version = "1.3.1",
|
||||||
|
.fingerprint = 0x73887d3aef823f9e,
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
// madler/zlib
|
// madler/zlib
|
||||||
.zlib = .{
|
.zlib = .{
|
||||||
.url = "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz",
|
.url = "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz",
|
||||||
.hash = "1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb",
|
.hash = "N-V-__8AAB0eQwD-0MdOEBmz7intriBReIsIDNlukNVoNu6o",
|
||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ parts:
|
||||||
rm -rf $CRAFT_PART_SRC/*
|
rm -rf $CRAFT_PART_SRC/*
|
||||||
|
|
||||||
if [[ -n $arch ]]; then
|
if [[ -n $arch ]]; then
|
||||||
curl -LO --retry-connrefused --retry 10 https://ziglang.org/download/0.13.0/zig-linux-$arch-0.13.0.tar.xz
|
curl -LO --retry-connrefused --retry 10 https://ziglang.org/download/0.14.0/zig-linux-$arch-0.14.0.tar.xz
|
||||||
else
|
else
|
||||||
echo "Unsupported arch"
|
echo "Unsupported arch"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
||||||
|
|
@ -193,11 +193,11 @@ fn startPosix(self: *Command, arena: Allocator) !void {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn startWindows(self: *Command, arena: Allocator) !void {
|
fn startWindows(self: *Command, arena: Allocator) !void {
|
||||||
const application_w = try std.unicode.utf8ToUtf16LeWithNull(arena, self.path);
|
const application_w = try std.unicode.utf8ToUtf16LeAllocZ(arena, self.path);
|
||||||
const cwd_w = if (self.cwd) |cwd| try std.unicode.utf8ToUtf16LeWithNull(arena, cwd) else null;
|
const cwd_w = if (self.cwd) |cwd| try std.unicode.utf8ToUtf16LeAllocZ(arena, cwd) else null;
|
||||||
const command_line_w = if (self.args.len > 0) b: {
|
const command_line_w = if (self.args.len > 0) b: {
|
||||||
const command_line = try windowsCreateCommandLine(arena, self.args);
|
const command_line = try windowsCreateCommandLine(arena, self.args);
|
||||||
break :b try std.unicode.utf8ToUtf16LeWithNull(arena, command_line);
|
break :b try std.unicode.utf8ToUtf16LeAllocZ(arena, command_line);
|
||||||
} else null;
|
} else null;
|
||||||
const env_w = if (self.env) |env_map| try createWindowsEnvBlock(arena, env_map) else null;
|
const env_w = if (self.env) |env_map| try createWindowsEnvBlock(arena, env_map) else null;
|
||||||
|
|
||||||
|
|
@ -392,7 +392,7 @@ pub fn expandPath(alloc: Allocator, cmd: []const u8) !?[]u8 {
|
||||||
const PATH = switch (builtin.os.tag) {
|
const PATH = switch (builtin.os.tag) {
|
||||||
.windows => blk: {
|
.windows => blk: {
|
||||||
const win_path = std.process.getenvW(std.unicode.utf8ToUtf16LeStringLiteral("PATH")) orelse return null;
|
const win_path = std.process.getenvW(std.unicode.utf8ToUtf16LeStringLiteral("PATH")) orelse return null;
|
||||||
const path = try std.unicode.utf16leToUtf8Alloc(alloc, win_path);
|
const path = try std.unicode.utf16LeToUtf8Alloc(alloc, win_path);
|
||||||
break :blk path;
|
break :blk path;
|
||||||
},
|
},
|
||||||
else => std.posix.getenvZ("PATH") orelse return null,
|
else => std.posix.getenvZ("PATH") orelse return null,
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ const global_state = &@import("global.zig").state;
|
||||||
const oni = @import("oniguruma");
|
const oni = @import("oniguruma");
|
||||||
const crash = @import("crash/main.zig");
|
const crash = @import("crash/main.zig");
|
||||||
const unicode = @import("unicode/main.zig");
|
const unicode = @import("unicode/main.zig");
|
||||||
const renderer = @import("renderer.zig");
|
const rendererpkg = @import("renderer.zig");
|
||||||
const termio = @import("termio.zig");
|
const termio = @import("termio.zig");
|
||||||
const objc = @import("objc");
|
const objc = @import("objc");
|
||||||
const imgui = @import("imgui");
|
const imgui = @import("imgui");
|
||||||
|
|
@ -36,13 +36,13 @@ const configpkg = @import("config.zig");
|
||||||
const input = @import("input.zig");
|
const input = @import("input.zig");
|
||||||
const App = @import("App.zig");
|
const App = @import("App.zig");
|
||||||
const internal_os = @import("os/main.zig");
|
const internal_os = @import("os/main.zig");
|
||||||
const inspector = @import("inspector/main.zig");
|
const inspectorpkg = @import("inspector/main.zig");
|
||||||
const SurfaceMouse = @import("surface_mouse.zig");
|
const SurfaceMouse = @import("surface_mouse.zig");
|
||||||
|
|
||||||
const log = std.log.scoped(.surface);
|
const log = std.log.scoped(.surface);
|
||||||
|
|
||||||
// The renderer implementation to use.
|
// The renderer implementation to use.
|
||||||
const Renderer = renderer.Renderer;
|
const Renderer = rendererpkg.Renderer;
|
||||||
|
|
||||||
/// Minimum window size in cells. This is used to prevent the window from
|
/// Minimum window size in cells. This is used to prevent the window from
|
||||||
/// being resized to a size that is too small to be useful. These defaults
|
/// being resized to a size that is too small to be useful. These defaults
|
||||||
|
|
@ -70,10 +70,10 @@ font_metrics: font.Metrics,
|
||||||
renderer: Renderer,
|
renderer: Renderer,
|
||||||
|
|
||||||
/// The render state
|
/// The render state
|
||||||
renderer_state: renderer.State,
|
renderer_state: rendererpkg.State,
|
||||||
|
|
||||||
/// The renderer thread manager
|
/// The renderer thread manager
|
||||||
renderer_thread: renderer.Thread,
|
renderer_thread: rendererpkg.Thread,
|
||||||
|
|
||||||
/// The actual thread
|
/// The actual thread
|
||||||
renderer_thr: std.Thread,
|
renderer_thr: std.Thread,
|
||||||
|
|
@ -113,10 +113,10 @@ io_thread: termio.Thread,
|
||||||
io_thr: std.Thread,
|
io_thr: std.Thread,
|
||||||
|
|
||||||
/// Terminal inspector
|
/// Terminal inspector
|
||||||
inspector: ?*inspector.Inspector = null,
|
inspector: ?*inspectorpkg.Inspector = null,
|
||||||
|
|
||||||
/// All our sizing information.
|
/// All our sizing information.
|
||||||
size: renderer.Size,
|
size: rendererpkg.Size,
|
||||||
|
|
||||||
/// The configuration derived from the main config. We "derive" it so that
|
/// The configuration derived from the main config. We "derive" it so that
|
||||||
/// we don't have a shared pointer hanging around that we need to worry about
|
/// we don't have a shared pointer hanging around that we need to worry about
|
||||||
|
|
@ -339,7 +339,7 @@ const DerivedConfig = struct {
|
||||||
self.arena.deinit();
|
self.arena.deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn scaledPadding(self: *const DerivedConfig, x_dpi: f32, y_dpi: f32) renderer.Padding {
|
fn scaledPadding(self: *const DerivedConfig, x_dpi: f32, y_dpi: f32) rendererpkg.Padding {
|
||||||
const padding_top: u32 = padding_top: {
|
const padding_top: u32 = padding_top: {
|
||||||
const padding_top: f32 = @floatFromInt(self.window_padding_top);
|
const padding_top: f32 = @floatFromInt(self.window_padding_top);
|
||||||
break :padding_top @intFromFloat(@floor(padding_top * y_dpi / 72));
|
break :padding_top @intFromFloat(@floor(padding_top * y_dpi / 72));
|
||||||
|
|
@ -431,8 +431,8 @@ pub fn init(
|
||||||
);
|
);
|
||||||
|
|
||||||
// Build our size struct which has all the sizes we need.
|
// Build our size struct which has all the sizes we need.
|
||||||
const size: renderer.Size = size: {
|
const size: rendererpkg.Size = size: {
|
||||||
var size: renderer.Size = .{
|
var size: rendererpkg.Size = .{
|
||||||
.screen = screen: {
|
.screen = screen: {
|
||||||
const surface_size = try rt_surface.getSize();
|
const surface_size = try rt_surface.getSize();
|
||||||
break :screen .{
|
break :screen .{
|
||||||
|
|
@ -445,7 +445,7 @@ pub fn init(
|
||||||
.padding = .{},
|
.padding = .{},
|
||||||
};
|
};
|
||||||
|
|
||||||
const explicit: renderer.Padding = derived_config.scaledPadding(
|
const explicit: rendererpkg.Padding = derived_config.scaledPadding(
|
||||||
x_dpi,
|
x_dpi,
|
||||||
y_dpi,
|
y_dpi,
|
||||||
);
|
);
|
||||||
|
|
@ -475,7 +475,7 @@ pub fn init(
|
||||||
errdefer alloc.destroy(mutex);
|
errdefer alloc.destroy(mutex);
|
||||||
|
|
||||||
// Create the renderer thread
|
// Create the renderer thread
|
||||||
var render_thread = try renderer.Thread.init(
|
var render_thread = try rendererpkg.Thread.init(
|
||||||
alloc,
|
alloc,
|
||||||
config,
|
config,
|
||||||
rt_surface,
|
rt_surface,
|
||||||
|
|
@ -611,7 +611,7 @@ pub fn init(
|
||||||
// Start our renderer thread
|
// Start our renderer thread
|
||||||
self.renderer_thr = try std.Thread.spawn(
|
self.renderer_thr = try std.Thread.spawn(
|
||||||
.{},
|
.{},
|
||||||
renderer.Thread.threadMain,
|
rendererpkg.Thread.threadMain,
|
||||||
.{&self.renderer_thread},
|
.{&self.renderer_thread},
|
||||||
);
|
);
|
||||||
self.renderer_thr.setName("renderer") catch {};
|
self.renderer_thr.setName("renderer") catch {};
|
||||||
|
|
@ -736,9 +736,9 @@ pub fn activateInspector(self: *Surface) !void {
|
||||||
if (self.inspector != null) return;
|
if (self.inspector != null) return;
|
||||||
|
|
||||||
// Setup the inspector
|
// Setup the inspector
|
||||||
const ptr = try self.alloc.create(inspector.Inspector);
|
const ptr = try self.alloc.create(inspectorpkg.Inspector);
|
||||||
errdefer self.alloc.destroy(ptr);
|
errdefer self.alloc.destroy(ptr);
|
||||||
ptr.* = try inspector.Inspector.init(self);
|
ptr.* = try inspectorpkg.Inspector.init(self);
|
||||||
self.inspector = ptr;
|
self.inspector = ptr;
|
||||||
|
|
||||||
// Put the inspector onto the render state
|
// Put the inspector onto the render state
|
||||||
|
|
@ -1091,7 +1091,7 @@ fn mouseRefreshLinks(
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Called when our renderer health state changes.
|
/// Called when our renderer health state changes.
|
||||||
fn updateRendererHealth(self: *Surface, health: renderer.Health) void {
|
fn updateRendererHealth(self: *Surface, health: rendererpkg.Health) void {
|
||||||
log.warn("renderer health status change status={}", .{health});
|
log.warn("renderer health status change status={}", .{health});
|
||||||
_ = self.rt_app.performAction(
|
_ = self.rt_app.performAction(
|
||||||
.{ .surface = self },
|
.{ .surface = self },
|
||||||
|
|
@ -1163,7 +1163,7 @@ pub fn updateConfig(
|
||||||
|
|
||||||
// We need to store our configs in a heap-allocated pointer so that
|
// We need to store our configs in a heap-allocated pointer so that
|
||||||
// our messages aren't huge.
|
// our messages aren't huge.
|
||||||
var renderer_message = try renderer.Message.initChangeConfig(self.alloc, config);
|
var renderer_message = try rendererpkg.Message.initChangeConfig(self.alloc, config);
|
||||||
errdefer renderer_message.deinit();
|
errdefer renderer_message.deinit();
|
||||||
var termio_config_ptr = try self.alloc.create(termio.Termio.DerivedConfig);
|
var termio_config_ptr = try self.alloc.create(termio.Termio.DerivedConfig);
|
||||||
errdefer self.alloc.destroy(termio_config_ptr);
|
errdefer self.alloc.destroy(termio_config_ptr);
|
||||||
|
|
@ -1497,7 +1497,7 @@ fn setSelection(self: *Surface, sel_: ?terminal.Selection) !void {
|
||||||
|
|
||||||
/// Change the cell size for the terminal grid. This can happen as
|
/// Change the cell size for the terminal grid. This can happen as
|
||||||
/// a result of changing the font size at runtime.
|
/// a result of changing the font size at runtime.
|
||||||
fn setCellSize(self: *Surface, size: renderer.CellSize) !void {
|
fn setCellSize(self: *Surface, size: rendererpkg.CellSize) !void {
|
||||||
// Update our cell size within our size struct
|
// Update our cell size within our size struct
|
||||||
self.size.cell = size;
|
self.size.cell = size;
|
||||||
self.balancePaddingIfNeeded();
|
self.balancePaddingIfNeeded();
|
||||||
|
|
@ -1573,7 +1573,7 @@ pub fn sizeCallback(self: *Surface, size: apprt.SurfaceSize) !void {
|
||||||
crash.sentry.thread_state = self.crashThreadState();
|
crash.sentry.thread_state = self.crashThreadState();
|
||||||
defer crash.sentry.thread_state = null;
|
defer crash.sentry.thread_state = null;
|
||||||
|
|
||||||
const new_screen_size: renderer.ScreenSize = .{
|
const new_screen_size: rendererpkg.ScreenSize = .{
|
||||||
.width = size.width,
|
.width = size.width,
|
||||||
.height = size.height,
|
.height = size.height,
|
||||||
};
|
};
|
||||||
|
|
@ -1586,7 +1586,7 @@ pub fn sizeCallback(self: *Surface, size: apprt.SurfaceSize) !void {
|
||||||
try self.resize(new_screen_size);
|
try self.resize(new_screen_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn resize(self: *Surface, size: renderer.ScreenSize) !void {
|
fn resize(self: *Surface, size: rendererpkg.ScreenSize) !void {
|
||||||
// Save our screen size
|
// Save our screen size
|
||||||
self.size.screen = size;
|
self.size.screen = size;
|
||||||
self.balancePaddingIfNeeded();
|
self.balancePaddingIfNeeded();
|
||||||
|
|
@ -1667,7 +1667,7 @@ pub fn preeditCallback(self: *Surface, preedit_: ?[]const u8) !void {
|
||||||
var it = view.iterator();
|
var it = view.iterator();
|
||||||
|
|
||||||
// Allocate the codepoints slice
|
// Allocate the codepoints slice
|
||||||
const Codepoint = renderer.State.Preedit.Codepoint;
|
const Codepoint = rendererpkg.State.Preedit.Codepoint;
|
||||||
var codepoints: std.ArrayListUnmanaged(Codepoint) = .{};
|
var codepoints: std.ArrayListUnmanaged(Codepoint) = .{};
|
||||||
defer codepoints.deinit(self.alloc);
|
defer codepoints.deinit(self.alloc);
|
||||||
while (it.nextCodepoint()) |cp| {
|
while (it.nextCodepoint()) |cp| {
|
||||||
|
|
@ -1734,7 +1734,7 @@ pub fn keyCallback(
|
||||||
defer crash.sentry.thread_state = null;
|
defer crash.sentry.thread_state = null;
|
||||||
|
|
||||||
// Setup our inspector event if we have an inspector.
|
// Setup our inspector event if we have an inspector.
|
||||||
var insp_ev: ?inspector.key.Event = if (self.inspector != null) ev: {
|
var insp_ev: ?inspectorpkg.key.Event = if (self.inspector != null) ev: {
|
||||||
var copy = event;
|
var copy = event;
|
||||||
copy.utf8 = "";
|
copy.utf8 = "";
|
||||||
if (event.utf8.len > 0) copy.utf8 = try self.alloc.dupe(u8, event.utf8);
|
if (event.utf8.len > 0) copy.utf8 = try self.alloc.dupe(u8, event.utf8);
|
||||||
|
|
@ -1898,7 +1898,7 @@ pub fn keyCallback(
|
||||||
fn maybeHandleBinding(
|
fn maybeHandleBinding(
|
||||||
self: *Surface,
|
self: *Surface,
|
||||||
event: input.KeyEvent,
|
event: input.KeyEvent,
|
||||||
insp_ev: ?*inspector.key.Event,
|
insp_ev: ?*inspectorpkg.key.Event,
|
||||||
) !?InputEffect {
|
) !?InputEffect {
|
||||||
switch (event.action) {
|
switch (event.action) {
|
||||||
// Release events never trigger a binding but we need to check if
|
// Release events never trigger a binding but we need to check if
|
||||||
|
|
@ -2106,7 +2106,7 @@ fn endKeySequence(
|
||||||
fn encodeKey(
|
fn encodeKey(
|
||||||
self: *Surface,
|
self: *Surface,
|
||||||
event: input.KeyEvent,
|
event: input.KeyEvent,
|
||||||
insp_ev: ?*inspector.key.Event,
|
insp_ev: ?*inspectorpkg.key.Event,
|
||||||
) !?termio.Message.WriteReq {
|
) !?termio.Message.WriteReq {
|
||||||
// Build up our encoder. Under different modes and
|
// Build up our encoder. Under different modes and
|
||||||
// inputs there are many keybindings that result in no encoding
|
// inputs there are many keybindings that result in no encoding
|
||||||
|
|
@ -2749,7 +2749,7 @@ fn mouseReport(
|
||||||
const final: u8 = if (action == .release) 'm' else 'M';
|
const final: u8 = if (action == .release) 'm' else 'M';
|
||||||
|
|
||||||
// The position has to be adjusted to the terminal space.
|
// The position has to be adjusted to the terminal space.
|
||||||
const coord: renderer.Coordinate.Terminal = (renderer.Coordinate{
|
const coord: rendererpkg.Coordinate.Terminal = (rendererpkg.Coordinate{
|
||||||
.surface = .{
|
.surface = .{
|
||||||
.x = pos.x,
|
.x = pos.x,
|
||||||
.y = pos.y,
|
.y = pos.y,
|
||||||
|
|
@ -3819,7 +3819,7 @@ pub fn colorSchemeCallback(self: *Surface, scheme: apprt.ColorScheme) !void {
|
||||||
|
|
||||||
pub fn posToViewport(self: Surface, xpos: f64, ypos: f64) terminal.point.Coordinate {
|
pub fn posToViewport(self: Surface, xpos: f64, ypos: f64) terminal.point.Coordinate {
|
||||||
// Get our grid cell
|
// Get our grid cell
|
||||||
const coord: renderer.Coordinate = .{ .surface = .{ .x = xpos, .y = ypos } };
|
const coord: rendererpkg.Coordinate = .{ .surface = .{ .x = xpos, .y = ypos } };
|
||||||
const grid = coord.convert(.grid, self.size).grid;
|
const grid = coord.convert(.grid, self.size).grid;
|
||||||
return .{ .x = grid.x, .y = grid.y };
|
return .{ .x = grid.x, .y = grid.y };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -291,7 +291,7 @@ pub const Action = union(Key) {
|
||||||
|
|
||||||
/// Sync with: ghostty_action_u
|
/// Sync with: ghostty_action_u
|
||||||
pub const CValue = cvalue: {
|
pub const CValue = cvalue: {
|
||||||
const key_fields = @typeInfo(Key).Enum.fields;
|
const key_fields = @typeInfo(Key).@"enum".fields;
|
||||||
var union_fields: [key_fields.len]std.builtin.Type.UnionField = undefined;
|
var union_fields: [key_fields.len]std.builtin.Type.UnionField = undefined;
|
||||||
for (key_fields, 0..) |field, i| {
|
for (key_fields, 0..) |field, i| {
|
||||||
const action = @unionInit(Action, field.name, undefined);
|
const action = @unionInit(Action, field.name, undefined);
|
||||||
|
|
@ -309,7 +309,7 @@ pub const Action = union(Key) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
break :cvalue @Type(.{ .Union = .{
|
break :cvalue @Type(.{ .@"union" = .{
|
||||||
.layout = .@"extern",
|
.layout = .@"extern",
|
||||||
.tag_type = Key,
|
.tag_type = Key,
|
||||||
.fields = &union_fields,
|
.fields = &union_fields,
|
||||||
|
|
@ -325,7 +325,7 @@ pub const Action = union(Key) {
|
||||||
|
|
||||||
/// Returns the value type for the given key.
|
/// Returns the value type for the given key.
|
||||||
pub fn Value(comptime key: Key) type {
|
pub fn Value(comptime key: Key) type {
|
||||||
inline for (@typeInfo(Action).Union.fields) |field| {
|
inline for (@typeInfo(Action).@"union".fields) |field| {
|
||||||
const field_key = @field(Key, field.name);
|
const field_key = @field(Key, field.name);
|
||||||
if (field_key == key) return field.type;
|
if (field_key == key) return field.type;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -165,7 +165,7 @@ pub const App = struct {
|
||||||
// then we strip the alt modifier from the mods for translation.
|
// then we strip the alt modifier from the mods for translation.
|
||||||
const translate_mods = translate_mods: {
|
const translate_mods = translate_mods: {
|
||||||
var translate_mods = mods;
|
var translate_mods = mods;
|
||||||
if ((comptime builtin.target.isDarwin()) and translate_mods.alt) {
|
if ((comptime builtin.target.os.tag.isDarwin()) and translate_mods.alt) {
|
||||||
// Note: the keyboardLayout() function is not super cheap
|
// Note: the keyboardLayout() function is not super cheap
|
||||||
// so we only want to run it if alt is already pressed hence
|
// so we only want to run it if alt is already pressed hence
|
||||||
// the above condition.
|
// the above condition.
|
||||||
|
|
@ -184,7 +184,7 @@ pub const App = struct {
|
||||||
|
|
||||||
// We strip super on macOS because its not used for translation
|
// We strip super on macOS because its not used for translation
|
||||||
// it results in a bad translation.
|
// it results in a bad translation.
|
||||||
if (comptime builtin.target.isDarwin()) {
|
if (comptime builtin.target.os.tag.isDarwin()) {
|
||||||
translate_mods.super = false;
|
translate_mods.super = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -538,12 +538,12 @@ pub const Platform = union(PlatformTag) {
|
||||||
|
|
||||||
// If our build target for libghostty is not darwin then we do
|
// If our build target for libghostty is not darwin then we do
|
||||||
// not include macos support at all.
|
// not include macos support at all.
|
||||||
pub const MacOS = if (builtin.target.isDarwin()) struct {
|
pub const MacOS = if (builtin.target.os.tag.isDarwin()) struct {
|
||||||
/// The view to render the surface on.
|
/// The view to render the surface on.
|
||||||
nsview: objc.Object,
|
nsview: objc.Object,
|
||||||
} else void;
|
} else void;
|
||||||
|
|
||||||
pub const IOS = if (builtin.target.isDarwin()) struct {
|
pub const IOS = if (builtin.target.os.tag.isDarwin()) struct {
|
||||||
/// The view to render the surface on.
|
/// The view to render the surface on.
|
||||||
uiview: objc.Object,
|
uiview: objc.Object,
|
||||||
} else void;
|
} else void;
|
||||||
|
|
@ -1025,7 +1025,7 @@ pub const Surface = struct {
|
||||||
var env = try internal_os.getEnvMap(alloc);
|
var env = try internal_os.getEnvMap(alloc);
|
||||||
errdefer env.deinit();
|
errdefer env.deinit();
|
||||||
|
|
||||||
if (comptime builtin.target.isDarwin()) {
|
if (comptime builtin.target.os.tag.isDarwin()) {
|
||||||
if (env.get("__XCODE_BUILT_PRODUCTS_DIR_PATHS") != null) {
|
if (env.get("__XCODE_BUILT_PRODUCTS_DIR_PATHS") != null) {
|
||||||
env.remove("__XCODE_BUILT_PRODUCTS_DIR_PATHS");
|
env.remove("__XCODE_BUILT_PRODUCTS_DIR_PATHS");
|
||||||
env.remove("__XPC_DYLD_LIBRARY_PATH");
|
env.remove("__XPC_DYLD_LIBRARY_PATH");
|
||||||
|
|
@ -1078,7 +1078,7 @@ pub const Inspector = struct {
|
||||||
|
|
||||||
pub fn deinit(self: Backend) void {
|
pub fn deinit(self: Backend) void {
|
||||||
switch (self) {
|
switch (self) {
|
||||||
.metal => if (builtin.target.isDarwin()) cimgui.ImGui_ImplMetal_Shutdown(),
|
.metal => if (builtin.target.os.tag.isDarwin()) cimgui.ImGui_ImplMetal_Shutdown(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -1351,7 +1351,7 @@ pub const CAPI = struct {
|
||||||
// Reference the conditional exports based on target platform
|
// Reference the conditional exports based on target platform
|
||||||
// so they're included in the C API.
|
// so they're included in the C API.
|
||||||
comptime {
|
comptime {
|
||||||
if (builtin.target.isDarwin()) {
|
if (builtin.target.os.tag.isDarwin()) {
|
||||||
_ = Darwin;
|
_ = Darwin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,14 @@ const Config = @import("../config.zig").Config;
|
||||||
|
|
||||||
// Get native API access on certain platforms so we can do more customization.
|
// Get native API access on certain platforms so we can do more customization.
|
||||||
const glfwNative = glfw.Native(.{
|
const glfwNative = glfw.Native(.{
|
||||||
.cocoa = builtin.target.isDarwin(),
|
.cocoa = builtin.target.os.tag.isDarwin(),
|
||||||
.x11 = builtin.os.tag == .linux,
|
.x11 = builtin.os.tag == .linux,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// True if darwin-specific logic is enabled
|
||||||
|
const darwin_enabled = builtin.target.os.tag.isDarwin() and
|
||||||
|
build_config.artifact == .exe;
|
||||||
|
|
||||||
const log = std.log.scoped(.glfw);
|
const log = std.log.scoped(.glfw);
|
||||||
|
|
||||||
pub const App = struct {
|
pub const App = struct {
|
||||||
|
|
@ -40,12 +44,12 @@ pub const App = struct {
|
||||||
quit: bool = false,
|
quit: bool = false,
|
||||||
|
|
||||||
/// Mac-specific state.
|
/// Mac-specific state.
|
||||||
darwin: if (Darwin.enabled) Darwin else void,
|
darwin: if (darwin_enabled) Darwin else void,
|
||||||
|
|
||||||
pub const Options = struct {};
|
pub const Options = struct {};
|
||||||
|
|
||||||
pub fn init(core_app: *CoreApp, _: Options) !App {
|
pub fn init(core_app: *CoreApp, _: Options) !App {
|
||||||
if (comptime builtin.target.isDarwin()) {
|
if (comptime builtin.target.os.tag.isDarwin()) {
|
||||||
log.warn("WARNING WARNING WARNING: GLFW ON MAC HAS BUGS.", .{});
|
log.warn("WARNING WARNING WARNING: GLFW ON MAC HAS BUGS.", .{});
|
||||||
log.warn("You should use the AppKit-based app instead. The official download", .{});
|
log.warn("You should use the AppKit-based app instead. The official download", .{});
|
||||||
log.warn("is properly built and available from GitHub. If you're building from", .{});
|
log.warn("is properly built and available from GitHub. If you're building from", .{});
|
||||||
|
|
@ -66,8 +70,8 @@ pub const App = struct {
|
||||||
glfw.setErrorCallback(glfwErrorCallback);
|
glfw.setErrorCallback(glfwErrorCallback);
|
||||||
|
|
||||||
// Mac-specific state. For example, on Mac we enable window tabbing.
|
// Mac-specific state. For example, on Mac we enable window tabbing.
|
||||||
var darwin = if (Darwin.enabled) try Darwin.init() else {};
|
var darwin = if (darwin_enabled) try Darwin.init() else {};
|
||||||
errdefer if (Darwin.enabled) darwin.deinit();
|
errdefer if (darwin_enabled) darwin.deinit();
|
||||||
|
|
||||||
// Load our configuration
|
// Load our configuration
|
||||||
var config = try Config.load(core_app.alloc);
|
var config = try Config.load(core_app.alloc);
|
||||||
|
|
@ -338,7 +342,7 @@ pub const App = struct {
|
||||||
|
|
||||||
/// Create a new tab in the parent surface.
|
/// Create a new tab in the parent surface.
|
||||||
fn newTab(self: *App, parent_: ?*CoreSurface) !void {
|
fn newTab(self: *App, parent_: ?*CoreSurface) !void {
|
||||||
if (!Darwin.enabled) {
|
if (comptime !darwin_enabled) {
|
||||||
log.warn("tabbing is not supported on this platform", .{});
|
log.warn("tabbing is not supported on this platform", .{});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -439,8 +443,6 @@ pub const App = struct {
|
||||||
/// Mac and the artifact is a standalone exe. We don't target libs because
|
/// Mac and the artifact is a standalone exe. We don't target libs because
|
||||||
/// the embedded API doesn't do windowing.
|
/// the embedded API doesn't do windowing.
|
||||||
const Darwin = struct {
|
const Darwin = struct {
|
||||||
const enabled = builtin.target.isDarwin() and build_config.artifact == .exe;
|
|
||||||
|
|
||||||
tabbing_id: *macos.foundation.String,
|
tabbing_id: *macos.foundation.String,
|
||||||
|
|
||||||
pub fn init() !Darwin {
|
pub fn init() !Darwin {
|
||||||
|
|
@ -554,7 +556,7 @@ pub const Surface = struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// On Mac, enable window tabbing
|
// On Mac, enable window tabbing
|
||||||
if (App.Darwin.enabled) {
|
if (comptime darwin_enabled) {
|
||||||
const NSWindowTabbingMode = enum(usize) { automatic = 0, preferred = 1, disallowed = 2 };
|
const NSWindowTabbingMode = enum(usize) { automatic = 0, preferred = 1, disallowed = 2 };
|
||||||
const nswindow = objc.Object.fromId(glfwNative.getCocoaWindow(win).?);
|
const nswindow = objc.Object.fromId(glfwNative.getCocoaWindow(win).?);
|
||||||
|
|
||||||
|
|
@ -630,7 +632,7 @@ pub const Surface = struct {
|
||||||
// Clean up our core surface so that all the rendering and IO stop.
|
// Clean up our core surface so that all the rendering and IO stop.
|
||||||
self.core_surface.deinit();
|
self.core_surface.deinit();
|
||||||
|
|
||||||
if (App.Darwin.enabled) {
|
if (comptime darwin_enabled) {
|
||||||
const nswindow = objc.Object.fromId(glfwNative.getCocoaWindow(self.window).?);
|
const nswindow = objc.Object.fromId(glfwNative.getCocoaWindow(self.window).?);
|
||||||
const tabgroup = nswindow.getProperty(objc.Object, "tabGroup");
|
const tabgroup = nswindow.getProperty(objc.Object, "tabGroup");
|
||||||
const windows = tabgroup.getProperty(objc.Object, "windows");
|
const windows = tabgroup.getProperty(objc.Object, "windows");
|
||||||
|
|
@ -767,7 +769,7 @@ pub const Surface = struct {
|
||||||
|
|
||||||
/// Set the shape of the cursor.
|
/// Set the shape of the cursor.
|
||||||
fn setMouseShape(self: *Surface, shape: terminal.MouseShape) !void {
|
fn setMouseShape(self: *Surface, shape: terminal.MouseShape) !void {
|
||||||
if ((comptime builtin.target.isDarwin()) and
|
if ((comptime builtin.target.os.tag.isDarwin()) and
|
||||||
!internal_os.macos.isAtLeastVersion(13, 0, 0))
|
!internal_os.macos.isAtLeastVersion(13, 0, 0))
|
||||||
{
|
{
|
||||||
// We only set our cursor if we're NOT on Mac, or if we are then the
|
// We only set our cursor if we're NOT on Mac, or if we are then the
|
||||||
|
|
@ -925,7 +927,7 @@ pub const Surface = struct {
|
||||||
|
|
||||||
// On macOS we need to also disable some modifiers because
|
// On macOS we need to also disable some modifiers because
|
||||||
// alt+key consumes the alt.
|
// alt+key consumes the alt.
|
||||||
if (comptime builtin.target.isDarwin()) {
|
if (comptime builtin.target.os.tag.isDarwin()) {
|
||||||
// For GLFW, we say we always consume alt because
|
// For GLFW, we say we always consume alt because
|
||||||
// GLFW doesn't have a way to disable the alt key.
|
// GLFW doesn't have a way to disable the alt key.
|
||||||
key_event.consumed_mods.alt = true;
|
key_event.consumed_mods.alt = true;
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ const c = @import("c.zig").c;
|
||||||
const version = @import("version.zig");
|
const version = @import("version.zig");
|
||||||
const inspector = @import("inspector.zig");
|
const inspector = @import("inspector.zig");
|
||||||
const key = @import("key.zig");
|
const key = @import("key.zig");
|
||||||
const winproto = @import("winproto.zig");
|
const winprotopkg = @import("winproto.zig");
|
||||||
const testing = std.testing;
|
const testing = std.testing;
|
||||||
const adwaita = @import("adwaita.zig");
|
const adwaita = @import("adwaita.zig");
|
||||||
|
|
||||||
|
|
@ -58,7 +58,7 @@ app: *c.GtkApplication,
|
||||||
ctx: *c.GMainContext,
|
ctx: *c.GMainContext,
|
||||||
|
|
||||||
/// State and logic for the underlying windowing protocol.
|
/// State and logic for the underlying windowing protocol.
|
||||||
winproto: winproto.App,
|
winproto: winprotopkg.App,
|
||||||
|
|
||||||
/// True if the app was launched with single instance mode.
|
/// True if the app was launched with single instance mode.
|
||||||
single_instance: bool,
|
single_instance: bool,
|
||||||
|
|
@ -226,7 +226,7 @@ pub fn init(core_app: *CoreApp, opts: Options) !App {
|
||||||
var fmt = std.io.fixedBufferStream(&buf);
|
var fmt = std.io.fixedBufferStream(&buf);
|
||||||
const writer = fmt.writer();
|
const writer = fmt.writer();
|
||||||
var first: bool = true;
|
var first: bool = true;
|
||||||
inline for (@typeInfo(@TypeOf(gdk_debug)).Struct.fields) |field| {
|
inline for (@typeInfo(@TypeOf(gdk_debug)).@"struct".fields) |field| {
|
||||||
if (@field(gdk_debug, field.name)) {
|
if (@field(gdk_debug, field.name)) {
|
||||||
if (!first) try writer.writeAll(",");
|
if (!first) try writer.writeAll(",");
|
||||||
try writer.writeAll(field.name);
|
try writer.writeAll(field.name);
|
||||||
|
|
@ -244,7 +244,7 @@ pub fn init(core_app: *CoreApp, opts: Options) !App {
|
||||||
var fmt = std.io.fixedBufferStream(&buf);
|
var fmt = std.io.fixedBufferStream(&buf);
|
||||||
const writer = fmt.writer();
|
const writer = fmt.writer();
|
||||||
var first: bool = true;
|
var first: bool = true;
|
||||||
inline for (@typeInfo(@TypeOf(gdk_disable)).Struct.fields) |field| {
|
inline for (@typeInfo(@TypeOf(gdk_disable)).@"struct".fields) |field| {
|
||||||
if (@field(gdk_disable, field.name)) {
|
if (@field(gdk_disable, field.name)) {
|
||||||
if (!first) try writer.writeAll(",");
|
if (!first) try writer.writeAll(",");
|
||||||
try writer.writeAll(field.name);
|
try writer.writeAll(field.name);
|
||||||
|
|
@ -401,7 +401,7 @@ pub fn init(core_app: *CoreApp, opts: Options) !App {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup our windowing protocol logic
|
// Setup our windowing protocol logic
|
||||||
var winproto_app = try winproto.App.init(
|
var winproto_app = try winprotopkg.App.init(
|
||||||
core_app.alloc,
|
core_app.alloc,
|
||||||
display,
|
display,
|
||||||
app_id,
|
app_id,
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ const ClipboardConfirmationWindow = @import("ClipboardConfirmationWindow.zig");
|
||||||
const ResizeOverlay = @import("ResizeOverlay.zig");
|
const ResizeOverlay = @import("ResizeOverlay.zig");
|
||||||
const URLWidget = @import("URLWidget.zig");
|
const URLWidget = @import("URLWidget.zig");
|
||||||
const CloseDialog = @import("CloseDialog.zig");
|
const CloseDialog = @import("CloseDialog.zig");
|
||||||
const inspector = @import("inspector.zig");
|
const inspectorpkg = @import("inspector.zig");
|
||||||
const gtk_key = @import("key.zig");
|
const gtk_key = @import("key.zig");
|
||||||
const c = @import("c.zig").c;
|
const c = @import("c.zig").c;
|
||||||
const Builder = @import("Builder.zig");
|
const Builder = @import("Builder.zig");
|
||||||
|
|
@ -290,7 +290,7 @@ size: apprt.SurfaceSize,
|
||||||
cursor_pos: apprt.CursorPos,
|
cursor_pos: apprt.CursorPos,
|
||||||
|
|
||||||
/// Inspector state.
|
/// Inspector state.
|
||||||
inspector: ?*inspector.Inspector = null,
|
inspector: ?*inspectorpkg.Inspector = null,
|
||||||
|
|
||||||
/// Key input states. See gtkKeyPressed for detailed descriptions.
|
/// Key input states. See gtkKeyPressed for detailed descriptions.
|
||||||
in_keyevent: IMKeyEvent = .false,
|
in_keyevent: IMKeyEvent = .false,
|
||||||
|
|
@ -703,7 +703,7 @@ pub fn controlInspector(
|
||||||
|
|
||||||
// If we already have an inspector, we don't need to show anything.
|
// If we already have an inspector, we don't need to show anything.
|
||||||
if (self.inspector != null) return;
|
if (self.inspector != null) return;
|
||||||
self.inspector = inspector.Inspector.create(
|
self.inspector = inspectorpkg.Inspector.create(
|
||||||
self,
|
self,
|
||||||
.{ .window = {} },
|
.{ .window = {} },
|
||||||
) catch |err| {
|
) catch |err| {
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ const TabView = @import("TabView.zig");
|
||||||
const HeaderBar = @import("headerbar.zig");
|
const HeaderBar = @import("headerbar.zig");
|
||||||
const CloseDialog = @import("CloseDialog.zig");
|
const CloseDialog = @import("CloseDialog.zig");
|
||||||
const version = @import("version.zig");
|
const version = @import("version.zig");
|
||||||
const winproto = @import("winproto.zig");
|
const winprotopkg = @import("winproto.zig");
|
||||||
|
|
||||||
const log = std.log.scoped(.gtk);
|
const log = std.log.scoped(.gtk);
|
||||||
|
|
||||||
|
|
@ -69,7 +69,7 @@ toast_overlay: *c.GtkWidget,
|
||||||
adw_tab_overview_focus_timer: ?c.guint = null,
|
adw_tab_overview_focus_timer: ?c.guint = null,
|
||||||
|
|
||||||
/// State and logic for windowing protocol for a window.
|
/// State and logic for windowing protocol for a window.
|
||||||
winproto: winproto.Window,
|
winproto: winprotopkg.Window,
|
||||||
|
|
||||||
pub const DerivedConfig = struct {
|
pub const DerivedConfig = struct {
|
||||||
background_opacity: f64,
|
background_opacity: f64,
|
||||||
|
|
@ -693,7 +693,7 @@ fn gtkRealize(_: *c.GtkWindow, ud: ?*anyopaque) callconv(.C) bool {
|
||||||
const self = userdataSelf(ud.?);
|
const self = userdataSelf(ud.?);
|
||||||
|
|
||||||
// Initialize our window protocol logic
|
// Initialize our window protocol logic
|
||||||
if (winproto.Window.init(
|
if (winprotopkg.Window.init(
|
||||||
self.app.core_app.alloc,
|
self.app.core_app.alloc,
|
||||||
&self.app.winproto,
|
&self.app.winproto,
|
||||||
self,
|
self,
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ pub const App = union(Protocol) {
|
||||||
app_id: [:0]const u8,
|
app_id: [:0]const u8,
|
||||||
config: *const Config,
|
config: *const Config,
|
||||||
) !App {
|
) !App {
|
||||||
inline for (@typeInfo(App).Union.fields) |field| {
|
inline for (@typeInfo(App).@"union".fields) |field| {
|
||||||
if (try field.type.init(
|
if (try field.type.init(
|
||||||
alloc,
|
alloc,
|
||||||
gdk_display,
|
gdk_display,
|
||||||
|
|
@ -96,7 +96,7 @@ pub const Window = union(Protocol) {
|
||||||
) !Window {
|
) !Window {
|
||||||
return switch (app.*) {
|
return switch (app.*) {
|
||||||
inline else => |*v, tag| {
|
inline else => |*v, tag| {
|
||||||
inline for (@typeInfo(Window).Union.fields) |field| {
|
inline for (@typeInfo(Window).@"union".fields) |field| {
|
||||||
if (comptime std.mem.eql(
|
if (comptime std.mem.eql(
|
||||||
u8,
|
u8,
|
||||||
field.name,
|
field.name,
|
||||||
|
|
|
||||||
|
|
@ -342,7 +342,7 @@ pub const Window = struct {
|
||||||
&actual_format_return,
|
&actual_format_return,
|
||||||
&nitems_return,
|
&nitems_return,
|
||||||
&bytes_after_return,
|
&bytes_after_return,
|
||||||
&prop_return,
|
@ptrCast(&prop_return),
|
||||||
);
|
);
|
||||||
if (code != c.Success) return error.RequestFailed;
|
if (code != c.Success) return error.RequestFailed;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ const builtin = @import("builtin");
|
||||||
|
|
||||||
const apprt = @import("../apprt.zig");
|
const apprt = @import("../apprt.zig");
|
||||||
const font = @import("../font/main.zig");
|
const font = @import("../font/main.zig");
|
||||||
const renderer = @import("../renderer.zig");
|
const rendererpkg = @import("../renderer.zig");
|
||||||
const Command = @import("../Command.zig");
|
const Command = @import("../Command.zig");
|
||||||
const WasmTarget = @import("../os/wasm/target.zig").Target;
|
const WasmTarget = @import("../os/wasm/target.zig").Target;
|
||||||
|
|
||||||
|
|
@ -28,7 +28,7 @@ wasm_target: WasmTarget,
|
||||||
|
|
||||||
/// Comptime interfaces
|
/// Comptime interfaces
|
||||||
app_runtime: apprt.Runtime = .none,
|
app_runtime: apprt.Runtime = .none,
|
||||||
renderer: renderer.Impl = .opengl,
|
renderer: rendererpkg.Impl = .opengl,
|
||||||
font_backend: font.Backend = .freetype,
|
font_backend: font.Backend = .freetype,
|
||||||
|
|
||||||
/// Feature flags
|
/// Feature flags
|
||||||
|
|
@ -69,7 +69,9 @@ pub fn init(b: *std.Build) !Config {
|
||||||
|
|
||||||
// If we're building for macOS and we're on macOS, we need to
|
// If we're building for macOS and we're on macOS, we need to
|
||||||
// use a generic target to workaround compilation issues.
|
// use a generic target to workaround compilation issues.
|
||||||
if (result.result.os.tag == .macos and builtin.target.isDarwin()) {
|
if (result.result.os.tag == .macos and
|
||||||
|
builtin.target.os.tag.isDarwin())
|
||||||
|
{
|
||||||
result = genericMacOSTarget(b, null);
|
result = genericMacOSTarget(b, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -122,10 +124,10 @@ pub fn init(b: *std.Build) !Config {
|
||||||
) orelse apprt.Runtime.default(target.result);
|
) orelse apprt.Runtime.default(target.result);
|
||||||
|
|
||||||
config.renderer = b.option(
|
config.renderer = b.option(
|
||||||
renderer.Impl,
|
rendererpkg.Impl,
|
||||||
"renderer",
|
"renderer",
|
||||||
"The app runtime to use. Not all values supported on all platforms.",
|
"The app runtime to use. Not all values supported on all platforms.",
|
||||||
) orelse renderer.Impl.default(target.result, wasm_target);
|
) orelse rendererpkg.Impl.default(target.result, wasm_target);
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
// Feature Flags
|
// Feature Flags
|
||||||
|
|
@ -331,7 +333,7 @@ pub fn init(b: *std.Build) !Config {
|
||||||
bool,
|
bool,
|
||||||
"emit-xcframework",
|
"emit-xcframework",
|
||||||
"Build and install the xcframework for the macOS library.",
|
"Build and install the xcframework for the macOS library.",
|
||||||
) orelse builtin.target.isDarwin() and
|
) orelse builtin.target.os.tag.isDarwin() and
|
||||||
target.result.os.tag == .macos and
|
target.result.os.tag == .macos and
|
||||||
config.app_runtime == .none and
|
config.app_runtime == .none and
|
||||||
(!config.emit_bench and
|
(!config.emit_bench and
|
||||||
|
|
@ -366,7 +368,7 @@ pub fn init(b: *std.Build) !Config {
|
||||||
.{
|
.{
|
||||||
// If we're not on darwin we want to use whatever the
|
// If we're not on darwin we want to use whatever the
|
||||||
// default is via the system package mode
|
// default is via the system package mode
|
||||||
.default = if (target.result.isDarwin()) false else null,
|
.default = if (target.result.os.tag.isDarwin()) false else null,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -395,7 +397,7 @@ pub fn addOptions(self: *const Config, step: *std.Build.Step.Options) !void {
|
||||||
step.addOption(bool, "sentry", self.sentry);
|
step.addOption(bool, "sentry", self.sentry);
|
||||||
step.addOption(apprt.Runtime, "app_runtime", self.app_runtime);
|
step.addOption(apprt.Runtime, "app_runtime", self.app_runtime);
|
||||||
step.addOption(font.Backend, "font_backend", self.font_backend);
|
step.addOption(font.Backend, "font_backend", self.font_backend);
|
||||||
step.addOption(renderer.Impl, "renderer", self.renderer);
|
step.addOption(rendererpkg.Impl, "renderer", self.renderer);
|
||||||
step.addOption(ExeEntrypoint, "exe_entrypoint", self.exe_entrypoint);
|
step.addOption(ExeEntrypoint, "exe_entrypoint", self.exe_entrypoint);
|
||||||
step.addOption(WasmTarget, "wasm_target", self.wasm_target);
|
step.addOption(WasmTarget, "wasm_target", self.wasm_target);
|
||||||
step.addOption(bool, "wasm_shared", self.wasm_shared);
|
step.addOption(bool, "wasm_shared", self.wasm_shared);
|
||||||
|
|
@ -436,7 +438,7 @@ pub fn fromOptions() Config {
|
||||||
.flatpak = options.flatpak,
|
.flatpak = options.flatpak,
|
||||||
.app_runtime = std.meta.stringToEnum(apprt.Runtime, @tagName(options.app_runtime)).?,
|
.app_runtime = std.meta.stringToEnum(apprt.Runtime, @tagName(options.app_runtime)).?,
|
||||||
.font_backend = std.meta.stringToEnum(font.Backend, @tagName(options.font_backend)).?,
|
.font_backend = std.meta.stringToEnum(font.Backend, @tagName(options.font_backend)).?,
|
||||||
.renderer = std.meta.stringToEnum(renderer.Impl, @tagName(options.renderer)).?,
|
.renderer = std.meta.stringToEnum(rendererpkg.Impl, @tagName(options.renderer)).?,
|
||||||
.exe_entrypoint = std.meta.stringToEnum(ExeEntrypoint, @tagName(options.exe_entrypoint)).?,
|
.exe_entrypoint = std.meta.stringToEnum(ExeEntrypoint, @tagName(options.exe_entrypoint)).?,
|
||||||
.wasm_target = std.meta.stringToEnum(WasmTarget, @tagName(options.wasm_target)).?,
|
.wasm_target = std.meta.stringToEnum(WasmTarget, @tagName(options.wasm_target)).?,
|
||||||
.wasm_shared = options.wasm_shared,
|
.wasm_shared = options.wasm_shared,
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ pub fn init(
|
||||||
const generate_markdown = b.addExecutable(.{
|
const generate_markdown = b.addExecutable(.{
|
||||||
.name = "mdgen_" ++ manpage.name ++ "_" ++ manpage.section,
|
.name = "mdgen_" ++ manpage.name ++ "_" ++ manpage.section,
|
||||||
.root_source_file = b.path("src/main.zig"),
|
.root_source_file = b.path("src/main.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
deps.help_strings.addImport(generate_markdown);
|
deps.help_strings.addImport(generate_markdown);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ fn checkNixShell(exe: *std.Build.Step.Compile, cfg: *const Config) !void {
|
||||||
\\
|
\\
|
||||||
\\ nix develop -c zig build
|
\\ nix develop -c zig build
|
||||||
\\
|
\\
|
||||||
++
|
++
|
||||||
"\x1b[0m",
|
"\x1b[0m",
|
||||||
.{},
|
.{},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ pub fn init(b: *std.Build) !GhosttyFrameData {
|
||||||
const exe = b.addExecutable(.{
|
const exe = b.addExecutable(.{
|
||||||
.name = "framegen",
|
.name = "framegen",
|
||||||
.root_source_file = b.path("src/build/framegen/main.zig"),
|
.root_source_file = b.path("src/build/framegen/main.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
|
|
||||||
const run = b.addRunArtifact(exe);
|
const run = b.addRunArtifact(exe);
|
||||||
|
|
|
||||||
|
|
@ -97,8 +97,8 @@ fn createUpdateStep(b: *std.Build) !*std.Build.Step {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const wf = b.addWriteFiles();
|
const usf = b.addUpdateSourceFiles();
|
||||||
wf.addCopyFileToSource(
|
usf.addCopyFileToSource(
|
||||||
xgettext.captureStdOut(),
|
xgettext.captureStdOut(),
|
||||||
"po/" ++ domain ++ ".pot",
|
"po/" ++ domain ++ ".pot",
|
||||||
);
|
);
|
||||||
|
|
@ -107,8 +107,8 @@ fn createUpdateStep(b: *std.Build) !*std.Build.Step {
|
||||||
const msgmerge = b.addSystemCommand(&.{ "msgmerge", "-q" });
|
const msgmerge = b.addSystemCommand(&.{ "msgmerge", "-q" });
|
||||||
msgmerge.addFileArg(b.path("po/" ++ locale ++ ".po"));
|
msgmerge.addFileArg(b.path("po/" ++ locale ++ ".po"));
|
||||||
msgmerge.addFileArg(xgettext.captureStdOut());
|
msgmerge.addFileArg(xgettext.captureStdOut());
|
||||||
wf.addCopyFileToSource(msgmerge.captureStdOut(), "po/" ++ locale ++ ".po");
|
usf.addCopyFileToSource(msgmerge.captureStdOut(), "po/" ++ locale ++ ".po");
|
||||||
}
|
}
|
||||||
|
|
||||||
return &wf.step;
|
return &usf.step;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,15 +22,19 @@ pub fn initStatic(
|
||||||
.target = deps.config.target,
|
.target = deps.config.target,
|
||||||
.optimize = deps.config.optimize,
|
.optimize = deps.config.optimize,
|
||||||
});
|
});
|
||||||
lib.bundle_compiler_rt = true;
|
|
||||||
lib.linkLibC();
|
lib.linkLibC();
|
||||||
|
|
||||||
|
// These must be bundled since we're compiling into a static lib.
|
||||||
|
// Otherwise, you get undefined symbol errors.
|
||||||
|
lib.bundle_compiler_rt = true;
|
||||||
|
lib.bundle_ubsan_rt = true;
|
||||||
|
|
||||||
// Add our dependencies. Get the list of all static deps so we can
|
// Add our dependencies. Get the list of all static deps so we can
|
||||||
// build a combined archive if necessary.
|
// build a combined archive if necessary.
|
||||||
var lib_list = try deps.add(lib);
|
var lib_list = try deps.add(lib);
|
||||||
try lib_list.append(lib.getEmittedBin());
|
try lib_list.append(lib.getEmittedBin());
|
||||||
|
|
||||||
if (!deps.config.target.result.isDarwin()) return .{
|
if (!deps.config.target.result.os.tag.isDarwin()) return .{
|
||||||
.step = &lib.step,
|
.step = &lib.step,
|
||||||
.output = lib.getEmittedBin(),
|
.output = lib.getEmittedBin(),
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ pub fn init(
|
||||||
const webgen_config = b.addExecutable(.{
|
const webgen_config = b.addExecutable(.{
|
||||||
.name = "webgen_config",
|
.name = "webgen_config",
|
||||||
.root_source_file = b.path("src/main.zig"),
|
.root_source_file = b.path("src/main.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
deps.help_strings.addImport(webgen_config);
|
deps.help_strings.addImport(webgen_config);
|
||||||
|
|
||||||
|
|
@ -48,7 +48,7 @@ pub fn init(
|
||||||
const webgen_actions = b.addExecutable(.{
|
const webgen_actions = b.addExecutable(.{
|
||||||
.name = "webgen_actions",
|
.name = "webgen_actions",
|
||||||
.root_source_file = b.path("src/main.zig"),
|
.root_source_file = b.path("src/main.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
deps.help_strings.addImport(webgen_actions);
|
deps.help_strings.addImport(webgen_actions);
|
||||||
|
|
||||||
|
|
@ -77,7 +77,7 @@ pub fn init(
|
||||||
const webgen_commands = b.addExecutable(.{
|
const webgen_commands = b.addExecutable(.{
|
||||||
.name = "webgen_commands",
|
.name = "webgen_commands",
|
||||||
.root_source_file = b.path("src/main.zig"),
|
.root_source_file = b.path("src/main.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
deps.help_strings.addImport(webgen_commands);
|
deps.help_strings.addImport(webgen_commands);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,13 @@ pub fn init(b: *std.Build, deps: *const SharedDeps) !GhosttyXCFramework {
|
||||||
.os_tag = .ios,
|
.os_tag = .ios,
|
||||||
.os_version_min = Config.osVersionMin(.ios),
|
.os_version_min = Config.osVersionMin(.ios),
|
||||||
.abi = .simulator,
|
.abi = .simulator,
|
||||||
|
|
||||||
|
// We force the Apple CPU model because the simulator
|
||||||
|
// doesn't support the generic CPU model as of Zig 0.14 due
|
||||||
|
// to missing "altnzcv" instructions, which is false. This
|
||||||
|
// surely can't be right but we can fix this if/when we get
|
||||||
|
// back to running simulator builds.
|
||||||
|
.cpu_model = .{ .explicit = &std.Target.aarch64.cpu.apple_a17 },
|
||||||
}),
|
}),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ pub fn init(b: *std.Build, cfg: *const Config) !HelpStrings {
|
||||||
const exe = b.addExecutable(.{
|
const exe = b.addExecutable(.{
|
||||||
.name = "helpgen",
|
.name = "helpgen",
|
||||||
.root_source_file = b.path("src/helpgen.zig"),
|
.root_source_file = b.path("src/helpgen.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
|
|
||||||
const help_config = config: {
|
const help_config = config: {
|
||||||
|
|
|
||||||
|
|
@ -277,7 +277,10 @@ pub fn add(
|
||||||
// on x86_64.
|
// on x86_64.
|
||||||
if (step.rootModuleTarget().os.tag == .linux) {
|
if (step.rootModuleTarget().os.tag == .linux) {
|
||||||
const triple = try step.rootModuleTarget().linuxTriple(b.allocator);
|
const triple = try step.rootModuleTarget().linuxTriple(b.allocator);
|
||||||
step.addLibraryPath(.{ .cwd_relative = b.fmt("/usr/lib/{s}", .{triple}) });
|
const path = b.fmt("/usr/lib/{s}", .{triple});
|
||||||
|
if (std.fs.accessAbsolute(path, .{})) {
|
||||||
|
step.addLibraryPath(.{ .cwd_relative = path });
|
||||||
|
} else |_| {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// C files
|
// C files
|
||||||
|
|
@ -320,8 +323,8 @@ pub fn add(
|
||||||
|
|
||||||
// We always require the system SDK so that our system headers are available.
|
// We always require the system SDK so that our system headers are available.
|
||||||
// This makes things like `os/log.h` available for cross-compiling.
|
// This makes things like `os/log.h` available for cross-compiling.
|
||||||
if (step.rootModuleTarget().isDarwin()) {
|
if (step.rootModuleTarget().os.tag.isDarwin()) {
|
||||||
try @import("apple_sdk").addPaths(b, &step.root_module);
|
try @import("apple_sdk").addPaths(b, step.root_module);
|
||||||
|
|
||||||
const metallib = self.metallib.?;
|
const metallib = self.metallib.?;
|
||||||
metallib.output.addStepDependencies(&step.step);
|
metallib.output.addStepDependencies(&step.step);
|
||||||
|
|
@ -363,7 +366,7 @@ pub fn add(
|
||||||
}).module("zf"));
|
}).module("zf"));
|
||||||
|
|
||||||
// Mac Stuff
|
// Mac Stuff
|
||||||
if (step.rootModuleTarget().isDarwin()) {
|
if (step.rootModuleTarget().os.tag.isDarwin()) {
|
||||||
const objc_dep = b.dependency("zig_objc", .{
|
const objc_dep = b.dependency("zig_objc", .{
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
|
|
@ -470,7 +473,7 @@ pub fn add(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.config.wayland) {
|
if (self.config.wayland) {
|
||||||
const scanner = Scanner.create(b.dependency("zig_wayland", .{}), .{
|
const scanner = Scanner.create(b.dependency("zig_wayland", .{}).builder, .{
|
||||||
.wayland_xml = b.dependency("wayland", .{}).path("protocol/wayland.xml"),
|
.wayland_xml = b.dependency("wayland", .{}).path("protocol/wayland.xml"),
|
||||||
.wayland_protocols = b.dependency("wayland_protocols", .{}).path(""),
|
.wayland_protocols = b.dependency("wayland_protocols", .{}).path(""),
|
||||||
});
|
});
|
||||||
|
|
@ -523,7 +526,7 @@ pub fn add(
|
||||||
const generate_gresource_xml = b.addExecutable(.{
|
const generate_gresource_xml = b.addExecutable(.{
|
||||||
.name = "generate_gresource_xml",
|
.name = "generate_gresource_xml",
|
||||||
.root_source_file = b.path("src/apprt/gtk/gresource.zig"),
|
.root_source_file = b.path("src/apprt/gtk/gresource.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
|
|
||||||
const generate = b.addRunArtifact(generate_gresource_xml);
|
const generate = b.addRunArtifact(generate_gresource_xml);
|
||||||
|
|
@ -531,7 +534,7 @@ pub fn add(
|
||||||
const gtk_blueprint_compiler = b.addExecutable(.{
|
const gtk_blueprint_compiler = b.addExecutable(.{
|
||||||
.name = "gtk_blueprint_compiler",
|
.name = "gtk_blueprint_compiler",
|
||||||
.root_source_file = b.path("src/apprt/gtk/blueprint_compiler.zig"),
|
.root_source_file = b.path("src/apprt/gtk/blueprint_compiler.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
gtk_blueprint_compiler.linkSystemLibrary2("gtk4", dynamic_link_opts);
|
gtk_blueprint_compiler.linkSystemLibrary2("gtk4", dynamic_link_opts);
|
||||||
gtk_blueprint_compiler.linkSystemLibrary2("libadwaita-1", dynamic_link_opts);
|
gtk_blueprint_compiler.linkSystemLibrary2("libadwaita-1", dynamic_link_opts);
|
||||||
|
|
@ -569,7 +572,7 @@ pub fn add(
|
||||||
const gtk_builder_check = b.addExecutable(.{
|
const gtk_builder_check = b.addExecutable(.{
|
||||||
.name = "gtk_builder_check",
|
.name = "gtk_builder_check",
|
||||||
.root_source_file = b.path("src/apprt/gtk/builder_check.zig"),
|
.root_source_file = b.path("src/apprt/gtk/builder_check.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
gtk_builder_check.root_module.addOptions("build_options", self.options);
|
gtk_builder_check.root_module.addOptions("build_options", self.options);
|
||||||
gtk_builder_check.root_module.addImport("gtk", gobject.module("gtk4"));
|
gtk_builder_check.root_module.addImport("gtk", gobject.module("gtk4"));
|
||||||
|
|
@ -593,7 +596,6 @@ pub fn add(
|
||||||
});
|
});
|
||||||
const ghostty_resources_c = generate_resources_c.addOutputFileArg("ghostty_resources.c");
|
const ghostty_resources_c = generate_resources_c.addOutputFileArg("ghostty_resources.c");
|
||||||
generate_resources_c.addFileArg(gresource_xml);
|
generate_resources_c.addFileArg(gresource_xml);
|
||||||
generate_resources_c.extra_file_dependencies = &gresource.dependencies;
|
|
||||||
step.addCSourceFile(.{ .file = ghostty_resources_c, .flags = &.{} });
|
step.addCSourceFile(.{ .file = ghostty_resources_c, .flags = &.{} });
|
||||||
|
|
||||||
const generate_resources_h = b.addSystemCommand(&.{
|
const generate_resources_h = b.addSystemCommand(&.{
|
||||||
|
|
@ -605,7 +607,6 @@ pub fn add(
|
||||||
});
|
});
|
||||||
const ghostty_resources_h = generate_resources_h.addOutputFileArg("ghostty_resources.h");
|
const ghostty_resources_h = generate_resources_h.addOutputFileArg("ghostty_resources.h");
|
||||||
generate_resources_h.addFileArg(gresource_xml);
|
generate_resources_h.addFileArg(gresource_xml);
|
||||||
generate_resources_h.extra_file_dependencies = &gresource.dependencies;
|
|
||||||
step.addIncludePath(ghostty_resources_h.dirname());
|
step.addIncludePath(ghostty_resources_h.dirname());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,11 @@ pub fn init(b: *std.Build) !UnicodeTables {
|
||||||
const exe = b.addExecutable(.{
|
const exe = b.addExecutable(.{
|
||||||
.name = "unigen",
|
.name = "unigen",
|
||||||
.root_source_file = b.path("src/unicode/props.zig"),
|
.root_source_file = b.path("src/unicode/props.zig"),
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
|
|
||||||
const ziglyph_dep = b.dependency("ziglyph", .{
|
const ziglyph_dep = b.dependency("ziglyph", .{
|
||||||
.target = b.host,
|
.target = b.graph.host,
|
||||||
});
|
});
|
||||||
exe.root_module.addImport("ziglyph", ziglyph_dep.module("ziglyph"));
|
exe.root_module.addImport("ziglyph", ziglyph_dep.module("ziglyph"));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
\\
|
\\
|
||||||
);
|
);
|
||||||
|
|
||||||
for (@typeInfo(Config).Struct.fields) |field| {
|
for (@typeInfo(Config).@"struct".fields) |field| {
|
||||||
if (field.name[0] == '_') continue;
|
if (field.name[0] == '_') continue;
|
||||||
switch (field.type) {
|
switch (field.type) {
|
||||||
bool, ?bool => try writer.writeAll(pad2 ++ "config+=\" '--" ++ field.name ++ " '\"\n"),
|
bool, ?bool => try writer.writeAll(pad2 ++ "config+=\" '--" ++ field.name ++ " '\"\n"),
|
||||||
|
|
@ -102,7 +102,7 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
\\
|
\\
|
||||||
);
|
);
|
||||||
|
|
||||||
for (@typeInfo(Config).Struct.fields) |field| {
|
for (@typeInfo(Config).@"struct".fields) |field| {
|
||||||
if (field.name[0] == '_') continue;
|
if (field.name[0] == '_') continue;
|
||||||
try writer.writeAll(pad3 ++ "--" ++ field.name ++ ") ");
|
try writer.writeAll(pad3 ++ "--" ++ field.name ++ ") ");
|
||||||
|
|
||||||
|
|
@ -118,8 +118,8 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
const compgenPrefix = "mapfile -t COMPREPLY < <( compgen -W \"";
|
const compgenPrefix = "mapfile -t COMPREPLY < <( compgen -W \"";
|
||||||
const compgenSuffix = "\" -- \"$cur\" ); _add_spaces ;;";
|
const compgenSuffix = "\" -- \"$cur\" ); _add_spaces ;;";
|
||||||
switch (@typeInfo(field.type)) {
|
switch (@typeInfo(field.type)) {
|
||||||
.Bool => try writer.writeAll("return ;;"),
|
.bool => try writer.writeAll("return ;;"),
|
||||||
.Enum => |info| {
|
.@"enum" => |info| {
|
||||||
try writer.writeAll(compgenPrefix);
|
try writer.writeAll(compgenPrefix);
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
if (i > 0) try writer.writeAll(" ");
|
if (i > 0) try writer.writeAll(" ");
|
||||||
|
|
@ -127,7 +127,7 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
}
|
}
|
||||||
try writer.writeAll(compgenSuffix);
|
try writer.writeAll(compgenSuffix);
|
||||||
},
|
},
|
||||||
.Struct => |info| {
|
.@"struct" => |info| {
|
||||||
if (!@hasDecl(field.type, "parseCLI") and info.layout == .@"packed") {
|
if (!@hasDecl(field.type, "parseCLI") and info.layout == .@"packed") {
|
||||||
try writer.writeAll(compgenPrefix);
|
try writer.writeAll(compgenPrefix);
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
|
|
@ -157,13 +157,13 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
\\
|
\\
|
||||||
);
|
);
|
||||||
|
|
||||||
for (@typeInfo(Action).Enum.fields) |field| {
|
for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
if (std.mem.eql(u8, "help", field.name)) continue;
|
if (std.mem.eql(u8, "help", field.name)) continue;
|
||||||
if (std.mem.eql(u8, "version", field.name)) continue;
|
if (std.mem.eql(u8, "version", field.name)) continue;
|
||||||
|
|
||||||
const options = @field(Action, field.name).options();
|
const options = @field(Action, field.name).options();
|
||||||
// assumes options will never be created with only <_name> members
|
// assumes options will never be created with only <_name> members
|
||||||
if (@typeInfo(options).Struct.fields.len == 0) continue;
|
if (@typeInfo(options).@"struct".fields.len == 0) continue;
|
||||||
|
|
||||||
var buffer: [field.name.len]u8 = undefined;
|
var buffer: [field.name.len]u8 = undefined;
|
||||||
const bashName: []u8 = buffer[0..field.name.len];
|
const bashName: []u8 = buffer[0..field.name.len];
|
||||||
|
|
@ -174,7 +174,7 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
|
|
||||||
{
|
{
|
||||||
var count = 0;
|
var count = 0;
|
||||||
for (@typeInfo(options).Struct.fields) |opt| {
|
for (@typeInfo(options).@"struct".fields) |opt| {
|
||||||
if (opt.name[0] == '_') continue;
|
if (opt.name[0] == '_') continue;
|
||||||
if (count > 0) try writer.writeAll(" ");
|
if (count > 0) try writer.writeAll(" ");
|
||||||
switch (opt.type) {
|
switch (opt.type) {
|
||||||
|
|
@ -193,12 +193,12 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
\\
|
\\
|
||||||
);
|
);
|
||||||
|
|
||||||
for (@typeInfo(Action).Enum.fields) |field| {
|
for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
if (std.mem.eql(u8, "help", field.name)) continue;
|
if (std.mem.eql(u8, "help", field.name)) continue;
|
||||||
if (std.mem.eql(u8, "version", field.name)) continue;
|
if (std.mem.eql(u8, "version", field.name)) continue;
|
||||||
|
|
||||||
const options = @field(Action, field.name).options();
|
const options = @field(Action, field.name).options();
|
||||||
if (@typeInfo(options).Struct.fields.len == 0) continue;
|
if (@typeInfo(options).@"struct".fields.len == 0) continue;
|
||||||
|
|
||||||
// bash doesn't allow variable names containing '-' so replace them
|
// bash doesn't allow variable names containing '-' so replace them
|
||||||
var buffer: [field.name.len]u8 = undefined;
|
var buffer: [field.name.len]u8 = undefined;
|
||||||
|
|
@ -207,7 +207,7 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
|
|
||||||
try writer.writeAll(pad3 ++ "+" ++ field.name ++ ")\n");
|
try writer.writeAll(pad3 ++ "+" ++ field.name ++ ")\n");
|
||||||
try writer.writeAll(pad4 ++ "case $prev in\n");
|
try writer.writeAll(pad4 ++ "case $prev in\n");
|
||||||
for (@typeInfo(options).Struct.fields) |opt| {
|
for (@typeInfo(options).@"struct".fields) |opt| {
|
||||||
if (opt.name[0] == '_') continue;
|
if (opt.name[0] == '_') continue;
|
||||||
|
|
||||||
try writer.writeAll(pad5 ++ "--" ++ opt.name ++ ") ");
|
try writer.writeAll(pad5 ++ "--" ++ opt.name ++ ") ");
|
||||||
|
|
@ -215,8 +215,8 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
const compgenPrefix = "mapfile -t COMPREPLY < <( compgen -W \"";
|
const compgenPrefix = "mapfile -t COMPREPLY < <( compgen -W \"";
|
||||||
const compgenSuffix = "\" -- \"$cur\" ); _add_spaces ;;";
|
const compgenSuffix = "\" -- \"$cur\" ); _add_spaces ;;";
|
||||||
switch (@typeInfo(opt.type)) {
|
switch (@typeInfo(opt.type)) {
|
||||||
.Bool => try writer.writeAll("return ;;"),
|
.bool => try writer.writeAll("return ;;"),
|
||||||
.Enum => |info| {
|
.@"enum" => |info| {
|
||||||
try writer.writeAll(compgenPrefix);
|
try writer.writeAll(compgenPrefix);
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
if (i > 0) try writer.writeAll(" ");
|
if (i > 0) try writer.writeAll(" ");
|
||||||
|
|
@ -224,9 +224,9 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
}
|
}
|
||||||
try writer.writeAll(compgenSuffix);
|
try writer.writeAll(compgenSuffix);
|
||||||
},
|
},
|
||||||
.Optional => |optional| {
|
.optional => |optional| {
|
||||||
switch (@typeInfo(optional.child)) {
|
switch (@typeInfo(optional.child)) {
|
||||||
.Enum => |info| {
|
.@"enum" => |info| {
|
||||||
try writer.writeAll(compgenPrefix);
|
try writer.writeAll(compgenPrefix);
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
if (i > 0) try writer.writeAll(" ");
|
if (i > 0) try writer.writeAll(" ");
|
||||||
|
|
@ -271,7 +271,7 @@ fn writeBashCompletions(writer: anytype) !void {
|
||||||
\\
|
\\
|
||||||
);
|
);
|
||||||
|
|
||||||
for (@typeInfo(Action).Enum.fields) |field| {
|
for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
if (std.mem.eql(u8, "help", field.name)) continue;
|
if (std.mem.eql(u8, "help", field.name)) continue;
|
||||||
if (std.mem.eql(u8, "version", field.name)) continue;
|
if (std.mem.eql(u8, "version", field.name)) continue;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ RUN . /etc/os-release; if [ $VERSION_ID -le 12 ]; then ln -s libbz2.so /usr/lib/
|
||||||
|
|
||||||
# Install zig
|
# Install zig
|
||||||
# https://ziglang.org/download/
|
# https://ziglang.org/download/
|
||||||
ARG ZIG_VERSION="0.13.0"
|
ARG ZIG_VERSION="0.14.0"
|
||||||
RUN wget -q "https://ziglang.org/download/$ZIG_VERSION/zig-linux-$(uname -m)-$ZIG_VERSION.tar.xz" && \
|
RUN wget -q "https://ziglang.org/download/$ZIG_VERSION/zig-linux-$(uname -m)-$ZIG_VERSION.tar.xz" && \
|
||||||
tar -xf "zig-linux-$(uname -m)-$ZIG_VERSION.tar.xz" -C /opt && \
|
tar -xf "zig-linux-$(uname -m)-$ZIG_VERSION.tar.xz" -C /opt && \
|
||||||
rm zig-linux-* && \
|
rm zig-linux-* && \
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ fn writeFishCompletions(writer: anytype) !void {
|
||||||
{
|
{
|
||||||
try writer.writeAll("set -l commands \"");
|
try writer.writeAll("set -l commands \"");
|
||||||
var count: usize = 0;
|
var count: usize = 0;
|
||||||
for (@typeInfo(Action).Enum.fields) |field| {
|
for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
if (std.mem.eql(u8, "help", field.name)) continue;
|
if (std.mem.eql(u8, "help", field.name)) continue;
|
||||||
if (std.mem.eql(u8, "version", field.name)) continue;
|
if (std.mem.eql(u8, "version", field.name)) continue;
|
||||||
if (count > 0) try writer.writeAll(" ");
|
if (count > 0) try writer.writeAll(" ");
|
||||||
|
|
@ -41,7 +41,7 @@ fn writeFishCompletions(writer: anytype) !void {
|
||||||
try writer.writeAll("complete -c ghostty -s e -l help -f\n");
|
try writer.writeAll("complete -c ghostty -s e -l help -f\n");
|
||||||
try writer.writeAll("complete -c ghostty -n \"not __fish_seen_subcommand_from $commands\" -l version -f\n");
|
try writer.writeAll("complete -c ghostty -n \"not __fish_seen_subcommand_from $commands\" -l version -f\n");
|
||||||
|
|
||||||
for (@typeInfo(Config).Struct.fields) |field| {
|
for (@typeInfo(Config).@"struct".fields) |field| {
|
||||||
if (field.name[0] == '_') continue;
|
if (field.name[0] == '_') continue;
|
||||||
|
|
||||||
try writer.writeAll("complete -c ghostty -n \"not __fish_seen_subcommand_from $commands\" -l ");
|
try writer.writeAll("complete -c ghostty -n \"not __fish_seen_subcommand_from $commands\" -l ");
|
||||||
|
|
@ -56,8 +56,8 @@ fn writeFishCompletions(writer: anytype) !void {
|
||||||
else {
|
else {
|
||||||
try writer.writeAll(if (field.type != Config.RepeatablePath) " -f" else " -F");
|
try writer.writeAll(if (field.type != Config.RepeatablePath) " -f" else " -F");
|
||||||
switch (@typeInfo(field.type)) {
|
switch (@typeInfo(field.type)) {
|
||||||
.Bool => {},
|
.bool => {},
|
||||||
.Enum => |info| {
|
.@"enum" => |info| {
|
||||||
try writer.writeAll(" -a \"");
|
try writer.writeAll(" -a \"");
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
if (i > 0) try writer.writeAll(" ");
|
if (i > 0) try writer.writeAll(" ");
|
||||||
|
|
@ -65,7 +65,7 @@ fn writeFishCompletions(writer: anytype) !void {
|
||||||
}
|
}
|
||||||
try writer.writeAll("\"");
|
try writer.writeAll("\"");
|
||||||
},
|
},
|
||||||
.Struct => |info| {
|
.@"struct" => |info| {
|
||||||
if (!@hasDecl(field.type, "parseCLI") and info.layout == .@"packed") {
|
if (!@hasDecl(field.type, "parseCLI") and info.layout == .@"packed") {
|
||||||
try writer.writeAll(" -a \"");
|
try writer.writeAll(" -a \"");
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
|
|
@ -86,7 +86,7 @@ fn writeFishCompletions(writer: anytype) !void {
|
||||||
{
|
{
|
||||||
try writer.writeAll("complete -c ghostty -n \"string match -q -- '+*' (commandline -pt)\" -f -a \"");
|
try writer.writeAll("complete -c ghostty -n \"string match -q -- '+*' (commandline -pt)\" -f -a \"");
|
||||||
var count: usize = 0;
|
var count: usize = 0;
|
||||||
for (@typeInfo(Action).Enum.fields) |field| {
|
for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
if (std.mem.eql(u8, "help", field.name)) continue;
|
if (std.mem.eql(u8, "help", field.name)) continue;
|
||||||
if (std.mem.eql(u8, "version", field.name)) continue;
|
if (std.mem.eql(u8, "version", field.name)) continue;
|
||||||
if (count > 0) try writer.writeAll(" ");
|
if (count > 0) try writer.writeAll(" ");
|
||||||
|
|
@ -97,12 +97,12 @@ fn writeFishCompletions(writer: anytype) !void {
|
||||||
try writer.writeAll("\"\n");
|
try writer.writeAll("\"\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (@typeInfo(Action).Enum.fields) |field| {
|
for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
if (std.mem.eql(u8, "help", field.name)) continue;
|
if (std.mem.eql(u8, "help", field.name)) continue;
|
||||||
if (std.mem.eql(u8, "version", field.name)) continue;
|
if (std.mem.eql(u8, "version", field.name)) continue;
|
||||||
|
|
||||||
const options = @field(Action, field.name).options();
|
const options = @field(Action, field.name).options();
|
||||||
for (@typeInfo(options).Struct.fields) |opt| {
|
for (@typeInfo(options).@"struct".fields) |opt| {
|
||||||
if (opt.name[0] == '_') continue;
|
if (opt.name[0] == '_') continue;
|
||||||
try writer.writeAll("complete -c ghostty -n \"__fish_seen_subcommand_from +" ++ field.name ++ "\" -l ");
|
try writer.writeAll("complete -c ghostty -n \"__fish_seen_subcommand_from +" ++ field.name ++ "\" -l ");
|
||||||
try writer.writeAll(opt.name);
|
try writer.writeAll(opt.name);
|
||||||
|
|
@ -114,8 +114,8 @@ fn writeFishCompletions(writer: anytype) !void {
|
||||||
} else try writer.writeAll(" -f");
|
} else try writer.writeAll(" -f");
|
||||||
|
|
||||||
switch (@typeInfo(opt.type)) {
|
switch (@typeInfo(opt.type)) {
|
||||||
.Bool => {},
|
.bool => {},
|
||||||
.Enum => |info| {
|
.@"enum" => |info| {
|
||||||
try writer.writeAll(" -a \"");
|
try writer.writeAll(" -a \"");
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
if (i > 0) try writer.writeAll(" ");
|
if (i > 0) try writer.writeAll(" ");
|
||||||
|
|
@ -123,9 +123,9 @@ fn writeFishCompletions(writer: anytype) !void {
|
||||||
}
|
}
|
||||||
try writer.writeAll("\"");
|
try writer.writeAll("\"");
|
||||||
},
|
},
|
||||||
.Optional => |optional| {
|
.optional => |optional| {
|
||||||
switch (@typeInfo(optional.child)) {
|
switch (@typeInfo(optional.child)) {
|
||||||
.Enum => |info| {
|
.@"enum" => |info| {
|
||||||
try writer.writeAll(" -a \"");
|
try writer.writeAll(" -a \"");
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
if (i > 0) try writer.writeAll(" ");
|
if (i > 0) try writer.writeAll(" ");
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ pub fn genConfig(writer: anytype, cli: bool) !void {
|
||||||
);
|
);
|
||||||
|
|
||||||
@setEvalBranchQuota(3000);
|
@setEvalBranchQuota(3000);
|
||||||
inline for (@typeInfo(Config).Struct.fields) |field| {
|
inline for (@typeInfo(Config).@"struct".fields) |field| {
|
||||||
if (field.name[0] == '_') continue;
|
if (field.name[0] == '_') continue;
|
||||||
|
|
||||||
try writer.writeAll("**`");
|
try writer.writeAll("**`");
|
||||||
|
|
@ -56,7 +56,7 @@ pub fn genActions(writer: anytype) !void {
|
||||||
\\
|
\\
|
||||||
);
|
);
|
||||||
|
|
||||||
inline for (@typeInfo(Action).Enum.fields) |field| {
|
inline for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
const action = std.meta.stringToEnum(Action, field.name).?;
|
const action = std.meta.stringToEnum(Action, field.name).?;
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
|
|
@ -92,9 +92,9 @@ pub fn genKeybindActions(writer: anytype) !void {
|
||||||
);
|
);
|
||||||
|
|
||||||
const info = @typeInfo(KeybindAction);
|
const info = @typeInfo(KeybindAction);
|
||||||
std.debug.assert(info == .Union);
|
std.debug.assert(info == .@"union");
|
||||||
|
|
||||||
inline for (info.Union.fields) |field| {
|
inline for (info.@"union".fields) |field| {
|
||||||
if (field.name[0] == '_') continue;
|
if (field.name[0] == '_') continue;
|
||||||
|
|
||||||
try writer.writeAll("**`");
|
try writer.writeAll("**`");
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ pub fn main() !void {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: as a shortcut for defining inline editOnGithubLinks per cli action the user
|
// Note: as a shortcut for defining inline editOnGithubLinks per cli action the user
|
||||||
// is directed to the folder view on Github. This includes a README pointing them to
|
// is directed to the folder view on Github. This includes a README pointing them to
|
||||||
// the files to edit.
|
// the files to edit.
|
||||||
pub fn genActions(writer: anytype) !void {
|
pub fn genActions(writer: anytype) !void {
|
||||||
// Write the header
|
// Write the header
|
||||||
|
|
@ -24,7 +24,7 @@ pub fn genActions(writer: anytype) !void {
|
||||||
\\
|
\\
|
||||||
);
|
);
|
||||||
|
|
||||||
inline for (@typeInfo(Action).Enum.fields) |field| {
|
inline for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
const action = std.meta.stringToEnum(Action, field.name).?;
|
const action = std.meta.stringToEnum(Action, field.name).?;
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ pub fn genConfig(writer: anytype) !void {
|
||||||
);
|
);
|
||||||
|
|
||||||
@setEvalBranchQuota(50_000);
|
@setEvalBranchQuota(50_000);
|
||||||
const fields = @typeInfo(Config).Struct.fields;
|
const fields = @typeInfo(Config).@"struct".fields;
|
||||||
inline for (fields, 0..) |field, i| {
|
inline for (fields, 0..) |field, i| {
|
||||||
if (field.name[0] == '_') continue;
|
if (field.name[0] == '_') continue;
|
||||||
if (!@hasDecl(help_strings.Config, field.name)) continue;
|
if (!@hasDecl(help_strings.Config, field.name)) continue;
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ fn writeZshCompletions(writer: anytype) !void {
|
||||||
try writer.writeAll(" _arguments \\\n");
|
try writer.writeAll(" _arguments \\\n");
|
||||||
try writer.writeAll(" \"--help\" \\\n");
|
try writer.writeAll(" \"--help\" \\\n");
|
||||||
try writer.writeAll(" \"--version\" \\\n");
|
try writer.writeAll(" \"--version\" \\\n");
|
||||||
for (@typeInfo(Config).Struct.fields) |field| {
|
for (@typeInfo(Config).@"struct".fields) |field| {
|
||||||
if (field.name[0] == '_') continue;
|
if (field.name[0] == '_') continue;
|
||||||
try writer.writeAll(" \"--");
|
try writer.writeAll(" \"--");
|
||||||
try writer.writeAll(field.name);
|
try writer.writeAll(field.name);
|
||||||
|
|
@ -64,8 +64,8 @@ fn writeZshCompletions(writer: anytype) !void {
|
||||||
try writer.writeAll("_files"); // todo check if this is needed
|
try writer.writeAll("_files"); // todo check if this is needed
|
||||||
} else {
|
} else {
|
||||||
switch (@typeInfo(field.type)) {
|
switch (@typeInfo(field.type)) {
|
||||||
.Bool => {},
|
.bool => {},
|
||||||
.Enum => |info| {
|
.@"enum" => |info| {
|
||||||
try writer.writeAll(equals_required);
|
try writer.writeAll(equals_required);
|
||||||
try writer.writeAll("(");
|
try writer.writeAll("(");
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
|
|
@ -74,7 +74,7 @@ fn writeZshCompletions(writer: anytype) !void {
|
||||||
}
|
}
|
||||||
try writer.writeAll(")");
|
try writer.writeAll(")");
|
||||||
},
|
},
|
||||||
.Struct => |info| {
|
.@"struct" => |info| {
|
||||||
try writer.writeAll(equals_required);
|
try writer.writeAll(equals_required);
|
||||||
if (!@hasDecl(field.type, "parseCLI") and info.layout == .@"packed") {
|
if (!@hasDecl(field.type, "parseCLI") and info.layout == .@"packed") {
|
||||||
try writer.writeAll("(");
|
try writer.writeAll("(");
|
||||||
|
|
@ -138,7 +138,7 @@ fn writeZshCompletions(writer: anytype) !void {
|
||||||
// how to get 'commands'
|
// how to get 'commands'
|
||||||
var count: usize = 0;
|
var count: usize = 0;
|
||||||
const padding = " ";
|
const padding = " ";
|
||||||
for (@typeInfo(Action).Enum.fields) |field| {
|
for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
if (std.mem.eql(u8, "help", field.name)) continue;
|
if (std.mem.eql(u8, "help", field.name)) continue;
|
||||||
if (std.mem.eql(u8, "version", field.name)) continue;
|
if (std.mem.eql(u8, "version", field.name)) continue;
|
||||||
|
|
||||||
|
|
@ -167,25 +167,25 @@ fn writeZshCompletions(writer: anytype) !void {
|
||||||
);
|
);
|
||||||
{
|
{
|
||||||
const padding = " ";
|
const padding = " ";
|
||||||
for (@typeInfo(Action).Enum.fields) |field| {
|
for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
if (std.mem.eql(u8, "help", field.name)) continue;
|
if (std.mem.eql(u8, "help", field.name)) continue;
|
||||||
if (std.mem.eql(u8, "version", field.name)) continue;
|
if (std.mem.eql(u8, "version", field.name)) continue;
|
||||||
|
|
||||||
const options = @field(Action, field.name).options();
|
const options = @field(Action, field.name).options();
|
||||||
// assumes options will never be created with only <_name> members
|
// assumes options will never be created with only <_name> members
|
||||||
if (@typeInfo(options).Struct.fields.len == 0) continue;
|
if (@typeInfo(options).@"struct".fields.len == 0) continue;
|
||||||
|
|
||||||
try writer.writeAll(padding ++ "(+" ++ field.name ++ ")\n");
|
try writer.writeAll(padding ++ "(+" ++ field.name ++ ")\n");
|
||||||
try writer.writeAll(padding ++ " _arguments \\\n");
|
try writer.writeAll(padding ++ " _arguments \\\n");
|
||||||
for (@typeInfo(options).Struct.fields) |opt| {
|
for (@typeInfo(options).@"struct".fields) |opt| {
|
||||||
if (opt.name[0] == '_') continue;
|
if (opt.name[0] == '_') continue;
|
||||||
|
|
||||||
try writer.writeAll(padding ++ " '--");
|
try writer.writeAll(padding ++ " '--");
|
||||||
try writer.writeAll(opt.name);
|
try writer.writeAll(opt.name);
|
||||||
|
|
||||||
switch (@typeInfo(opt.type)) {
|
switch (@typeInfo(opt.type)) {
|
||||||
.Bool => {},
|
.bool => {},
|
||||||
.Enum => |info| {
|
.@"enum" => |info| {
|
||||||
try writer.writeAll(equals_required);
|
try writer.writeAll(equals_required);
|
||||||
try writer.writeAll("(");
|
try writer.writeAll("(");
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
|
|
@ -194,10 +194,10 @@ fn writeZshCompletions(writer: anytype) !void {
|
||||||
}
|
}
|
||||||
try writer.writeAll(")");
|
try writer.writeAll(")");
|
||||||
},
|
},
|
||||||
.Optional => |optional| {
|
.optional => |optional| {
|
||||||
try writer.writeAll(equals_required);
|
try writer.writeAll(equals_required);
|
||||||
switch (@typeInfo(optional.child)) {
|
switch (@typeInfo(optional.child)) {
|
||||||
.Enum => |info| {
|
.@"enum" => |info| {
|
||||||
try writer.writeAll("(");
|
try writer.writeAll("(");
|
||||||
for (info.fields, 0..) |f, i| {
|
for (info.fields, 0..) |f, i| {
|
||||||
if (i > 0) try writer.writeAll(" ");
|
if (i > 0) try writer.writeAll(" ");
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ pub const Artifact = enum {
|
||||||
wasm_module,
|
wasm_module,
|
||||||
|
|
||||||
pub fn detect() Artifact {
|
pub fn detect() Artifact {
|
||||||
if (builtin.target.isWasm()) {
|
if (builtin.target.cpu.arch.isWasm()) {
|
||||||
assert(builtin.output_mode == .Obj);
|
assert(builtin.output_mode == .Obj);
|
||||||
assert(builtin.link_mode == .Static);
|
assert(builtin.link_mode == .Static);
|
||||||
return .wasm_module;
|
return .wasm_module;
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ pub const Action = enum {
|
||||||
// If help is requested, then we use some comptime trickery
|
// If help is requested, then we use some comptime trickery
|
||||||
// to find this action in the help strings and output that.
|
// to find this action in the help strings and output that.
|
||||||
help_error => err: {
|
help_error => err: {
|
||||||
inline for (@typeInfo(Action).Enum.fields) |field| {
|
inline for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
// Future note: for now we just output the help text directly
|
// Future note: for now we just output the help text directly
|
||||||
// to stdout. In the future we can style this much prettier
|
// to stdout. In the future we can style this much prettier
|
||||||
// for all commands by just changing this one place.
|
// for all commands by just changing this one place.
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ pub fn parse(
|
||||||
iter: anytype,
|
iter: anytype,
|
||||||
) !void {
|
) !void {
|
||||||
const info = @typeInfo(T);
|
const info = @typeInfo(T);
|
||||||
assert(info == .Struct);
|
assert(info == .@"struct");
|
||||||
|
|
||||||
comptime {
|
comptime {
|
||||||
// Verify all renamed fields are valid (source does not exist,
|
// Verify all renamed fields are valid (source does not exist,
|
||||||
|
|
@ -208,10 +208,10 @@ fn formatInvalidValue(
|
||||||
|
|
||||||
fn formatValues(comptime T: type, key: []const u8, writer: anytype) std.mem.Allocator.Error!void {
|
fn formatValues(comptime T: type, key: []const u8, writer: anytype) std.mem.Allocator.Error!void {
|
||||||
const typeinfo = @typeInfo(T);
|
const typeinfo = @typeInfo(T);
|
||||||
inline for (typeinfo.Struct.fields) |f| {
|
inline for (typeinfo.@"struct".fields) |f| {
|
||||||
if (std.mem.eql(u8, key, f.name)) {
|
if (std.mem.eql(u8, key, f.name)) {
|
||||||
switch (@typeInfo(f.type)) {
|
switch (@typeInfo(f.type)) {
|
||||||
.Enum => |e| {
|
.@"enum" => |e| {
|
||||||
try writer.print(", valid values are: ", .{});
|
try writer.print(", valid values are: ", .{});
|
||||||
inline for (e.fields, 0..) |field, i| {
|
inline for (e.fields, 0..) |field, i| {
|
||||||
if (i != 0) try writer.print(", ", .{});
|
if (i != 0) try writer.print(", ", .{});
|
||||||
|
|
@ -243,19 +243,21 @@ pub fn parseIntoField(
|
||||||
value: ?[]const u8,
|
value: ?[]const u8,
|
||||||
) !void {
|
) !void {
|
||||||
const info = @typeInfo(T);
|
const info = @typeInfo(T);
|
||||||
assert(info == .Struct);
|
assert(info == .@"struct");
|
||||||
|
|
||||||
inline for (info.Struct.fields) |field| {
|
inline for (info.@"struct".fields) |field| {
|
||||||
if (field.name[0] != '_' and mem.eql(u8, field.name, key)) {
|
if (field.name[0] != '_' and mem.eql(u8, field.name, key)) {
|
||||||
// For optional fields, we just treat it as the child type.
|
// For optional fields, we just treat it as the child type.
|
||||||
// This lets optional fields default to null but get set by
|
// This lets optional fields default to null but get set by
|
||||||
// the CLI.
|
// the CLI.
|
||||||
const Field = switch (@typeInfo(field.type)) {
|
const Field = switch (@typeInfo(field.type)) {
|
||||||
.Optional => |opt| opt.child,
|
.optional => |opt| opt.child,
|
||||||
else => field.type,
|
else => field.type,
|
||||||
};
|
};
|
||||||
const fieldInfo = @typeInfo(Field);
|
const fieldInfo = @typeInfo(Field);
|
||||||
const canHaveDecls = fieldInfo == .Struct or fieldInfo == .Union or fieldInfo == .Enum;
|
const canHaveDecls = fieldInfo == .@"struct" or
|
||||||
|
fieldInfo == .@"union" or
|
||||||
|
fieldInfo == .@"enum";
|
||||||
|
|
||||||
// If the value is empty string (set but empty string),
|
// If the value is empty string (set but empty string),
|
||||||
// then we reset the value to the default.
|
// then we reset the value to the default.
|
||||||
|
|
@ -266,7 +268,7 @@ pub fn parseIntoField(
|
||||||
try @field(dst, field.name).init(alloc);
|
try @field(dst, field.name).init(alloc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const raw = field.default_value orelse break :default;
|
const raw = field.default_value_ptr orelse break :default;
|
||||||
const ptr: *const field.type = @alignCast(@ptrCast(raw));
|
const ptr: *const field.type = @alignCast(@ptrCast(raw));
|
||||||
@field(dst, field.name) = ptr.*;
|
@field(dst, field.name) = ptr.*;
|
||||||
return;
|
return;
|
||||||
|
|
@ -276,22 +278,22 @@ pub fn parseIntoField(
|
||||||
// we call that and use that to set the value.
|
// we call that and use that to set the value.
|
||||||
if (canHaveDecls) {
|
if (canHaveDecls) {
|
||||||
if (@hasDecl(Field, "parseCLI")) {
|
if (@hasDecl(Field, "parseCLI")) {
|
||||||
const fnInfo = @typeInfo(@TypeOf(Field.parseCLI)).Fn;
|
const fnInfo = @typeInfo(@TypeOf(Field.parseCLI)).@"fn";
|
||||||
switch (fnInfo.params.len) {
|
switch (fnInfo.params.len) {
|
||||||
// 1 arg = (input) => output
|
// 1 arg = (input) => output
|
||||||
1 => @field(dst, field.name) = try Field.parseCLI(value),
|
1 => @field(dst, field.name) = try Field.parseCLI(value),
|
||||||
|
|
||||||
// 2 arg = (self, input) => void
|
// 2 arg = (self, input) => void
|
||||||
2 => switch (@typeInfo(field.type)) {
|
2 => switch (@typeInfo(field.type)) {
|
||||||
.Struct,
|
.@"struct",
|
||||||
.Union,
|
.@"union",
|
||||||
.Enum,
|
.@"enum",
|
||||||
=> try @field(dst, field.name).parseCLI(value),
|
=> try @field(dst, field.name).parseCLI(value),
|
||||||
|
|
||||||
// If the field is optional and set, then we use
|
// If the field is optional and set, then we use
|
||||||
// the pointer value directly into it. If its not
|
// the pointer value directly into it. If its not
|
||||||
// set we need to create a new instance.
|
// set we need to create a new instance.
|
||||||
.Optional => if (@field(dst, field.name)) |*v| {
|
.optional => if (@field(dst, field.name)) |*v| {
|
||||||
try v.parseCLI(value);
|
try v.parseCLI(value);
|
||||||
} else {
|
} else {
|
||||||
// Note: you cannot do @field(dst, name) = undefined
|
// Note: you cannot do @field(dst, name) = undefined
|
||||||
|
|
@ -307,12 +309,12 @@ pub fn parseIntoField(
|
||||||
|
|
||||||
// 3 arg = (self, alloc, input) => void
|
// 3 arg = (self, alloc, input) => void
|
||||||
3 => switch (@typeInfo(field.type)) {
|
3 => switch (@typeInfo(field.type)) {
|
||||||
.Struct,
|
.@"struct",
|
||||||
.Union,
|
.@"union",
|
||||||
.Enum,
|
.@"enum",
|
||||||
=> try @field(dst, field.name).parseCLI(alloc, value),
|
=> try @field(dst, field.name).parseCLI(alloc, value),
|
||||||
|
|
||||||
.Optional => if (@field(dst, field.name)) |*v| {
|
.optional => if (@field(dst, field.name)) |*v| {
|
||||||
try v.parseCLI(alloc, value);
|
try v.parseCLI(alloc, value);
|
||||||
} else {
|
} else {
|
||||||
var tmp: Field = undefined;
|
var tmp: Field = undefined;
|
||||||
|
|
@ -374,18 +376,18 @@ pub fn parseIntoField(
|
||||||
) catch return error.InvalidValue,
|
) catch return error.InvalidValue,
|
||||||
|
|
||||||
else => switch (fieldInfo) {
|
else => switch (fieldInfo) {
|
||||||
.Enum => std.meta.stringToEnum(
|
.@"enum" => std.meta.stringToEnum(
|
||||||
Field,
|
Field,
|
||||||
value orelse return error.ValueRequired,
|
value orelse return error.ValueRequired,
|
||||||
) orelse return error.InvalidValue,
|
) orelse return error.InvalidValue,
|
||||||
|
|
||||||
.Struct => try parseStruct(
|
.@"struct" => try parseStruct(
|
||||||
Field,
|
Field,
|
||||||
alloc,
|
alloc,
|
||||||
value orelse return error.ValueRequired,
|
value orelse return error.ValueRequired,
|
||||||
),
|
),
|
||||||
|
|
||||||
.Union => try parseTaggedUnion(
|
.@"union" => try parseTaggedUnion(
|
||||||
Field,
|
Field,
|
||||||
alloc,
|
alloc,
|
||||||
value orelse return error.ValueRequired,
|
value orelse return error.ValueRequired,
|
||||||
|
|
@ -413,8 +415,8 @@ pub fn parseIntoField(
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parseTaggedUnion(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
fn parseTaggedUnion(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
||||||
const info = @typeInfo(T).Union;
|
const info = @typeInfo(T).@"union";
|
||||||
assert(@typeInfo(info.tag_type.?) == .Enum);
|
assert(@typeInfo(info.tag_type.?) == .@"enum");
|
||||||
|
|
||||||
// Get the union tag that is being set. We support values with no colon
|
// Get the union tag that is being set. We support values with no colon
|
||||||
// if the value is void so its not an error to have no colon.
|
// if the value is void so its not an error to have no colon.
|
||||||
|
|
@ -433,12 +435,12 @@ fn parseTaggedUnion(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
||||||
|
|
||||||
// We need to create a struct that looks like this union field.
|
// We need to create a struct that looks like this union field.
|
||||||
// This lets us use parseIntoField as if its a dedicated struct.
|
// This lets us use parseIntoField as if its a dedicated struct.
|
||||||
const Target = @Type(.{ .Struct = .{
|
const Target = @Type(.{ .@"struct" = .{
|
||||||
.layout = .auto,
|
.layout = .auto,
|
||||||
.fields = &.{.{
|
.fields = &.{.{
|
||||||
.name = field.name,
|
.name = field.name,
|
||||||
.type = field.type,
|
.type = field.type,
|
||||||
.default_value = null,
|
.default_value_ptr = null,
|
||||||
.is_comptime = false,
|
.is_comptime = false,
|
||||||
.alignment = @alignOf(field.type),
|
.alignment = @alignOf(field.type),
|
||||||
}},
|
}},
|
||||||
|
|
@ -459,7 +461,7 @@ fn parseTaggedUnion(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parseStruct(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
fn parseStruct(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
||||||
return switch (@typeInfo(T).Struct.layout) {
|
return switch (@typeInfo(T).@"struct".layout) {
|
||||||
.auto => parseAutoStruct(T, alloc, v),
|
.auto => parseAutoStruct(T, alloc, v),
|
||||||
.@"packed" => parsePackedStruct(T, v),
|
.@"packed" => parsePackedStruct(T, v),
|
||||||
else => @compileError("unsupported struct layout"),
|
else => @compileError("unsupported struct layout"),
|
||||||
|
|
@ -467,7 +469,7 @@ fn parseStruct(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parseAutoStruct(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
pub fn parseAutoStruct(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
||||||
const info = @typeInfo(T).Struct;
|
const info = @typeInfo(T).@"struct";
|
||||||
comptime assert(info.layout == .auto);
|
comptime assert(info.layout == .auto);
|
||||||
|
|
||||||
// We start our result as undefined so we don't get an error for required
|
// We start our result as undefined so we don't get an error for required
|
||||||
|
|
@ -519,7 +521,7 @@ pub fn parseAutoStruct(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
||||||
// Ensure all required fields are set
|
// Ensure all required fields are set
|
||||||
inline for (info.fields, 0..) |field, i| {
|
inline for (info.fields, 0..) |field, i| {
|
||||||
if (!fields_set.isSet(i)) {
|
if (!fields_set.isSet(i)) {
|
||||||
const default_ptr = field.default_value orelse return error.InvalidValue;
|
const default_ptr = field.default_value_ptr orelse return error.InvalidValue;
|
||||||
const typed_ptr: *const field.type = @alignCast(@ptrCast(default_ptr));
|
const typed_ptr: *const field.type = @alignCast(@ptrCast(default_ptr));
|
||||||
@field(result, field.name) = typed_ptr.*;
|
@field(result, field.name) = typed_ptr.*;
|
||||||
}
|
}
|
||||||
|
|
@ -529,7 +531,7 @@ pub fn parseAutoStruct(comptime T: type, alloc: Allocator, v: []const u8) !T {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parsePackedStruct(comptime T: type, v: []const u8) !T {
|
fn parsePackedStruct(comptime T: type, v: []const u8) !T {
|
||||||
const info = @typeInfo(T).Struct;
|
const info = @typeInfo(T).@"struct";
|
||||||
comptime assert(info.layout == .@"packed");
|
comptime assert(info.layout == .@"packed");
|
||||||
|
|
||||||
var result: T = .{};
|
var result: T = .{};
|
||||||
|
|
|
||||||
|
|
@ -54,14 +54,14 @@ pub const Location = union(enum) {
|
||||||
line: usize,
|
line: usize,
|
||||||
},
|
},
|
||||||
|
|
||||||
pub const Key = @typeInfo(Location).Union.tag_type.?;
|
pub const Key = @typeInfo(Location).@"union".tag_type.?;
|
||||||
|
|
||||||
pub fn fromIter(iter: anytype, alloc: Allocator) Allocator.Error!Location {
|
pub fn fromIter(iter: anytype, alloc: Allocator) Allocator.Error!Location {
|
||||||
const Iter = t: {
|
const Iter = t: {
|
||||||
const T = @TypeOf(iter);
|
const T = @TypeOf(iter);
|
||||||
break :t switch (@typeInfo(T)) {
|
break :t switch (@typeInfo(T)) {
|
||||||
.Pointer => |v| v.child,
|
.pointer => |v| v.child,
|
||||||
.Struct => T,
|
.@"struct" => T,
|
||||||
else => return .none,
|
else => return .none,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ pub fn run(alloc: Allocator) !u8 {
|
||||||
\\
|
\\
|
||||||
);
|
);
|
||||||
|
|
||||||
inline for (@typeInfo(Action).Enum.fields) |field| {
|
inline for (@typeInfo(Action).@"enum".fields) |field| {
|
||||||
try stdout.print(" +{s}\n", .{field.name});
|
try stdout.print(" +{s}\n", .{field.name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ fn runArgs(alloc_gpa: Allocator, argsIter: anytype) !u8 {
|
||||||
var exit: bool = false;
|
var exit: bool = false;
|
||||||
outer: for (opts._diagnostics.items()) |diagnostic| {
|
outer: for (opts._diagnostics.items()) |diagnostic| {
|
||||||
if (diagnostic.location != .cli) continue :outer;
|
if (diagnostic.location != .cli) continue :outer;
|
||||||
inner: inline for (@typeInfo(Options).Struct.fields) |field| {
|
inner: inline for (@typeInfo(Options).@"struct".fields) |field| {
|
||||||
if (field.name[0] == '_') continue :inner;
|
if (field.name[0] == '_') continue :inner;
|
||||||
if (std.mem.eql(u8, field.name, diagnostic.key)) {
|
if (std.mem.eql(u8, field.name, diagnostic.key)) {
|
||||||
try stderr.writeAll("config error: ");
|
try stderr.writeAll("config error: ");
|
||||||
|
|
@ -134,7 +134,7 @@ fn runArgs(alloc_gpa: Allocator, argsIter: anytype) !u8 {
|
||||||
// action-specific argument.
|
// action-specific argument.
|
||||||
if (!config._diagnostics.empty()) {
|
if (!config._diagnostics.empty()) {
|
||||||
outer: for (config._diagnostics.items()) |diagnostic| {
|
outer: for (config._diagnostics.items()) |diagnostic| {
|
||||||
inner: inline for (@typeInfo(Options).Struct.fields) |field| {
|
inner: inline for (@typeInfo(Options).@"struct".fields) |field| {
|
||||||
if (field.name[0] == '_') continue :inner;
|
if (field.name[0] == '_') continue :inner;
|
||||||
if (std.mem.eql(u8, field.name, diagnostic.key) and (diagnostic.location == .none or diagnostic.location == .cli)) continue :outer;
|
if (std.mem.eql(u8, field.name, diagnostic.key) and (diagnostic.location == .none or diagnostic.location == .cli)) continue :outer;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ pub const WindowPaddingColor = Config.WindowPaddingColor;
|
||||||
|
|
||||||
// Alternate APIs
|
// Alternate APIs
|
||||||
pub const CAPI = @import("config/CAPI.zig");
|
pub const CAPI = @import("config/CAPI.zig");
|
||||||
pub const Wasm = if (!builtin.target.isWasm()) struct {} else @import("config/Wasm.zig");
|
pub const Wasm = if (!builtin.target.cpu.arch.isWasm()) struct {} else @import("config/Wasm.zig");
|
||||||
|
|
||||||
test {
|
test {
|
||||||
@import("std").testing.refAllDecls(@This());
|
@import("std").testing.refAllDecls(@This());
|
||||||
|
|
|
||||||
|
|
@ -2801,7 +2801,7 @@ pub fn changeConditionalState(
|
||||||
// If the conditional state between the old and new is the same,
|
// If the conditional state between the old and new is the same,
|
||||||
// then we don't need to do anything.
|
// then we don't need to do anything.
|
||||||
relevant: {
|
relevant: {
|
||||||
inline for (@typeInfo(conditional.Key).Enum.fields) |field| {
|
inline for (@typeInfo(conditional.Key).@"enum".fields) |field| {
|
||||||
const key: conditional.Key = @field(conditional.Key, field.name);
|
const key: conditional.Key = @field(conditional.Key, field.name);
|
||||||
|
|
||||||
// Conditional set contains the keys that this config uses. So we
|
// Conditional set contains the keys that this config uses. So we
|
||||||
|
|
@ -2849,7 +2849,7 @@ fn expandPaths(self: *Config, base: []const u8) !void {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Expand all of our paths
|
// Expand all of our paths
|
||||||
inline for (@typeInfo(Config).Struct.fields) |field| {
|
inline for (@typeInfo(Config).@"struct".fields) |field| {
|
||||||
switch (field.type) {
|
switch (field.type) {
|
||||||
RepeatablePath, Path => {
|
RepeatablePath, Path => {
|
||||||
try @field(self, field.name).expand(
|
try @field(self, field.name).expand(
|
||||||
|
|
@ -3023,7 +3023,7 @@ pub fn finalize(self: *Config) !void {
|
||||||
// to look up defaults which is kind of expensive. We only do this
|
// to look up defaults which is kind of expensive. We only do this
|
||||||
// on desktop.
|
// on desktop.
|
||||||
const wd_home = std.mem.eql(u8, "home", wd);
|
const wd_home = std.mem.eql(u8, "home", wd);
|
||||||
if ((comptime !builtin.target.isWasm()) and
|
if ((comptime !builtin.target.cpu.arch.isWasm()) and
|
||||||
(comptime !builtin.is_test))
|
(comptime !builtin.is_test))
|
||||||
{
|
{
|
||||||
if (self.command == null or wd_home) command: {
|
if (self.command == null or wd_home) command: {
|
||||||
|
|
@ -3239,7 +3239,7 @@ pub fn clone(
|
||||||
const alloc_arena = result._arena.?.allocator();
|
const alloc_arena = result._arena.?.allocator();
|
||||||
|
|
||||||
// Copy our values
|
// Copy our values
|
||||||
inline for (@typeInfo(Config).Struct.fields) |field| {
|
inline for (@typeInfo(Config).@"struct".fields) |field| {
|
||||||
if (!@hasField(Key, field.name)) continue;
|
if (!@hasField(Key, field.name)) continue;
|
||||||
@field(result, field.name) = try cloneValue(
|
@field(result, field.name) = try cloneValue(
|
||||||
alloc_arena,
|
alloc_arena,
|
||||||
|
|
@ -3286,26 +3286,26 @@ fn cloneValue(
|
||||||
// If we're a type that can have decls and we have clone, then
|
// If we're a type that can have decls and we have clone, then
|
||||||
// call clone and be done.
|
// call clone and be done.
|
||||||
const t = @typeInfo(T);
|
const t = @typeInfo(T);
|
||||||
if (t == .Struct or t == .Enum or t == .Union) {
|
if (t == .@"struct" or t == .@"enum" or t == .@"union") {
|
||||||
if (@hasDecl(T, "clone")) return try src.clone(alloc);
|
if (@hasDecl(T, "clone")) return try src.clone(alloc);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Back into types of types
|
// Back into types of types
|
||||||
switch (t) {
|
switch (t) {
|
||||||
inline .Bool,
|
inline .bool,
|
||||||
.Int,
|
.int,
|
||||||
.Float,
|
.float,
|
||||||
.Enum,
|
.@"enum",
|
||||||
.Union,
|
.@"union",
|
||||||
=> return src,
|
=> return src,
|
||||||
|
|
||||||
.Optional => |info| return try cloneValue(
|
.optional => |info| return try cloneValue(
|
||||||
alloc,
|
alloc,
|
||||||
info.child,
|
info.child,
|
||||||
src orelse return null,
|
src orelse return null,
|
||||||
),
|
),
|
||||||
|
|
||||||
.Struct => |info| {
|
.@"struct" => |info| {
|
||||||
// Packed structs we can return directly as copies.
|
// Packed structs we can return directly as copies.
|
||||||
assert(info.layout == .@"packed");
|
assert(info.layout == .@"packed");
|
||||||
return src;
|
return src;
|
||||||
|
|
@ -3390,21 +3390,21 @@ fn equalField(comptime T: type, old: T, new: T) bool {
|
||||||
|
|
||||||
// Back into types of types
|
// Back into types of types
|
||||||
switch (@typeInfo(T)) {
|
switch (@typeInfo(T)) {
|
||||||
.Void => return true,
|
.void => return true,
|
||||||
|
|
||||||
inline .Bool,
|
inline .bool,
|
||||||
.Int,
|
.int,
|
||||||
.Float,
|
.float,
|
||||||
.Enum,
|
.@"enum",
|
||||||
=> return old == new,
|
=> return old == new,
|
||||||
|
|
||||||
.Optional => |info| {
|
.optional => |info| {
|
||||||
if (old == null and new == null) return true;
|
if (old == null and new == null) return true;
|
||||||
if (old == null or new == null) return false;
|
if (old == null or new == null) return false;
|
||||||
return equalField(info.child, old.?, new.?);
|
return equalField(info.child, old.?, new.?);
|
||||||
},
|
},
|
||||||
|
|
||||||
.Struct => |info| {
|
.@"struct" => |info| {
|
||||||
if (@hasDecl(T, "equal")) return old.equal(new);
|
if (@hasDecl(T, "equal")) return old.equal(new);
|
||||||
|
|
||||||
// If a struct doesn't declare an "equal" function, we fall back
|
// If a struct doesn't declare an "equal" function, we fall back
|
||||||
|
|
@ -3419,7 +3419,7 @@ fn equalField(comptime T: type, old: T, new: T) bool {
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
.Union => |info| {
|
.@"union" => |info| {
|
||||||
const tag_type = info.tag_type.?;
|
const tag_type = info.tag_type.?;
|
||||||
const old_tag = std.meta.activeTag(old);
|
const old_tag = std.meta.activeTag(old);
|
||||||
const new_tag = std.meta.activeTag(new);
|
const new_tag = std.meta.activeTag(new);
|
||||||
|
|
@ -4293,7 +4293,7 @@ pub const Keybinds = struct {
|
||||||
// The order of these blocks is important. The *last* added keybind for a given action is
|
// The order of these blocks is important. The *last* added keybind for a given action is
|
||||||
// what will display in the menu. We want the more typical keybinds after this block to be
|
// what will display in the menu. We want the more typical keybinds after this block to be
|
||||||
// the standard
|
// the standard
|
||||||
if (!builtin.target.isDarwin()) {
|
if (!builtin.target.os.tag.isDarwin()) {
|
||||||
try self.set.put(
|
try self.set.put(
|
||||||
alloc,
|
alloc,
|
||||||
.{ .key = .{ .translated = .insert }, .mods = .{ .ctrl = true } },
|
.{ .key = .{ .translated = .insert }, .mods = .{ .ctrl = true } },
|
||||||
|
|
@ -4308,7 +4308,7 @@ pub const Keybinds = struct {
|
||||||
|
|
||||||
// On macOS we default to super but Linux ctrl+shift since
|
// On macOS we default to super but Linux ctrl+shift since
|
||||||
// ctrl+c is to kill the process.
|
// ctrl+c is to kill the process.
|
||||||
const mods: inputpkg.Mods = if (builtin.target.isDarwin())
|
const mods: inputpkg.Mods = if (builtin.target.os.tag.isDarwin())
|
||||||
.{ .super = true }
|
.{ .super = true }
|
||||||
else
|
else
|
||||||
.{ .ctrl = true, .shift = true };
|
.{ .ctrl = true, .shift = true };
|
||||||
|
|
@ -4426,7 +4426,7 @@ pub const Keybinds = struct {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Windowing
|
// Windowing
|
||||||
if (comptime !builtin.target.isDarwin()) {
|
if (comptime !builtin.target.os.tag.isDarwin()) {
|
||||||
try self.set.put(
|
try self.set.put(
|
||||||
alloc,
|
alloc,
|
||||||
.{ .key = .{ .translated = .n }, .mods = .{ .ctrl = true, .shift = true } },
|
.{ .key = .{ .translated = .n }, .mods = .{ .ctrl = true, .shift = true } },
|
||||||
|
|
@ -4603,7 +4603,7 @@ pub const Keybinds = struct {
|
||||||
{
|
{
|
||||||
// On macOS we default to super but everywhere else
|
// On macOS we default to super but everywhere else
|
||||||
// is alt.
|
// is alt.
|
||||||
const mods: inputpkg.Mods = if (builtin.target.isDarwin())
|
const mods: inputpkg.Mods = if (builtin.target.os.tag.isDarwin())
|
||||||
.{ .super = true }
|
.{ .super = true }
|
||||||
else
|
else
|
||||||
.{ .alt = true };
|
.{ .alt = true };
|
||||||
|
|
@ -4621,7 +4621,7 @@ pub const Keybinds = struct {
|
||||||
// want to be true on other platforms as well but this
|
// want to be true on other platforms as well but this
|
||||||
// is definitely true on macOS so we just do it here for
|
// is definitely true on macOS so we just do it here for
|
||||||
// now (#817)
|
// now (#817)
|
||||||
.key = if (comptime builtin.target.isDarwin())
|
.key = if (comptime builtin.target.os.tag.isDarwin())
|
||||||
.{ .physical = @enumFromInt(i) }
|
.{ .physical = @enumFromInt(i) }
|
||||||
else
|
else
|
||||||
.{ .translated = @enumFromInt(i) },
|
.{ .translated = @enumFromInt(i) },
|
||||||
|
|
@ -4634,7 +4634,7 @@ pub const Keybinds = struct {
|
||||||
try self.set.put(
|
try self.set.put(
|
||||||
alloc,
|
alloc,
|
||||||
.{
|
.{
|
||||||
.key = if (comptime builtin.target.isDarwin())
|
.key = if (comptime builtin.target.os.tag.isDarwin())
|
||||||
.{ .physical = .nine }
|
.{ .physical = .nine }
|
||||||
else
|
else
|
||||||
.{ .translated = .nine },
|
.{ .translated = .nine },
|
||||||
|
|
@ -4659,7 +4659,7 @@ pub const Keybinds = struct {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Mac-specific keyboard bindings.
|
// Mac-specific keyboard bindings.
|
||||||
if (comptime builtin.target.isDarwin()) {
|
if (comptime builtin.target.os.tag.isDarwin()) {
|
||||||
try self.set.put(
|
try self.set.put(
|
||||||
alloc,
|
alloc,
|
||||||
.{ .key = .{ .translated = .q }, .mods = .{ .super = true } },
|
.{ .key = .{ .translated = .q }, .mods = .{ .super = true } },
|
||||||
|
|
@ -4995,7 +4995,7 @@ pub const Keybinds = struct {
|
||||||
if (docs) {
|
if (docs) {
|
||||||
try formatter.writer.writeAll("\n");
|
try formatter.writer.writeAll("\n");
|
||||||
const name = @tagName(v);
|
const name = @tagName(v);
|
||||||
inline for (@typeInfo(help_strings.KeybindAction).Struct.decls) |decl| {
|
inline for (@typeInfo(help_strings.KeybindAction).@"struct".decls) |decl| {
|
||||||
if (std.mem.eql(u8, decl.name, name)) {
|
if (std.mem.eql(u8, decl.name, name)) {
|
||||||
const help = @field(help_strings.KeybindAction, decl.name);
|
const help = @field(help_strings.KeybindAction, decl.name);
|
||||||
try formatter.writer.writeAll("# " ++ decl.name ++ "\n");
|
try formatter.writer.writeAll("# " ++ decl.name ++ "\n");
|
||||||
|
|
|
||||||
|
|
@ -53,21 +53,21 @@ fn getValue(ptr_raw: *anyopaque, value: anytype) bool {
|
||||||
},
|
},
|
||||||
|
|
||||||
else => |T| switch (@typeInfo(T)) {
|
else => |T| switch (@typeInfo(T)) {
|
||||||
.Optional => {
|
.optional => {
|
||||||
// If an optional has no value we return false.
|
// If an optional has no value we return false.
|
||||||
const unwrapped = value orelse return false;
|
const unwrapped = value orelse return false;
|
||||||
return getValue(ptr_raw, unwrapped);
|
return getValue(ptr_raw, unwrapped);
|
||||||
},
|
},
|
||||||
|
|
||||||
.Enum => {
|
.@"enum" => {
|
||||||
const ptr: *[*:0]const u8 = @ptrCast(@alignCast(ptr_raw));
|
const ptr: *[*:0]const u8 = @ptrCast(@alignCast(ptr_raw));
|
||||||
ptr.* = @tagName(value);
|
ptr.* = @tagName(value);
|
||||||
},
|
},
|
||||||
|
|
||||||
.Struct => |info| {
|
.@"struct" => |info| {
|
||||||
// If the struct implements cval then we call then.
|
// If the struct implements cval then we call then.
|
||||||
if (@hasDecl(T, "cval")) {
|
if (@hasDecl(T, "cval")) {
|
||||||
const PtrT = @typeInfo(@TypeOf(T.cval)).Fn.return_type.?;
|
const PtrT = @typeInfo(@TypeOf(T.cval)).@"fn".return_type.?;
|
||||||
const ptr: *PtrT = @ptrCast(@alignCast(ptr_raw));
|
const ptr: *PtrT = @ptrCast(@alignCast(ptr_raw));
|
||||||
ptr.* = value.cval();
|
ptr.* = value.cval();
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -84,9 +84,9 @@ fn getValue(ptr_raw: *anyopaque, value: anytype) bool {
|
||||||
ptr.* = @intCast(@as(Backing, @bitCast(value)));
|
ptr.* = @intCast(@as(Backing, @bitCast(value)));
|
||||||
},
|
},
|
||||||
|
|
||||||
.Union => |_| {
|
.@"union" => |_| {
|
||||||
if (@hasDecl(T, "cval")) {
|
if (@hasDecl(T, "cval")) {
|
||||||
const PtrT = @typeInfo(@TypeOf(T.cval)).Fn.return_type.?;
|
const PtrT = @typeInfo(@TypeOf(T.cval)).@"fn".return_type.?;
|
||||||
const ptr: *PtrT = @ptrCast(@alignCast(ptr_raw));
|
const ptr: *PtrT = @ptrCast(@alignCast(ptr_raw));
|
||||||
ptr.* = value.cval();
|
ptr.* = value.cval();
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -39,14 +39,14 @@ pub const State = struct {
|
||||||
|
|
||||||
/// An enum of the available conditional configuration keys.
|
/// An enum of the available conditional configuration keys.
|
||||||
pub const Key = key: {
|
pub const Key = key: {
|
||||||
const stateInfo = @typeInfo(State).Struct;
|
const stateInfo = @typeInfo(State).@"struct";
|
||||||
var fields: [stateInfo.fields.len]std.builtin.Type.EnumField = undefined;
|
var fields: [stateInfo.fields.len]std.builtin.Type.EnumField = undefined;
|
||||||
for (stateInfo.fields, 0..) |field, i| fields[i] = .{
|
for (stateInfo.fields, 0..) |field, i| fields[i] = .{
|
||||||
.name = field.name,
|
.name = field.name,
|
||||||
.value = i,
|
.value = i,
|
||||||
};
|
};
|
||||||
|
|
||||||
break :key @Type(.{ .Enum = .{
|
break :key @Type(.{ .@"enum" = .{
|
||||||
.tag_type = std.math.IntFittingRange(0, fields.len - 1),
|
.tag_type = std.math.IntFittingRange(0, fields.len - 1),
|
||||||
.fields = &fields,
|
.fields = &fields,
|
||||||
.decls = &.{},
|
.decls = &.{},
|
||||||
|
|
|
||||||
|
|
@ -42,27 +42,27 @@ pub fn formatEntry(
|
||||||
writer: anytype,
|
writer: anytype,
|
||||||
) !void {
|
) !void {
|
||||||
switch (@typeInfo(T)) {
|
switch (@typeInfo(T)) {
|
||||||
.Bool, .Int => {
|
.bool, .int => {
|
||||||
try writer.print("{s} = {}\n", .{ name, value });
|
try writer.print("{s} = {}\n", .{ name, value });
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
|
||||||
.Float => {
|
.float => {
|
||||||
try writer.print("{s} = {d}\n", .{ name, value });
|
try writer.print("{s} = {d}\n", .{ name, value });
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
|
||||||
.Enum => {
|
.@"enum" => {
|
||||||
try writer.print("{s} = {s}\n", .{ name, @tagName(value) });
|
try writer.print("{s} = {s}\n", .{ name, @tagName(value) });
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
|
||||||
.Void => {
|
.void => {
|
||||||
try writer.print("{s} = \n", .{name});
|
try writer.print("{s} = \n", .{name});
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
|
||||||
.Optional => |info| {
|
.optional => |info| {
|
||||||
if (value) |inner| {
|
if (value) |inner| {
|
||||||
try formatEntry(
|
try formatEntry(
|
||||||
info.child,
|
info.child,
|
||||||
|
|
@ -77,7 +77,7 @@ pub fn formatEntry(
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
|
||||||
.Pointer => switch (T) {
|
.pointer => switch (T) {
|
||||||
[]const u8,
|
[]const u8,
|
||||||
[:0]const u8,
|
[:0]const u8,
|
||||||
=> {
|
=> {
|
||||||
|
|
@ -93,7 +93,7 @@ pub fn formatEntry(
|
||||||
// This is given the formatter in use so that they can
|
// This is given the formatter in use so that they can
|
||||||
// call BACK to our formatEntry to write each primitive
|
// call BACK to our formatEntry to write each primitive
|
||||||
// value.
|
// value.
|
||||||
.Struct => |info| if (@hasDecl(T, "formatEntry")) {
|
.@"struct" => |info| if (@hasDecl(T, "formatEntry")) {
|
||||||
try value.formatEntry(entryFormatter(name, writer));
|
try value.formatEntry(entryFormatter(name, writer));
|
||||||
return;
|
return;
|
||||||
} else switch (info.layout) {
|
} else switch (info.layout) {
|
||||||
|
|
@ -114,7 +114,7 @@ pub fn formatEntry(
|
||||||
else => {},
|
else => {},
|
||||||
},
|
},
|
||||||
|
|
||||||
.Union => if (@hasDecl(T, "formatEntry")) {
|
.@"union" => if (@hasDecl(T, "formatEntry")) {
|
||||||
try value.formatEntry(entryFormatter(name, writer));
|
try value.formatEntry(entryFormatter(name, writer));
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
|
@ -158,7 +158,7 @@ pub const FileFormatter = struct {
|
||||||
null;
|
null;
|
||||||
defer if (default) |*v| v.deinit();
|
defer if (default) |*v| v.deinit();
|
||||||
|
|
||||||
inline for (@typeInfo(Config).Struct.fields) |field| {
|
inline for (@typeInfo(Config).@"struct".fields) |field| {
|
||||||
if (field.name[0] == '_') continue;
|
if (field.name[0] == '_') continue;
|
||||||
|
|
||||||
const value = @field(self.config, field.name);
|
const value = @field(self.config, field.name);
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ pub const Key = key: {
|
||||||
|
|
||||||
var decls = [_]std.builtin.Type.Declaration{};
|
var decls = [_]std.builtin.Type.Declaration{};
|
||||||
break :key @Type(.{
|
break :key @Type(.{
|
||||||
.Enum = .{
|
.@"enum" = .{
|
||||||
.tag_type = std.math.IntFittingRange(0, field_infos.len - 1),
|
.tag_type = std.math.IntFittingRange(0, field_infos.len - 1),
|
||||||
.fields = enumFields[0..i],
|
.fields = enumFields[0..i],
|
||||||
.decls = &decls,
|
.decls = &decls,
|
||||||
|
|
@ -34,6 +34,8 @@ pub const Key = key: {
|
||||||
/// Returns the value type for a key
|
/// Returns the value type for a key
|
||||||
pub fn Value(comptime key: Key) type {
|
pub fn Value(comptime key: Key) type {
|
||||||
const field = comptime field: {
|
const field = comptime field: {
|
||||||
|
@setEvalBranchQuota(100_000);
|
||||||
|
|
||||||
const fields = std.meta.fields(Config);
|
const fields = std.meta.fields(Config);
|
||||||
for (fields) |field| {
|
for (fields) |field| {
|
||||||
if (@field(Key, field.name) == key) {
|
if (@field(Key, field.name) == key) {
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ fn isInternal(name: []const u8) bool {
|
||||||
fn generateKeywords() []const u8 {
|
fn generateKeywords() []const u8 {
|
||||||
@setEvalBranchQuota(5000);
|
@setEvalBranchQuota(5000);
|
||||||
var keywords: []const u8 = "";
|
var keywords: []const u8 = "";
|
||||||
const config_fields = @typeInfo(Config).Struct.fields;
|
const config_fields = @typeInfo(Config).@"struct".fields;
|
||||||
|
|
||||||
for (config_fields) |field| {
|
for (config_fields) |field| {
|
||||||
if (isInternal(field.name)) continue;
|
if (isInternal(field.name)) continue;
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ pub const LocationIterator = struct {
|
||||||
location: Location,
|
location: Location,
|
||||||
dir: []const u8,
|
dir: []const u8,
|
||||||
} {
|
} {
|
||||||
const max = @typeInfo(Location).Enum.fields.len;
|
const max = @typeInfo(Location).@"enum".fields.len;
|
||||||
while (self.i < max) {
|
while (self.i < max) {
|
||||||
const location: Location = @enumFromInt(self.i);
|
const location: Location = @enumFromInt(self.i);
|
||||||
self.i += 1;
|
self.i += 1;
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ fn writeSyntax(writer: anytype) !void {
|
||||||
\\syn keyword ghosttyConfigKeyword
|
\\syn keyword ghosttyConfigKeyword
|
||||||
);
|
);
|
||||||
|
|
||||||
const config_fields = @typeInfo(Config).Struct.fields;
|
const config_fields = @typeInfo(Config).@"struct".fields;
|
||||||
inline for (config_fields) |field| {
|
inline for (config_fields) |field| {
|
||||||
if (field.name[0] == '_') continue;
|
if (field.name[0] == '_') continue;
|
||||||
try writer.print("\n\t\\ {s}", .{field.name});
|
try writer.print("\n\t\\ {s}", .{field.name});
|
||||||
|
|
|
||||||
|
|
@ -46,13 +46,13 @@ pub fn Reader(comptime S: type) type {
|
||||||
stream_directory_rva: u32,
|
stream_directory_rva: u32,
|
||||||
|
|
||||||
const SourceCallable = switch (@typeInfo(Source)) {
|
const SourceCallable = switch (@typeInfo(Source)) {
|
||||||
.Pointer => |v| v.child,
|
.pointer => |v| v.child,
|
||||||
.Struct => Source,
|
.@"struct" => Source,
|
||||||
else => @compileError("Source type must be a pointer or struct"),
|
else => @compileError("Source type must be a pointer or struct"),
|
||||||
};
|
};
|
||||||
|
|
||||||
const SourceReader = @typeInfo(@TypeOf(SourceCallable.reader)).Fn.return_type.?;
|
const SourceReader = @typeInfo(@TypeOf(SourceCallable.reader)).@"fn".return_type.?;
|
||||||
const SourceSeeker = @typeInfo(@TypeOf(SourceCallable.seekableStream)).Fn.return_type.?;
|
const SourceSeeker = @typeInfo(@TypeOf(SourceCallable.seekableStream)).@"fn".return_type.?;
|
||||||
|
|
||||||
/// A limited reader for reading data from the source.
|
/// A limited reader for reading data from the source.
|
||||||
pub const LimitedReader = std.io.LimitedReader(SourceReader);
|
pub const LimitedReader = std.io.LimitedReader(SourceReader);
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ pub fn HashMap(
|
||||||
return struct {
|
return struct {
|
||||||
const Self = @This();
|
const Self = @This();
|
||||||
const Map = std.HashMapUnmanaged(K, *Queue.Node, Context, max_load_percentage);
|
const Map = std.HashMapUnmanaged(K, *Queue.Node, Context, max_load_percentage);
|
||||||
const Queue = std.TailQueue(KV);
|
const Queue = std.DoublyLinkedList(KV);
|
||||||
|
|
||||||
/// Map to maintain our entries.
|
/// Map to maintain our entries.
|
||||||
map: Map,
|
map: Map,
|
||||||
|
|
|
||||||
|
|
@ -639,11 +639,11 @@ pub const PresentationMode = union(enum) {
|
||||||
/// the Backing type and everything should just work fine.
|
/// the Backing type and everything should just work fine.
|
||||||
pub const Index = packed struct(Index.Backing) {
|
pub const Index = packed struct(Index.Backing) {
|
||||||
const Backing = u16;
|
const Backing = u16;
|
||||||
const backing_bits = @typeInfo(Backing).Int.bits;
|
const backing_bits = @typeInfo(Backing).int.bits;
|
||||||
|
|
||||||
/// The number of bits we use for the index.
|
/// The number of bits we use for the index.
|
||||||
const idx_bits = backing_bits - @typeInfo(@typeInfo(Style).Enum.tag_type).Int.bits;
|
const idx_bits = backing_bits - @typeInfo(@typeInfo(Style).@"enum".tag_type).int.bits;
|
||||||
pub const IndexInt = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = idx_bits } });
|
pub const IndexInt = @Type(.{ .int = .{ .signedness = .unsigned, .bits = idx_bits } });
|
||||||
|
|
||||||
/// The special-case fonts that we support.
|
/// The special-case fonts that we support.
|
||||||
pub const Special = enum(IndexInt) {
|
pub const Special = enum(IndexInt) {
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue