mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
logging works for wasm
This commit is contained in:
@ -137,6 +137,7 @@ pub fn build(b: *std.build.Builder) !void {
|
|||||||
const main_test = b.addTest("src/main_wasm.zig");
|
const main_test = b.addTest("src/main_wasm.zig");
|
||||||
main_test.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .wasi });
|
main_test.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .wasi });
|
||||||
main_test.addOptions("build_options", exe_options);
|
main_test.addOptions("build_options", exe_options);
|
||||||
|
main_test.addPackage(js.pkg);
|
||||||
test_step.dependOn(&main_test.step);
|
test_step.dependOn(&main_test.step);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ pub fn clear(self: *Atlas) void {
|
|||||||
pub const Wasm = struct {
|
pub const Wasm = struct {
|
||||||
// If you're copying this file (Atlas.zig) out to a separate project,
|
// If you're copying this file (Atlas.zig) out to a separate project,
|
||||||
// just replace this with the allocator you want to use.
|
// just replace this with the allocator you want to use.
|
||||||
const wasm = @import("../wasm.zig");
|
const wasm = @import("../os/wasm.zig");
|
||||||
const alloc = wasm.alloc;
|
const alloc = wasm.alloc;
|
||||||
|
|
||||||
export fn atlas_new(size: u32, format: u8) ?*Atlas {
|
export fn atlas_new(size: u32, format: u8) ?*Atlas {
|
||||||
|
@ -73,7 +73,7 @@ pub const Face = struct {
|
|||||||
|
|
||||||
/// The wasm-compatible API.
|
/// The wasm-compatible API.
|
||||||
pub const Wasm = struct {
|
pub const Wasm = struct {
|
||||||
const wasm = @import("../../wasm.zig");
|
const wasm = @import("../../os/wasm.zig");
|
||||||
const alloc = wasm.alloc;
|
const alloc = wasm.alloc;
|
||||||
|
|
||||||
export fn face_new(ptr: [*]const u8, len: usize, pts: u16) ?*Face {
|
export fn face_new(ptr: [*]const u8, len: usize, pts: u16) ?*Face {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
// This is the main file for the WASM module. The WASM module has to
|
// This is the main file for the WASM module. The WASM module has to
|
||||||
// export a C ABI compatible API.
|
// export a C ABI compatible API.
|
||||||
|
|
||||||
pub usingnamespace @import("wasm.zig");
|
pub usingnamespace @import("os/wasm.zig");
|
||||||
|
pub usingnamespace @import("os/wasm/log.zig");
|
||||||
pub usingnamespace @import("font/main.zig");
|
pub usingnamespace @import("font/main.zig");
|
||||||
|
27
src/os/wasm/log.zig
Normal file
27
src/os/wasm/log.zig
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
const std = @import("std");
|
||||||
|
const builtin = @import("builtin");
|
||||||
|
const wasm = @import("../wasm.zig");
|
||||||
|
|
||||||
|
// The function std.log will call.
|
||||||
|
pub fn log(
|
||||||
|
comptime level: std.log.Level,
|
||||||
|
comptime scope: @TypeOf(.EnumLiteral),
|
||||||
|
comptime format: []const u8,
|
||||||
|
args: anytype,
|
||||||
|
) void {
|
||||||
|
// Build the string
|
||||||
|
const level_txt = comptime level.asText();
|
||||||
|
const prefix = if (scope == .default) ": " else "(" ++ @tagName(scope) ++ "): ";
|
||||||
|
const txt = level_txt ++ prefix ++ format;
|
||||||
|
const str = nosuspend std.fmt.allocPrint(wasm.alloc, txt, args) catch return;
|
||||||
|
defer wasm.alloc.free(str);
|
||||||
|
|
||||||
|
// Send it over to the JS side
|
||||||
|
JS.log(str.ptr, str.len);
|
||||||
|
}
|
||||||
|
|
||||||
|
// We wrap our externs in this namespace so we can reuse symbols, otherwise
|
||||||
|
// "log" would collide.
|
||||||
|
const JS = struct {
|
||||||
|
extern "env" fn log(ptr: [*]const u8, len: usize) void;
|
||||||
|
};
|
Reference in New Issue
Block a user