-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.zig
More file actions
57 lines (45 loc) · 1.95 KB
/
build.zig
File metadata and controls
57 lines (45 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
const std = @import("std");
pub fn build(b: *std.Build) !void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const mod = b.addModule("onnxruntime", .{
.root_source_file = b.path("root.zig"),
.link_libc = true,
.target = target,
.optimize = optimize,
});
const include_paths = b.option([]const []const u8, "include_paths", "the paths to include for the onnxruntime module")
orelse &[_][]const u8{"/usr/include/", "/usr/include/onnxruntime/"};
for (include_paths) |path| mod.addIncludePath(.{ .cwd_relative = path });
const r_paths = b.option([]const []const u8, "r_paths", "the paths to add to the rpath for the onnxruntime module")
orelse &[_][]const u8{"/usr/lib/"};
for (r_paths) |path| mod.addRPath(.{ .cwd_relative = path });
mod.linkSystemLibrary("onnxruntime", .{});
addTestStep(b, mod, target, optimize) catch {}; // |err| std.log.warn("Failed to add test step, error: {}", .{err});
}
fn exists(path: []const u8) bool {
std.fs.cwd().access(path, .{}) catch return false;
return true;
}
fn addTestStep(b: *std.Build, mod: *std.Build.Module, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) !void {
const test_step = b.step("test", "Run tests");
const test_file_name = "test.zig";
const test_runner_name = "test_runner.zig";
// we don't care about time-of-check time-of-use race conditions as this is a simple test runner
if (!exists(test_file_name)) return error.MissingTestFile;
if (!exists(test_runner_name)) return error.MissingTestRunner;
const tests = b.addTest(.{
.root_module = b.createModule(.{
.root_source_file = b.path(test_file_name),
.target = target,
.optimize = optimize,
}),
.test_runner = .{
.path = b.path(test_runner_name),
.mode = .simple,
}
});
tests.root_module.addImport("onnxruntime", mod);
const run_tests = b.addRunArtifact(tests);
test_step.dependOn(&run_tests.step);
}