@thi.ng/wasm-api 1.4.10 → 1.4.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Change Log
2
2
 
3
- - **Last updated**: 2023-06-29T07:13:03Z
3
+ - **Last updated**: 2023-06-29T08:54:28Z
4
4
  - **Generator**: [thi.ng/monopub](https://thi.ng/monopub)
5
5
 
6
6
  All notable changes to this project will be documented in this file.
package/README.md CHANGED
@@ -349,7 +349,7 @@ via this script. **Please find more details/options in the commented source
349
349
  code:**
350
350
 
351
351
  - [`/zig/build.zig`](https://github.com/thi-ng/umbrella/blob/develop/packages/wasm-api/zig/build.zig)
352
- - [`/zig/build-v0.11.zig`](https://github.com/thi-ng/umbrella/blob/develop/packages/wasm-api/zig/build-v0.11.zig)
352
+ - [`/zig/build-v0.10.zig`](https://github.com/thi-ng/umbrella/blob/develop/packages/wasm-api/zig/build-v0.10.zig)
353
353
 
354
354
  ## Naming & structural conventions
355
355
 
@@ -472,7 +472,7 @@ folder):
472
472
  zig build-lib \
473
473
  --pkg-begin wasm-api node_modules/@thi.ng/wasm-api/zig/lib.zig --pkg-end \
474
474
  -target wasm32-freestanding \
475
- -O ReleaseSmall -dynamic \
475
+ -O ReleaseSmall -dynamic -rdynamic \
476
476
  hello.zig
477
477
 
478
478
  # disassemble WASM
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thi.ng/wasm-api",
3
- "version": "1.4.10",
3
+ "version": "1.4.11",
4
4
  "description": "Generic, modular, extensible API bridge and infrastructure for hybrid JS & WebAssembly projects",
5
5
  "type": "module",
6
6
  "module": "./index.js",
@@ -115,5 +115,5 @@
115
115
  "status": "alpha",
116
116
  "year": 2022
117
117
  },
118
- "gitHead": "3d1983910b6b04ac1d371820625767377f65074d\n"
118
+ "gitHead": "b363e93fb1b9e754957309ab582bba16b8e187ca\n"
119
119
  }
@@ -0,0 +1,141 @@
1
+ //! DEPRECATED build helpers for using modules/packages distributed via NPM
2
+ //! Intended for use with https://thi.ng/wasm-api and support packages
3
+ //!
4
+ //! This version of the script is only compatible with Zig v0.10.1 or older
5
+ //! Use build-v0.11.zig (in this same directory) for newer Zig versions
6
+
7
+ const std = @import("std");
8
+
9
+ /// Definition for a (usually hybrid) Zig package which will be distributed via NPM
10
+ pub const Pkg = struct {
11
+ /// Package ID used for @import
12
+ id: []const u8,
13
+ /// Package sub path (appended to base path)
14
+ path: []const u8,
15
+ /// Package dependencies aka other package IDs.
16
+ /// All of them must already have been registered
17
+ deps: ?[]const []const u8 = null,
18
+ };
19
+
20
+ pub const PkgOpts = struct {
21
+ /// Base path to common node_modules directory under which
22
+ /// all to be imported packages are located
23
+ base: []const u8 = "node_modules",
24
+ /// Additional WASM API support packages.
25
+ /// We don't need to specify core wasmapi, only custom/extra ones
26
+ /// `wasm-api` and `wasm-api-bindgen` are also auto-added
27
+ /// as dependency for each of these...
28
+ packages: ?[]const Pkg = null,
29
+ };
30
+
31
+ /// Dependency graph for WASM API packages
32
+ /// Expands & resolves the more compact/convenient/human friendly format of PkgOpts
33
+ /// into the data structures used by Zig's build system
34
+ /// Provides a `addAllTo()` function to add all declared packages to a build step
35
+ pub const PkgGraph = struct {
36
+ arena: std.heap.ArenaAllocator,
37
+ basePath: []const u8,
38
+ packages: std.StringArrayHashMap(std.build.Pkg),
39
+
40
+ const Self = @This();
41
+
42
+ pub fn init(opts: PkgOpts) Self {
43
+ var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
44
+ var self = Self{
45
+ .arena = arena,
46
+ .basePath = opts.base,
47
+ .packages = std.StringArrayHashMap(std.build.Pkg).init(arena.allocator()),
48
+ };
49
+ const api = "wasm-api";
50
+ self.packages.put(api, .{
51
+ .name = api,
52
+ .source = .{ .path = self.modulePath("@thi.ng/wasm-api/zig/lib.zig") },
53
+ }) catch unreachable;
54
+ const apiTypes = "wasm-api-bindgen";
55
+ self.packages.put(apiTypes, .{
56
+ .name = apiTypes,
57
+ .source = .{ .path = self.modulePath("@thi.ng/wasm-api-bindgen/zig/lib.zig") },
58
+ }) catch unreachable;
59
+ if (opts.packages) |pkgs| {
60
+ for (pkgs) |pkg| {
61
+ self.register(pkg.id, pkg.path, pkg.deps);
62
+ }
63
+ }
64
+ return self;
65
+ }
66
+
67
+ pub fn deinit(self: *const Self) void {
68
+ self.arena.deinit();
69
+ }
70
+
71
+ /// Registers a single package and its deps (also injects core wasm-api deps)
72
+ pub fn register(
73
+ self: *Self,
74
+ name: []const u8,
75
+ path: []const u8,
76
+ dependencies: ?[]const []const u8,
77
+ ) void {
78
+ var pkg = std.build.Pkg{
79
+ .name = name,
80
+ .source = .{ .path = self.modulePath(path) },
81
+ };
82
+ const num = if (dependencies) |deps| deps.len else 0;
83
+ var dpkgs = self.arena.allocator().alloc(std.build.Pkg, num + 2) catch unreachable;
84
+ dpkgs[0] = if (self.packages.get("wasm-api")) |p| p else unreachable;
85
+ dpkgs[1] = if (self.packages.get("wasm-api-bindgen")) |p| p else unreachable;
86
+ if (dependencies) |deps| {
87
+ var i: usize = 0;
88
+ while (i < deps.len) : (i += 1) {
89
+ if (self.packages.get(deps[i])) |p| {
90
+ dpkgs[i + 1] = p;
91
+ } else @panic("unknown dependency");
92
+ }
93
+ }
94
+ pkg.dependencies = dpkgs;
95
+ self.packages.put(name, pkg) catch unreachable;
96
+ }
97
+
98
+ /// Adds all registered packages to the given build step
99
+ pub fn addAllTo(self: *const Self, step: *std.build.LibExeObjStep) void {
100
+ for (self.packages.values()) |pkg| step.addPackage(pkg);
101
+ }
102
+
103
+ fn modulePath(self: *Self, path: []const u8) []const u8 {
104
+ return std.fs.path.join(self.arena.allocator(), &.{ self.basePath, path }) catch unreachable;
105
+ }
106
+ };
107
+
108
+ /// Config options
109
+ pub const WasmLibOpts = struct {
110
+ /// Relative path to base directory for WASM API packages
111
+ base: []const u8 = "node_modules",
112
+ /// Relative path to root source file
113
+ root: []const u8 = "zig/main.zig",
114
+ /// Relative path to output directory
115
+ out: []const u8 = "src",
116
+ /// Package definitions for additional WASM API modules
117
+ packages: ?[]const Pkg = null,
118
+ /// Build mode override (else allows config via CLI args)
119
+ mode: ?std.builtin.Mode = null,
120
+ /// Additional WASM target features, e.g. `.simd128` to enable SIMD
121
+ features: ?[]const std.Target.wasm.Feature = null,
122
+ };
123
+
124
+ /// Creates and returns a build step to build a dynamic WASM library, configured
125
+ /// with given options and package declarations. The given package specs will be inserted
126
+ pub fn wasmLib(b: *std.build.Builder, opts: WasmLibOpts) *std.build.LibExeObjStep {
127
+ const lib = b.addSharedLibrary("main", opts.root, .unversioned);
128
+ lib.setTarget(.{
129
+ .cpu_arch = .wasm32,
130
+ .os_tag = .freestanding,
131
+ .cpu_features_add = if (opts.features) |features| std.Target.wasm.featureSet(features) else std.Target.Cpu.Feature.Set.empty,
132
+ });
133
+ const mode = if (opts.mode) |m| m else b.standardReleaseOptions();
134
+ lib.setBuildMode(mode);
135
+ if (mode == .ReleaseSmall or mode == .ReleaseFast) lib.strip = true;
136
+ const pkgs = PkgGraph.init(.{ .base = opts.base, .packages = opts.packages });
137
+ defer pkgs.deinit();
138
+ pkgs.addAllTo(lib);
139
+ lib.setOutputDir(opts.out);
140
+ return lib;
141
+ }
package/zig/build.zig CHANGED
@@ -1,141 +1,132 @@
1
1
  //! Build helpers for using modules/packages distributed via NPM
2
2
  //! Intended for use with https://thi.ng/wasm-api and support packages
3
3
  //!
4
- //! This version of the script is only compatible with Zig v0.10.1 or older
5
- //! Use build-v0.11.zig (in this same directory) for newer Zig versions
4
+ //! This version of the script is only compatible with:
5
+ //! Zig v0.11.0-dev.2266+49e33a2f2 or newer
6
+ //!
7
+ //! Use build.zig (in this same directory) for earlier Zig versions
6
8
 
7
9
  const std = @import("std");
8
-
9
- /// Definition for a (usually hybrid) Zig package which will be distributed via NPM
10
- pub const Pkg = struct {
11
- /// Package ID used for @import
12
- id: []const u8,
13
- /// Package sub path (appended to base path)
14
- path: []const u8,
15
- /// Package dependencies aka other package IDs.
16
- /// All of them must already have been registered
17
- deps: ?[]const []const u8 = null,
18
- };
19
-
20
- pub const PkgOpts = struct {
21
- /// Base path to common node_modules directory under which
22
- /// all to be imported packages are located
23
- base: []const u8 = "node_modules",
24
- /// Additional WASM API support packages.
25
- /// We don't need to specify core wasmapi, only custom/extra ones
26
- /// `wasm-api` and `wasm-api-bindgen` are also auto-added
27
- /// as dependency for each of these...
28
- packages: ?[]const Pkg = null,
29
- };
30
-
31
- /// Dependency graph for WASM API packages
32
- /// Expands & resolves the more compact/convenient/human friendly format of PkgOpts
33
- /// into the data structures used by Zig's build system
34
- /// Provides a `addAllTo()` function to add all declared packages to a build step
35
- pub const PkgGraph = struct {
36
- arena: std.heap.ArenaAllocator,
37
- basePath: []const u8,
38
- packages: std.StringArrayHashMap(std.build.Pkg),
39
-
40
- const Self = @This();
41
-
42
- pub fn init(opts: PkgOpts) Self {
43
- var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
44
- var self = Self{
45
- .arena = arena,
46
- .basePath = opts.base,
47
- .packages = std.StringArrayHashMap(std.build.Pkg).init(arena.allocator()),
48
- };
49
- const api = "wasm-api";
50
- self.packages.put(api, .{
51
- .name = api,
52
- .source = .{ .path = self.modulePath("@thi.ng/wasm-api/zig/lib.zig") },
53
- }) catch unreachable;
54
- const apiTypes = "wasm-api-bindgen";
55
- self.packages.put(apiTypes, .{
56
- .name = apiTypes,
57
- .source = .{ .path = self.modulePath("@thi.ng/wasm-api-bindgen/zig/lib.zig") },
58
- }) catch unreachable;
59
- if (opts.packages) |pkgs| {
60
- for (pkgs) |pkg| {
61
- self.register(pkg.id, pkg.path, pkg.deps);
62
- }
63
- }
64
- return self;
65
- }
66
-
67
- pub fn deinit(self: *const Self) void {
68
- self.arena.deinit();
69
- }
70
-
71
- /// Registers a single package and its deps (also injects core wasm-api deps)
72
- pub fn register(
73
- self: *Self,
74
- name: []const u8,
75
- path: []const u8,
76
- dependencies: ?[]const []const u8,
77
- ) void {
78
- var pkg = std.build.Pkg{
79
- .name = name,
80
- .source = .{ .path = self.modulePath(path) },
81
- };
82
- const num = if (dependencies) |deps| deps.len else 0;
83
- var dpkgs = self.arena.allocator().alloc(std.build.Pkg, num + 2) catch unreachable;
84
- dpkgs[0] = if (self.packages.get("wasm-api")) |p| p else unreachable;
85
- dpkgs[1] = if (self.packages.get("wasm-api-bindgen")) |p| p else unreachable;
86
- if (dependencies) |deps| {
87
- var i: usize = 0;
88
- while (i < deps.len) : (i += 1) {
89
- if (self.packages.get(deps[i])) |p| {
90
- dpkgs[i + 1] = p;
91
- } else @panic("unknown dependency");
92
- }
93
- }
94
- pkg.dependencies = dpkgs;
95
- self.packages.put(name, pkg) catch unreachable;
96
- }
97
-
98
- /// Adds all registered packages to the given build step
99
- pub fn addAllTo(self: *const Self, step: *std.build.LibExeObjStep) void {
100
- for (self.packages.values()) |pkg| step.addPackage(pkg);
101
- }
102
-
103
- fn modulePath(self: *Self, path: []const u8) []const u8 {
104
- return std.fs.path.join(self.arena.allocator(), &.{ self.basePath, path }) catch unreachable;
105
- }
106
- };
10
+ const Build = std.Build;
107
11
 
108
12
  /// Config options
109
13
  pub const WasmLibOpts = struct {
110
- /// Relative path to base directory for WASM API packages
14
+ /// Base path to common node_modules directory under which
15
+ /// all to be imported modules are located
111
16
  base: []const u8 = "node_modules",
112
17
  /// Relative path to root source file
113
18
  root: []const u8 = "zig/main.zig",
114
- /// Relative path to output directory
19
+ /// CURRENTLY UNUSED - Relative path to output directory
115
20
  out: []const u8 = "src",
116
- /// Package definitions for additional WASM API modules
117
- packages: ?[]const Pkg = null,
21
+ /// Additional WASM API support modules.
22
+ /// Only need to specify custom/extra modules
23
+ /// `wasm-api` and `wasm-api-bindgen` are auto-added as dependency for all...
24
+ modules: ?[]const ModuleSpec = null,
118
25
  /// Build mode override (else allows config via CLI args)
119
- mode: ?std.builtin.Mode = null,
26
+ optimize: ?std.builtin.Mode = null,
120
27
  /// Additional WASM target features, e.g. `.simd128` to enable SIMD
121
28
  features: ?[]const std.Target.wasm.Feature = null,
29
+ /// Initial memory (in bytes, MUST be multiple of 0x10000)
30
+ initialMemory: ?u64 = null,
31
+ /// Max memory (in bytes, MUST be multiple of 0x10000)
32
+ maxMemory: ?u64 = null,
33
+ /// If true, build will also generate docs
34
+ docs: bool = false,
35
+ };
36
+
37
+ /// WASM API sub-module declaration
38
+ pub const ModuleSpec = struct {
39
+ /// module import name/ID
40
+ name: []const u8,
41
+ /// Relative path to configured base path
42
+ path: []const u8,
43
+ /// Module IDs of other modules this module depends on
44
+ /// Only need to specify custom/extra modules
45
+ /// `wasm-api` and `wasm-api-bindgen` are auto-added as dependency for all...
46
+ dependencies: ?[]const []const u8 = null,
122
47
  };
123
48
 
49
+ const wasmapi = "wasm-api";
50
+ const wasmbind = "wasm-api-bindgen";
51
+
124
52
  /// Creates and returns a build step to build a dynamic WASM library, configured
125
53
  /// with given options and package declarations. The given package specs will be inserted
126
- pub fn wasmLib(b: *std.build.Builder, opts: WasmLibOpts) *std.build.LibExeObjStep {
127
- const lib = b.addSharedLibrary("main", opts.root, .unversioned);
128
- lib.setTarget(.{
129
- .cpu_arch = .wasm32,
130
- .os_tag = .freestanding,
131
- .cpu_features_add = if (opts.features) |features| std.Target.wasm.featureSet(features) else std.Target.Cpu.Feature.Set.empty,
54
+ pub fn wasmLib(b: *Build, opts: WasmLibOpts) *Build.Step.Compile {
55
+ const lib = b.addSharedLibrary(.{
56
+ .name = "main",
57
+ .root_source_file = .{ .path = opts.root },
58
+ .target = .{
59
+ .cpu_arch = .wasm32,
60
+ .os_tag = .freestanding,
61
+ .cpu_features_add = if (opts.features) |features| std.Target.wasm.featureSet(features) else std.Target.Cpu.Feature.Set.empty,
62
+ },
63
+ .optimize = if (opts.optimize) |m| m else b.standardOptimizeOption(.{}),
132
64
  });
133
- const mode = if (opts.mode) |m| m else b.standardReleaseOptions();
134
- lib.setBuildMode(mode);
135
- if (mode == .ReleaseSmall or mode == .ReleaseFast) lib.strip = true;
136
- const pkgs = PkgGraph.init(.{ .base = opts.base, .packages = opts.packages });
137
- defer pkgs.deinit();
138
- pkgs.addAllTo(lib);
139
- lib.setOutputDir(opts.out);
65
+ if (lib.optimize == .ReleaseSmall or lib.optimize == .ReleaseFast) lib.strip = true;
66
+
67
+ // FIXME re-enable once workaround has been identified
68
+ // lib.setOutputDir(opts.out);
69
+
70
+ // build flags
71
+ lib.rdynamic = true;
72
+ lib.import_symbols = true;
73
+ lib.initial_memory = opts.initialMemory;
74
+ lib.max_memory = opts.maxMemory;
75
+ if (opts.docs) lib.emit_docs = .emit;
76
+
77
+ // add default dependencies
78
+ lib.addModule(
79
+ wasmapi,
80
+ b.createModule(.{
81
+ .source_file = modulePath(b.allocator, opts.base, "@thi.ng/wasm-api/zig/lib.zig"),
82
+ }),
83
+ );
84
+ lib.addModule(
85
+ wasmbind,
86
+ b.createModule(.{
87
+ .source_file = modulePath(b.allocator, opts.base, "@thi.ng/wasm-api-bindgen/zig/lib.zig"),
88
+ }),
89
+ );
90
+ if (opts.modules) |modules| {
91
+ for (modules) |mod| {
92
+ register(lib, mod, opts);
93
+ }
94
+ }
140
95
  return lib;
141
96
  }
97
+
98
+ /// Registers a single package and its deps (also injects core wasm-api deps)
99
+ pub fn register(step: *Build.CompileStep, mod: ModuleSpec, opts: WasmLibOpts) void {
100
+ const num = if (mod.dependencies) |ids| ids.len else 0;
101
+ var dpkgs = step.step.owner.allocator.alloc(Build.ModuleDependency, num + 2) catch unreachable;
102
+ dpkgs[0] = if (step.modules.get(wasmapi)) |m| .{ .name = wasmapi, .module = m } else unreachable;
103
+ dpkgs[1] = if (step.modules.get(wasmbind)) |m| .{ .name = wasmbind, .module = m } else unreachable;
104
+ var i: usize = 2;
105
+ if (mod.dependencies) |ids| {
106
+ for (ids) |id| {
107
+ if (step.modules.get(id)) |m| {
108
+ if (isDuplicateId(dpkgs[0..i], id)) {
109
+ std.log.info("ignoring duplicate dependency: {s}", .{id});
110
+ continue;
111
+ }
112
+ dpkgs[i] = .{ .name = id, .module = m };
113
+ i += 1;
114
+ } else @panic("unknown dependency");
115
+ }
116
+ }
117
+ step.addModule(mod.name, step.step.owner.createModule(.{
118
+ .source_file = modulePath(step.step.owner.allocator, opts.base, mod.path),
119
+ .dependencies = dpkgs[0..i],
120
+ }));
121
+ }
122
+
123
+ fn isDuplicateId(deps: []Build.ModuleDependency, name: []const u8) bool {
124
+ for (deps) |d| {
125
+ if (std.mem.eql(u8, d.name, name)) return true;
126
+ }
127
+ return false;
128
+ }
129
+
130
+ fn modulePath(allocator: std.mem.Allocator, base: []const u8, path: []const u8) Build.FileSource {
131
+ return .{ .path = std.fs.path.join(allocator, &.{ base, path }) catch unreachable };
132
+ }
@@ -1,131 +0,0 @@
1
- //! Build helpers for using modules/packages distributed via NPM
2
- //! Intended for use with https://thi.ng/wasm-api and support packages
3
- //!
4
- //! This version of the script is only compatible with:
5
- //! Zig v0.11.0-dev.2266+49e33a2f2 or newer
6
- //!
7
- //! Use build.zig (in this same directory) for earlier Zig versions
8
-
9
- const std = @import("std");
10
- const Build = std.Build;
11
-
12
- /// Config options
13
- pub const WasmLibOpts = struct {
14
- /// Base path to common node_modules directory under which
15
- /// all to be imported modules are located
16
- base: []const u8 = "node_modules",
17
- /// Relative path to root source file
18
- root: []const u8 = "zig/main.zig",
19
- /// CURRENTLY UNUSED - Relative path to output directory
20
- out: []const u8 = "src",
21
- /// Additional WASM API support modules.
22
- /// Only need to specify custom/extra modules
23
- /// `wasm-api` and `wasm-api-bindgen` are auto-added as dependency for all...
24
- modules: ?[]const ModuleSpec = null,
25
- /// Build mode override (else allows config via CLI args)
26
- optimize: ?std.builtin.Mode = null,
27
- /// Additional WASM target features, e.g. `.simd128` to enable SIMD
28
- features: ?[]const std.Target.wasm.Feature = null,
29
- /// Initial memory (in bytes, MUST be multiple of 0x10000)
30
- initialMemory: ?u64 = null,
31
- /// Max memory (in bytes, MUST be multiple of 0x10000)
32
- maxMemory: ?u64 = null,
33
- /// If true, build will also generate docs
34
- docs: bool = false,
35
- };
36
-
37
- /// WASM API sub-module declaration
38
- pub const ModuleSpec = struct {
39
- /// module import name/ID
40
- name: []const u8,
41
- /// Relative path to configured base path
42
- path: []const u8,
43
- /// Module IDs of other modules this module depends on
44
- /// Only need to specify custom/extra modules
45
- /// `wasm-api` and `wasm-api-bindgen` are auto-added as dependency for all...
46
- dependencies: ?[]const []const u8 = null,
47
- };
48
-
49
- const wasmapi = "wasm-api";
50
- const wasmbind = "wasm-api-bindgen";
51
-
52
- /// Creates and returns a build step to build a dynamic WASM library, configured
53
- /// with given options and package declarations. The given package specs will be inserted
54
- pub fn wasmLib(b: *Build, opts: WasmLibOpts) *Build.CompileStep {
55
- const lib = b.addSharedLibrary(.{
56
- .name = "main",
57
- .root_source_file = .{ .path = opts.root },
58
- .target = .{
59
- .cpu_arch = .wasm32,
60
- .os_tag = .freestanding,
61
- .cpu_features_add = if (opts.features) |features| std.Target.wasm.featureSet(features) else std.Target.Cpu.Feature.Set.empty,
62
- },
63
- .optimize = if (opts.optimize) |m| m else b.standardOptimizeOption(.{}),
64
- });
65
- if (lib.optimize == .ReleaseSmall or lib.optimize == .ReleaseFast) lib.strip = true;
66
-
67
- // FIXME re-enable once workaround has been identified
68
- // lib.setOutputDir(opts.out);
69
-
70
- // build flags
71
- lib.rdynamic = true;
72
- lib.import_symbols = true;
73
- lib.initial_memory = opts.initialMemory;
74
- lib.max_memory = opts.maxMemory;
75
- if (opts.docs) lib.emit_docs = .emit;
76
- // add default dependencies
77
- lib.addModule(
78
- wasmapi,
79
- b.createModule(.{
80
- .source_file = modulePath(b.allocator, opts.base, "@thi.ng/wasm-api/zig/lib.zig"),
81
- }),
82
- );
83
- lib.addModule(
84
- wasmbind,
85
- b.createModule(.{
86
- .source_file = modulePath(b.allocator, opts.base, "@thi.ng/wasm-api-bindgen/zig/lib.zig"),
87
- }),
88
- );
89
- if (opts.modules) |modules| {
90
- for (modules) |mod| {
91
- register(lib, mod, opts);
92
- }
93
- }
94
- return lib;
95
- }
96
-
97
- /// Registers a single package and its deps (also injects core wasm-api deps)
98
- pub fn register(step: *Build.CompileStep, mod: ModuleSpec, opts: WasmLibOpts) void {
99
- const num = if (mod.dependencies) |ids| ids.len else 0;
100
- var dpkgs = step.step.owner.allocator.alloc(Build.ModuleDependency, num + 2) catch unreachable;
101
- dpkgs[0] = if (step.modules.get(wasmapi)) |m| .{ .name = wasmapi, .module = m } else unreachable;
102
- dpkgs[1] = if (step.modules.get(wasmbind)) |m| .{ .name = wasmbind, .module = m } else unreachable;
103
- var i: usize = 2;
104
- if (mod.dependencies) |ids| {
105
- for (ids) |id| {
106
- if (step.modules.get(id)) |m| {
107
- if (isDuplicateId(dpkgs[0..i], id)) {
108
- std.log.info("ignoring duplicate dependency: {s}", .{id});
109
- continue;
110
- }
111
- dpkgs[i] = .{ .name = id, .module = m };
112
- i += 1;
113
- } else @panic("unknown dependency");
114
- }
115
- }
116
- step.addModule(mod.name, step.step.owner.createModule(.{
117
- .source_file = modulePath(step.step.owner.allocator, opts.base, mod.path),
118
- .dependencies = dpkgs[0..i],
119
- }));
120
- }
121
-
122
- fn isDuplicateId(deps: []Build.ModuleDependency, name: []const u8) bool {
123
- for (deps) |d| {
124
- if (std.mem.eql(u8, d.name, name)) return true;
125
- }
126
- return false;
127
- }
128
-
129
- fn modulePath(allocator: std.mem.Allocator, base: []const u8, path: []const u8) Build.FileSource {
130
- return .{ .path = std.fs.path.join(allocator, &.{ base, path }) catch unreachable };
131
- }
File without changes
@@ -1,4 +0,0 @@
1
- pub const imports = struct {
2
- };
3
- pub const build_root = struct {
4
- };
@@ -1,115 +0,0 @@
1
- const std = @import("std");
2
- /// Zig version. When writing code that supports multiple versions of Zig, prefer
3
- /// feature detection (i.e. with `@hasDecl` or `@hasField`) over version checks.
4
- pub const zig_version = std.SemanticVersion.parse(zig_version_string) catch unreachable;
5
- pub const zig_version_string = "0.11.0-dev.3857+7322aa118";
6
- pub const zig_backend = std.builtin.CompilerBackend.stage2_llvm;
7
-
8
- pub const output_mode = std.builtin.OutputMode.Exe;
9
- pub const link_mode = std.builtin.LinkMode.Dynamic;
10
- pub const is_test = false;
11
- pub const single_threaded = false;
12
- pub const abi = std.Target.Abi.none;
13
- pub const cpu: std.Target.Cpu = .{
14
- .arch = .aarch64,
15
- .model = &std.Target.aarch64.cpu.apple_a14,
16
- .features = std.Target.aarch64.featureSet(&[_]std.Target.aarch64.Feature{
17
- .aes,
18
- .aggressive_fma,
19
- .alternate_sextload_cvt_f32_pattern,
20
- .altnzcv,
21
- .am,
22
- .arith_bcc_fusion,
23
- .arith_cbz_fusion,
24
- .ccdp,
25
- .ccidx,
26
- .ccpp,
27
- .complxnum,
28
- .contextidr_el2,
29
- .crc,
30
- .crypto,
31
- .disable_latency_sched_heuristic,
32
- .dit,
33
- .dotprod,
34
- .el2vmsa,
35
- .el3,
36
- .flagm,
37
- .fp16fml,
38
- .fp_armv8,
39
- .fptoint,
40
- .fullfp16,
41
- .fuse_address,
42
- .fuse_adrp_add,
43
- .fuse_aes,
44
- .fuse_arith_logic,
45
- .fuse_crypto_eor,
46
- .fuse_csel,
47
- .fuse_literals,
48
- .jsconv,
49
- .lor,
50
- .lse,
51
- .lse2,
52
- .mpam,
53
- .neon,
54
- .nv,
55
- .pan,
56
- .pan_rwv,
57
- .pauth,
58
- .perfmon,
59
- .predres,
60
- .ras,
61
- .rcpc,
62
- .rcpc_immo,
63
- .rdm,
64
- .sb,
65
- .sel2,
66
- .sha2,
67
- .sha3,
68
- .specrestrict,
69
- .ssbs,
70
- .tlb_rmi,
71
- .tracev8_4,
72
- .uaops,
73
- .v8_1a,
74
- .v8_2a,
75
- .v8_3a,
76
- .v8_4a,
77
- .v8a,
78
- .vh,
79
- .zcm,
80
- .zcz,
81
- .zcz_gp,
82
- }),
83
- };
84
- pub const os = std.Target.Os{
85
- .tag = .macos,
86
- .version_range = .{ .semver = .{
87
- .min = .{
88
- .major = 13,
89
- .minor = 3,
90
- .patch = 1,
91
- },
92
- .max = .{
93
- .major = 13,
94
- .minor = 3,
95
- .patch = 1,
96
- },
97
- }},
98
- };
99
- pub const target = std.Target{
100
- .cpu = cpu,
101
- .os = os,
102
- .abi = abi,
103
- .ofmt = object_format,
104
- };
105
- pub const object_format = std.Target.ObjectFormat.macho;
106
- pub const mode = std.builtin.Mode.Debug;
107
- pub const link_libc = true;
108
- pub const link_libcpp = false;
109
- pub const have_error_return_tracing = true;
110
- pub const valgrind_support = false;
111
- pub const sanitize_thread = false;
112
- pub const position_independent_code = true;
113
- pub const position_independent_executable = true;
114
- pub const strip_debug_info = false;
115
- pub const code_model = std.builtin.CodeModel.default;
@@ -1,115 +0,0 @@
1
- const std = @import("std");
2
- /// Zig version. When writing code that supports multiple versions of Zig, prefer
3
- /// feature detection (i.e. with `@hasDecl` or `@hasField`) over version checks.
4
- pub const zig_version = std.SemanticVersion.parse(zig_version_string) catch unreachable;
5
- pub const zig_version_string = "0.11.0-dev.2271+3a7fe0d01";
6
- pub const zig_backend = std.builtin.CompilerBackend.stage2_llvm;
7
-
8
- pub const output_mode = std.builtin.OutputMode.Exe;
9
- pub const link_mode = std.builtin.LinkMode.Dynamic;
10
- pub const is_test = false;
11
- pub const single_threaded = false;
12
- pub const abi = std.Target.Abi.none;
13
- pub const cpu: std.Target.Cpu = .{
14
- .arch = .aarch64,
15
- .model = &std.Target.aarch64.cpu.apple_a14,
16
- .features = std.Target.aarch64.featureSet(&[_]std.Target.aarch64.Feature{
17
- .aes,
18
- .aggressive_fma,
19
- .alternate_sextload_cvt_f32_pattern,
20
- .altnzcv,
21
- .am,
22
- .arith_bcc_fusion,
23
- .arith_cbz_fusion,
24
- .ccdp,
25
- .ccidx,
26
- .ccpp,
27
- .complxnum,
28
- .contextidr_el2,
29
- .crc,
30
- .crypto,
31
- .disable_latency_sched_heuristic,
32
- .dit,
33
- .dotprod,
34
- .el2vmsa,
35
- .el3,
36
- .flagm,
37
- .fp16fml,
38
- .fp_armv8,
39
- .fptoint,
40
- .fullfp16,
41
- .fuse_address,
42
- .fuse_adrp_add,
43
- .fuse_aes,
44
- .fuse_arith_logic,
45
- .fuse_crypto_eor,
46
- .fuse_csel,
47
- .fuse_literals,
48
- .jsconv,
49
- .lor,
50
- .lse,
51
- .lse2,
52
- .mpam,
53
- .neon,
54
- .nv,
55
- .pan,
56
- .pan_rwv,
57
- .pauth,
58
- .perfmon,
59
- .predres,
60
- .ras,
61
- .rcpc,
62
- .rcpc_immo,
63
- .rdm,
64
- .sb,
65
- .sel2,
66
- .sha2,
67
- .sha3,
68
- .specrestrict,
69
- .ssbs,
70
- .tlb_rmi,
71
- .tracev8_4,
72
- .uaops,
73
- .v8_1a,
74
- .v8_2a,
75
- .v8_3a,
76
- .v8_4a,
77
- .v8a,
78
- .vh,
79
- .zcm,
80
- .zcz,
81
- .zcz_gp,
82
- }),
83
- };
84
- pub const os = std.Target.Os{
85
- .tag = .macos,
86
- .version_range = .{ .semver = .{
87
- .min = .{
88
- .major = 12,
89
- .minor = 6,
90
- .patch = 0,
91
- },
92
- .max = .{
93
- .major = 12,
94
- .minor = 6,
95
- .patch = 0,
96
- },
97
- }},
98
- };
99
- pub const target = std.Target{
100
- .cpu = cpu,
101
- .os = os,
102
- .abi = abi,
103
- .ofmt = object_format,
104
- };
105
- pub const object_format = std.Target.ObjectFormat.macho;
106
- pub const mode = std.builtin.Mode.Debug;
107
- pub const link_libc = true;
108
- pub const link_libcpp = false;
109
- pub const have_error_return_tracing = true;
110
- pub const valgrind_support = false;
111
- pub const sanitize_thread = false;
112
- pub const position_independent_code = true;
113
- pub const position_independent_executable = true;
114
- pub const strip_debug_info = false;
115
- pub const code_model = std.builtin.CodeModel.default;
@@ -1,115 +0,0 @@
1
- const std = @import("std");
2
- /// Zig version. When writing code that supports multiple versions of Zig, prefer
3
- /// feature detection (i.e. with `@hasDecl` or `@hasField`) over version checks.
4
- pub const zig_version = std.SemanticVersion.parse(zig_version_string) catch unreachable;
5
- pub const zig_version_string = "0.11.0-dev.2460+55a8b7e1f";
6
- pub const zig_backend = std.builtin.CompilerBackend.stage2_llvm;
7
-
8
- pub const output_mode = std.builtin.OutputMode.Exe;
9
- pub const link_mode = std.builtin.LinkMode.Dynamic;
10
- pub const is_test = false;
11
- pub const single_threaded = false;
12
- pub const abi = std.Target.Abi.none;
13
- pub const cpu: std.Target.Cpu = .{
14
- .arch = .aarch64,
15
- .model = &std.Target.aarch64.cpu.apple_a14,
16
- .features = std.Target.aarch64.featureSet(&[_]std.Target.aarch64.Feature{
17
- .aes,
18
- .aggressive_fma,
19
- .alternate_sextload_cvt_f32_pattern,
20
- .altnzcv,
21
- .am,
22
- .arith_bcc_fusion,
23
- .arith_cbz_fusion,
24
- .ccdp,
25
- .ccidx,
26
- .ccpp,
27
- .complxnum,
28
- .contextidr_el2,
29
- .crc,
30
- .crypto,
31
- .disable_latency_sched_heuristic,
32
- .dit,
33
- .dotprod,
34
- .el2vmsa,
35
- .el3,
36
- .flagm,
37
- .fp16fml,
38
- .fp_armv8,
39
- .fptoint,
40
- .fullfp16,
41
- .fuse_address,
42
- .fuse_adrp_add,
43
- .fuse_aes,
44
- .fuse_arith_logic,
45
- .fuse_crypto_eor,
46
- .fuse_csel,
47
- .fuse_literals,
48
- .jsconv,
49
- .lor,
50
- .lse,
51
- .lse2,
52
- .mpam,
53
- .neon,
54
- .nv,
55
- .pan,
56
- .pan_rwv,
57
- .pauth,
58
- .perfmon,
59
- .predres,
60
- .ras,
61
- .rcpc,
62
- .rcpc_immo,
63
- .rdm,
64
- .sb,
65
- .sel2,
66
- .sha2,
67
- .sha3,
68
- .specrestrict,
69
- .ssbs,
70
- .tlb_rmi,
71
- .tracev8_4,
72
- .uaops,
73
- .v8_1a,
74
- .v8_2a,
75
- .v8_3a,
76
- .v8_4a,
77
- .v8a,
78
- .vh,
79
- .zcm,
80
- .zcz,
81
- .zcz_gp,
82
- }),
83
- };
84
- pub const os = std.Target.Os{
85
- .tag = .macos,
86
- .version_range = .{ .semver = .{
87
- .min = .{
88
- .major = 13,
89
- .minor = 3,
90
- .patch = 1,
91
- },
92
- .max = .{
93
- .major = 13,
94
- .minor = 3,
95
- .patch = 1,
96
- },
97
- }},
98
- };
99
- pub const target = std.Target{
100
- .cpu = cpu,
101
- .os = os,
102
- .abi = abi,
103
- .ofmt = object_format,
104
- };
105
- pub const object_format = std.Target.ObjectFormat.macho;
106
- pub const mode = std.builtin.Mode.Debug;
107
- pub const link_libc = true;
108
- pub const link_libcpp = false;
109
- pub const have_error_return_tracing = true;
110
- pub const valgrind_support = false;
111
- pub const sanitize_thread = false;
112
- pub const position_independent_code = true;
113
- pub const position_independent_executable = true;
114
- pub const strip_debug_info = false;
115
- pub const code_model = std.builtin.CodeModel.default;
@@ -1,4 +0,0 @@
1
- pub const imports = struct {
2
- };
3
- pub const build_root = struct {
4
- };
@@ -1,4 +0,0 @@
1
- pub const imports = struct {
2
- };
3
- pub const build_root = struct {
4
- };