mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00
build: xcodebuild properly sets up resources
This commit is contained in:
20
build.zig
20
build.zig
@ -104,7 +104,12 @@ pub fn build(b: *std.Build) !void {
|
|||||||
const macos_app = try buildpkg.GhosttyXcodebuild.init(
|
const macos_app = try buildpkg.GhosttyXcodebuild.init(
|
||||||
b,
|
b,
|
||||||
&config,
|
&config,
|
||||||
&xcframework,
|
.{
|
||||||
|
.xcframework = &xcframework,
|
||||||
|
.docs = &docs,
|
||||||
|
.i18n = &i18n,
|
||||||
|
.resources = &resources,
|
||||||
|
},
|
||||||
);
|
);
|
||||||
if (config.emit_macos_app) {
|
if (config.emit_macos_app) {
|
||||||
macos_app.install();
|
macos_app.install();
|
||||||
@ -144,15 +149,14 @@ pub fn build(b: *std.Build) !void {
|
|||||||
const macos_app_native_only = try buildpkg.GhosttyXcodebuild.init(
|
const macos_app_native_only = try buildpkg.GhosttyXcodebuild.init(
|
||||||
b,
|
b,
|
||||||
&config,
|
&config,
|
||||||
&xcframework_native,
|
.{
|
||||||
|
.xcframework = &xcframework_native,
|
||||||
|
.docs = &docs,
|
||||||
|
.i18n = &i18n,
|
||||||
|
.resources = &resources,
|
||||||
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
// The app depends on the resources and i18n to be in the
|
|
||||||
// install directory too.
|
|
||||||
resources.addStepDependencies(&macos_app_native_only.build.step);
|
|
||||||
i18n.addStepDependencies(&macos_app_native_only.build.step);
|
|
||||||
docs.installDummy(&macos_app_native_only.build.step);
|
|
||||||
|
|
||||||
const run_step = b.step("run", "Run the app");
|
const run_step = b.step("run", "Run the app");
|
||||||
run_step.dependOn(&macos_app_native_only.open.step);
|
run_step.dependOn(&macos_app_native_only.open.step);
|
||||||
}
|
}
|
||||||
|
@ -90,5 +90,12 @@ pub fn init(
|
|||||||
|
|
||||||
pub fn install(self: *const GhosttyXCFramework) void {
|
pub fn install(self: *const GhosttyXCFramework) void {
|
||||||
const b = self.xcframework.step.owner;
|
const b = self.xcframework.step.owner;
|
||||||
b.getInstallStep().dependOn(self.xcframework.step);
|
self.addStepDependencies(b.getInstallStep());
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn addStepDependencies(
|
||||||
|
self: *const GhosttyXCFramework,
|
||||||
|
other_step: *std.Build.Step,
|
||||||
|
) void {
|
||||||
|
other_step.dependOn(self.xcframework.step);
|
||||||
}
|
}
|
||||||
|
@ -4,16 +4,26 @@ const std = @import("std");
|
|||||||
const builtin = @import("builtin");
|
const builtin = @import("builtin");
|
||||||
const RunStep = std.Build.Step.Run;
|
const RunStep = std.Build.Step.Run;
|
||||||
const Config = @import("Config.zig");
|
const Config = @import("Config.zig");
|
||||||
|
const Docs = @import("GhosttyDocs.zig");
|
||||||
|
const I18n = @import("GhosttyI18n.zig");
|
||||||
|
const Resources = @import("GhosttyResources.zig");
|
||||||
const XCFramework = @import("GhosttyXCFramework.zig");
|
const XCFramework = @import("GhosttyXCFramework.zig");
|
||||||
|
|
||||||
build: *std.Build.Step.Run,
|
build: *std.Build.Step.Run,
|
||||||
open: *std.Build.Step.Run,
|
open: *std.Build.Step.Run,
|
||||||
copy: *std.Build.Step.Run,
|
copy: *std.Build.Step.Run,
|
||||||
|
|
||||||
|
pub const Deps = struct {
|
||||||
|
xcframework: *const XCFramework,
|
||||||
|
docs: *const Docs,
|
||||||
|
i18n: *const I18n,
|
||||||
|
resources: *const Resources,
|
||||||
|
};
|
||||||
|
|
||||||
pub fn init(
|
pub fn init(
|
||||||
b: *std.Build,
|
b: *std.Build,
|
||||||
config: *const Config,
|
config: *const Config,
|
||||||
xcframework: *const XCFramework,
|
deps: Deps,
|
||||||
) !Ghostty {
|
) !Ghostty {
|
||||||
const xc_config = switch (config.optimize) {
|
const xc_config = switch (config.optimize) {
|
||||||
.Debug => "Debug",
|
.Debug => "Debug",
|
||||||
@ -44,7 +54,7 @@ pub fn init(
|
|||||||
xc_config,
|
xc_config,
|
||||||
});
|
});
|
||||||
|
|
||||||
switch (xcframework.target) {
|
switch (deps.xcframework.target) {
|
||||||
// Universal is our default target, so we don't have to
|
// Universal is our default target, so we don't have to
|
||||||
// add anything.
|
// add anything.
|
||||||
.universal => {},
|
.universal => {},
|
||||||
@ -62,7 +72,13 @@ pub fn init(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We need the xcframework
|
// We need the xcframework
|
||||||
build.step.dependOn(xcframework.xcframework.step);
|
deps.xcframework.addStepDependencies(&build.step);
|
||||||
|
|
||||||
|
// We also need all these resources because the xcode project
|
||||||
|
// references them via symlinks.
|
||||||
|
deps.resources.addStepDependencies(&build.step);
|
||||||
|
deps.i18n.addStepDependencies(&build.step);
|
||||||
|
deps.docs.installDummy(&build.step);
|
||||||
|
|
||||||
// Expect success
|
// Expect success
|
||||||
build.expectExitCode(0);
|
build.expectExitCode(0);
|
||||||
|
Reference in New Issue
Block a user