mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-10-17 07:16:12 +00:00
Nuke GLFW, make zig build run
on macOS build the Xcode project (#7815)
This PR does two things. 1. Build system improvements to make developing on macOS more enjoyable 2. Delete the GLFW apprt ## Build System Improvements (macOS) On macOS, there are a few major improvements: * `zig build` now produces a full macOS app bundle and copies it into `zig-out` * `zig build run` now builds the macOS app and runs it, streaming logs directly into the terminal * `-Demit-macos-app` can control whether app bundle is created * `-Dxcframework-target` can be set to one of `native` or `universal` to control whether the xcframework uses only your target machines arch or creates a universal one with macOS and iOS. This defaults to `native` for the `run` command and `universal` for all others. * The general flow of the `build.zig` file was improved to be more declarative ## Nuke GLFW > This deletes the GLFW apprt from the Ghostty codebase. > > The GLFW apprt was the original apprt used by Ghostty (well, before > Ghostty even had the concept of an "apprt" -- it was all just a single > application then). It let me iterate on the core terminal features, > rendering, etc. without bothering about the UI. It was a good way to get > started. But it has long since outlived its usefulness. > > We've had a stable GTK apprt for Linux (and Windows via WSL) and a > native macOS app via libghostty for awhile now. The GLFW apprt only > remained within the tree for a few reasons: > > 1. Primarily, it provided a faster feedback loop on macOS because > building the macOS app historically required us to hop out of the > zig build system and into Xcode, which is slow and cumbersome. > > 2. It was a convenient way to narrow whether a bug was in the > core Ghostty codebase or in the apprt itself. If a bug was in both > the glfw and macOS app then it was likely in the core. > > 3. It provided us a way on macOS to test OpenGL. > > All of these reasons are no longer valid. Respectively: > > 1. Our Zig build scripts now execute the `xcodebuild` CLI directly and > can open the resulting app, stream logs, etc. This is the same > experience we have on Linux. (Xcode has always been a dependency of > building on macOS in general, so this is not cumbersome.) > > 2. We have a healthy group of maintainers, many of which have access > to both macOS and Linux, so we can quickly narrow down bugs > regardless of the apprt. > > 3. Our OpenGL renderer hasn't been compatible with macOS for some time > now, so this is no longer a useful feature. > > At this point, the GLFW apprt is just a burden. It adds complexity > across the board, and some people try to run Ghostty with it in the real > world and get confused when it doesn't work (it's always been lacking in > features and buggy compared to the other apprts). > > So, it's time to say goodbye. Its bittersweet because it is a big part > of Ghostty's history, but we've grown up now and it's time to move on. > Thank you, goodbye. > > (NOTE: If you are a user of the GLFW apprt, then please fork the project > prior to this commit or start a new project based on it. We've warned > against using it for a very, very long time now.)
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
const std = @import("std");
|
||||
const builtin = @import("builtin");
|
||||
const glfw = @import("glfw");
|
||||
const xev = @import("xev");
|
||||
const wuffs = @import("wuffs");
|
||||
const apprt = @import("../apprt.zig");
|
||||
@@ -606,20 +605,6 @@ pub fn Renderer(comptime GraphicsAPI: type) type {
|
||||
}
|
||||
};
|
||||
|
||||
/// Returns the hints that we want for this window.
|
||||
pub fn glfwWindowHints(config: *const configpkg.Config) glfw.Window.Hints {
|
||||
// If our graphics API provides hints, use them,
|
||||
// otherwise fall back to generic hints.
|
||||
if (@hasDecl(GraphicsAPI, "glfwWindowHints")) {
|
||||
return GraphicsAPI.glfwWindowHints(config);
|
||||
}
|
||||
|
||||
return .{
|
||||
.client_api = .no_api,
|
||||
.transparent_framebuffer = config.@"background-opacity" < 1,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn init(alloc: Allocator, options: renderer.Options) !Self {
|
||||
// Initialize our graphics API wrapper, this will prepare the
|
||||
// surface provided by the apprt and set up any API-specific
|
||||
|
Reference in New Issue
Block a user