Skip to content

Commit d591de9

Browse files
committed
only @cImport once to work around ziglang/zig#23963
1 parent 6140f48 commit d591de9

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

src/lib/bindings/node.zig

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,22 @@ const c = @cImport({
99
@cInclude("node_api.h");
1010
});
1111

12+
const Strong = if (@hasField(std.builtin.GlobalLinkage, "strong")) .strong else .Strong;
13+
14+
pub fn exports() type {
15+
@export(napi_register_module_v1, .{ .name = "napi_register_module_v1", .linkage = Strong });
16+
17+
return struct {};
18+
}
19+
20+
pub fn napi_register_module_v1(env: c.napi_env, exports_: c.napi_value) callconv(.C) c.napi_value {
21+
const properties = [_]c.napi_property_descriptor{
22+
js.Property.init("engine", .{ .value = register(env) }),
23+
};
24+
assert(c.napi_define_properties(env, exports_, properties.len, &properties) == c.napi_ok);
25+
return exports_;
26+
}
27+
1228
pub fn register(env: c.napi_env) c.napi_value {
1329
const object = js.Object.init(env);
1430
const properties = [_]c.napi_property_descriptor{

src/lib/node.zig

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,8 @@ const std = @import("std");
44

55
const assert = std.debug.assert;
66

7-
const c = @cImport({
8-
@cDefine("NAPI_VERSION", "8");
9-
@cInclude("node_api.h");
10-
});
7+
const exportable = @hasDecl(std.zig, "Zir") and !@hasField(std.zig.Zir.Inst.Tag, "export_value");
118

12-
export fn napi_register_module_v1(env: c.napi_env, exports: c.napi_value) c.napi_value {
13-
const properties = [_]c.napi_property_descriptor{
14-
js.Property.init("engine", .{ .value = node.register(env) }),
15-
};
16-
assert(c.napi_define_properties(env, exports, properties.len, &properties) == c.napi_ok);
17-
return exports;
18-
}
9+
usingnamespace if (exportable) struct {
10+
export const napi_register_module_v1 = node.napi_register_module_v1;
11+
} else node.exports();

0 commit comments

Comments
 (0)