@@ -48,13 +48,13 @@ pub fn build(b: *std.Build) !void {
48
48
// compile and install
49
49
const bench = b .addExecutable (.{
50
50
.name = "zig-js-runtime-bench" ,
51
- .root_source_file = .{ . path = "src/main_bench.zig" } ,
51
+ .root_source_file = b . path ( "src/main_bench.zig" ) ,
52
52
.single_threaded = true ,
53
53
.target = target ,
54
54
.optimize = mode ,
55
55
});
56
56
57
- try common (bench , mode , options );
57
+ try common (b , & bench . root_module , options );
58
58
if (mode == .ReleaseSafe ) {
59
59
// remove debug info
60
60
// TODO: check if mandatory in release-safe
@@ -78,11 +78,11 @@ pub fn build(b: *std.Build) !void {
78
78
// compile and install
79
79
const shell = b .addExecutable (.{
80
80
.name = "zig-js-runtime-shell" ,
81
- .root_source_file = .{ . path = "src/main_shell.zig" } ,
81
+ .root_source_file = b . path ( "src/main_shell.zig" ) ,
82
82
.target = target ,
83
83
.optimize = mode ,
84
84
});
85
- try common (shell , mode , options );
85
+ try common (b , & shell . root_module , options );
86
86
try pkgs .add_shell (shell );
87
87
if (mode == .ReleaseSafe ) {
88
88
// remove debug info
@@ -107,13 +107,13 @@ pub fn build(b: *std.Build) !void {
107
107
108
108
// compile
109
109
const tests = b .addTest (.{
110
- .root_source_file = .{ . path = "src/run_tests.zig" } ,
110
+ .root_source_file = b . path ( "src/run_tests.zig" ) ,
111
111
.target = target ,
112
112
.optimize = mode ,
113
113
});
114
- try common (tests , mode , options );
114
+ try common (b , & tests . root_module , options );
115
115
tests .root_module .single_threaded = true ;
116
- tests .test_runner = .{ . path = "src/test_runner.zig" } ;
116
+ tests .test_runner = b . path ( "src/test_runner.zig" ) ;
117
117
const run_tests = b .addRunArtifact (tests );
118
118
119
119
// step
@@ -149,15 +149,15 @@ pub fn buildOptions(b: *std.Build) !Options {
149
149
}
150
150
151
151
fn common (
152
- step : * std.Build.Step.Compile ,
153
- mode : std.builtin.Mode ,
152
+ b : * std.Build ,
153
+ m : * std.Build.Module ,
154
154
options : Options ,
155
155
) ! void {
156
- step . root_module .addOptions ("jsruntime_build_options" , options .opts );
157
- step . root_module . addImport ("tigerbeetle-io" , pkgs .tigerbeetle_io (step ));
156
+ m .addOptions ("jsruntime_build_options" , options .opts );
157
+ m . addImport ("tigerbeetle-io" , pkgs .tigerbeetle_io (b ));
158
158
if (options .engine == .v8 ) {
159
- try pkgs .v8 (step , mode );
160
- step . root_module . addImport ("v8" , pkgs .zig_v8 (step ));
159
+ try pkgs .v8 (m );
160
+ m . addImport ("v8" , pkgs .zig_v8 (b ));
161
161
}
162
162
}
163
163
@@ -167,37 +167,35 @@ pub fn packages(comptime vendor_path: []const u8) type {
167
167
168
168
const vendor = vendor_path ++ "vendor" ;
169
169
170
- fn tigerbeetle_io (step : * std.Build.Step.Compile ) * std.Build.Module {
171
- return step . step . owner .createModule (.{
172
- .root_source_file = .{ . path = vendor ++ "/tigerbeetle-io/io.zig" } ,
170
+ fn tigerbeetle_io (b : * std.Build ) * std.Build.Module {
171
+ return b .createModule (.{
172
+ .root_source_file = b . path ( vendor ++ "/tigerbeetle-io/io.zig" ) ,
173
173
});
174
174
}
175
175
176
- fn zig_v8 (step : * std.Build.Step.Compile ) * std.Build.Module {
177
- const mod = step . step . owner .createModule (.{
178
- .root_source_file = .{ . path = vendor ++ "/zig-v8/src/v8.zig" } ,
176
+ fn zig_v8 (b : * std.Build ) * std.Build.Module {
177
+ const mod = b .createModule (.{
178
+ .root_source_file = b . path ( vendor ++ "/zig-v8/src/v8.zig" ) ,
179
179
.link_libc = false ,
180
180
.link_libcpp = false ,
181
181
});
182
182
183
- mod .addIncludePath (.{ . path = vendor ++ "/zig-v8/src" } );
183
+ mod .addIncludePath (b . path ( vendor ++ "/zig-v8/src" ) );
184
184
185
185
return mod ;
186
186
}
187
187
188
- fn v8 (step : * std.Build.Step.Compile , mode : std.builtin.Mode ) ! void {
189
- const mode_str : []const u8 = if (mode == .Debug ) "debug" else "release" ;
190
- // step.linkLibC(); // TODO: do we need to link libc?
191
-
188
+ fn v8 (mod : * std.Build.Module ) ! void {
189
+ const mode_str : []const u8 = if (mod .optimize .? == .Debug ) "debug" else "release" ;
192
190
// FIXME: we are tied to native v8 builds, currently:
193
191
// - aarch64-macos
194
192
// - x86_64-linux
195
- const os = step . root_module .resolved_target .? .result .os .tag ;
196
- const arch = step . root_module .resolved_target .? .result .cpu .arch ;
193
+ const os = mod .resolved_target .? .result .os .tag ;
194
+ const arch = mod .resolved_target .? .result .cpu .arch ;
197
195
switch (os ) {
198
196
.linux = > blk : {
199
197
// TODO: why do we need it? It should be linked already when we built v8
200
- step . linkLibCpp () ;
198
+ mod . link_libcpp = true ;
201
199
break :blk ;
202
200
},
203
201
.macos = > blk : {
@@ -211,15 +209,15 @@ pub fn packages(comptime vendor_path: []const u8) type {
211
209
}
212
210
213
211
const lib_path = try std .fmt .allocPrint (
214
- step . step .owner .allocator ,
212
+ mod .owner .allocator ,
215
213
"{s}vendor/v8/{s}-{s}/{s}/libc_v8.a" ,
216
214
.{ vendor_path , @tagName (arch ), @tagName (os ), mode_str },
217
215
);
218
- step .addObjectFile (.{ .path = lib_path } );
216
+ mod .addObjectFile (mod . owner .path ( lib_path ) );
219
217
}
220
218
221
219
pub fn add_shell (step : * std.Build.Step.Compile ) ! void {
222
- step .addIncludePath (.{ . path = vendor ++ "/linenoise-mob" } );
220
+ step .addIncludePath (step . root_module . owner . path ( vendor ++ "/linenoise-mob" ) );
223
221
const lib = step .step .owner .addStaticLibrary (.{
224
222
.name = "linenoise" ,
225
223
.target = step .root_module .resolved_target .? ,
@@ -229,27 +227,31 @@ pub fn packages(comptime vendor_path: []const u8) type {
229
227
// TODO: use mode to add debug/release flags
230
228
const cflags = &.{};
231
229
lib .addCSourceFile (.{
232
- .file = .{ . path = vendor ++ "/linenoise-mob/linenoise.c" } ,
230
+ .file = step . root_module . owner . path ( vendor ++ "/linenoise-mob/linenoise.c" ) ,
233
231
.flags = cflags ,
234
232
});
235
233
step .linkLibrary (lib );
236
234
}
237
235
238
- pub fn add (
239
- step : * std.Build.Step.Compile ,
236
+ pub fn module (
237
+ b : * std.Build ,
240
238
options : Options ,
241
- ) ! void {
242
- const jsruntime_mod = step .step .owner .createModule (.{
243
- .root_source_file = .{ .path = vendor_path ++ "/src/api.zig" },
239
+ mode : std.builtin.Mode ,
240
+ target : std.Build.ResolvedTarget ,
241
+ ) ! * std.Build.Module {
242
+ const mod = b .createModule (.{
243
+ .root_source_file = b .path (vendor_path ++ "/src/api.zig" ),
244
+ .optimize = mode ,
245
+ .target = target ,
244
246
.imports = &[_ ]std.Build.Module.Import {
245
247
.{ .name = "jsruntime_build_options" , .module = options .opts .createModule () },
246
- .{ .name = "tigerbeetle-io" , .module = Self .tigerbeetle_io (step ) },
247
- .{ .name = "v8" , .module = Self .zig_v8 (step ) },
248
+ .{ .name = "tigerbeetle-io" , .module = Self .tigerbeetle_io (b ) },
249
+ .{ .name = "v8" , .module = Self .zig_v8 (b ) },
248
250
},
249
251
});
250
- try Self .v8 (step , step . root_module . optimize .? );
252
+ try Self .v8 (mod );
251
253
252
- step . root_module . addImport ( "jsruntime" , jsruntime_mod ) ;
254
+ return mod ;
253
255
}
254
256
};
255
257
}
0 commit comments