mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-08-01 05:09:01 +00:00
This makes `libghostty-vt` build for freestanding wasm targets (aka a browser) and produce a `ghostty-vt.wasm` file. This exports the same C API that libghostty-vt does. This commit specifically makes the changes necessary for the build to build properly and for us to run the build in CI. We don't yet actually try using it...
21 lines
916 B
Zig
21 lines
916 B
Zig
const std = @import("std");
|
|
const builtin = @import("builtin");
|
|
const options = @import("build_options");
|
|
|
|
/// The wasm target platform. This is used to toggle certain features
|
|
/// on and off since the standard triple target is often not specific
|
|
/// enough (i.e. we can't tell wasm32-freestanding is for browser or not).
|
|
pub const Target = enum {
|
|
browser,
|
|
};
|
|
|
|
/// Our specific target platform.
|
|
pub const target: ?Target = if (!builtin.target.cpu.arch.isWasm()) null else target: {
|
|
const result = @as(Target, @enumFromInt(@intFromEnum(options.wasm_target)));
|
|
// This maybe isn't necessary but I don't know if enums without a specific
|
|
// tag type and value are guaranteed to be the same between build.zig
|
|
// compilation and our own source compilation so I have this just in case.
|
|
std.debug.assert(std.mem.eql(u8, @tagName(result), @tagName(options.wasm_target)));
|
|
break :target result;
|
|
};
|