Files
ghostty/src/os/wasm/target.zig
Mitchell Hashimoto 9dc2e5978f lib-vt: enable freestanding wasm builds (#9301)
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...
2025-10-21 20:55:54 -07:00

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;
};