From 57d877a0d622a01381688cbafd8d227612640fc7 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 4 Mar 2026 13:45:30 -0800 Subject: [PATCH] Revert "build: link to the system FontConfig by default on non-macOS systems" This reverts commit 89f9dd7848111b28287a70388d610d66227a53f4. --- HACKING.md | 9 --------- src/build/Config.zig | 14 +------------- src/build/SharedDeps.zig | 7 ------- 3 files changed, 1 insertion(+), 29 deletions(-) diff --git a/HACKING.md b/HACKING.md index d69bcd0f8..7ba584881 100644 --- a/HACKING.md +++ b/HACKING.md @@ -38,15 +38,6 @@ here: | `zig build dist` | Builds a source tarball | | `zig build distcheck` | Builds and validates a source tarball | -## FontConfig and GTK - -Because of the global shared state that FontConfig maintains, FontConfig must -be linked dynamically to the same system FontConfig shared library that GTK -uses. Ghostty's default has been changed to always link to the system FontConfig -library. If that is overridden (by specifying `-fno-sys=fontconfig` during the -build) Ghostty may crash when trying to locate glyphs that are not available in -the default font. - ## Extra Dependencies Building Ghostty from a Git checkout on Linux requires some additional diff --git a/src/build/Config.zig b/src/build/Config.zig index aded6007d..3a8a4e0c7 100644 --- a/src/build/Config.zig +++ b/src/build/Config.zig @@ -424,19 +424,6 @@ pub fn init(b: *std.Build, appVersion: []const u8) !Config { // show up properly in `--help`. { - // These should default to `true` except on macOS because linking them - // to Ghostty statically when GTK is dynamically linked to them can - // cause crashes. - for (&[_][]const u8{ - "fontconfig", - }) |dep| { - _ = b.systemIntegrationOption( - dep, - .{ - .default = if (target.result.os.tag.isDarwin()) false else true, - }, - ); - } // These dependencies we want to default false if we're on macOS. // On macOS we don't want to use system libraries because we // generally want a fat binary. This can be overridden with the @@ -444,6 +431,7 @@ pub fn init(b: *std.Build, appVersion: []const u8) !Config { for (&[_][]const u8{ "freetype", "harfbuzz", + "fontconfig", "libpng", "zlib", "oniguruma", diff --git a/src/build/SharedDeps.zig b/src/build/SharedDeps.zig index 821677128..9276c9914 100644 --- a/src/build/SharedDeps.zig +++ b/src/build/SharedDeps.zig @@ -200,13 +200,6 @@ pub fn add( if (b.systemIntegrationOption("fontconfig", .{})) { step.linkSystemLibrary2("fontconfig", dynamic_link_opts); } else { - if (self.config.app_runtime == .gtk) - std.debug.print( - \\WARNING: Statically linking FontConfig when using the GTK app runtime is known - \\to cause crashes! It is HIGHLY recommended that Ghostty be dynamically linked - \\to the system FontConfig library. - \\ - , .{}); step.linkLibrary(fontconfig_dep.artifact("fontconfig")); try static_libs.append( b.allocator,