feat(zig): native Arboricx bundle parser and C ABI
This commit is contained in:
67
ext/zig/build.zig
Normal file
67
ext/zig/build.zig
Normal file
@@ -0,0 +1,67 @@
|
||||
const std = @import("std");
|
||||
|
||||
pub fn build(b: *std.Build) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
|
||||
// -- kernel generator tool (runs on build host) --
|
||||
const gen_kernel_mod = b.createModule(.{
|
||||
.root_source_file = b.path("tools/gen_kernel.zig"),
|
||||
.target = b.graph.host,
|
||||
.optimize = .ReleaseSafe,
|
||||
});
|
||||
const gen_kernel = b.addExecutable(.{
|
||||
.name = "gen_kernel",
|
||||
.root_module = gen_kernel_mod,
|
||||
});
|
||||
|
||||
const run_gen_kernel = b.addRunArtifact(gen_kernel);
|
||||
run_gen_kernel.addFileArg(b.path("kernel_run_arboricx_typed.dag"));
|
||||
const kernel_embed = run_gen_kernel.addOutputFileArg("kernel_embed.zig");
|
||||
|
||||
// -- kernel module shared by exe and lib --
|
||||
const kernel_mod = b.createModule(.{
|
||||
.root_source_file = kernel_embed,
|
||||
});
|
||||
|
||||
// -- main CLI executable --
|
||||
const exe_mod = b.createModule(.{
|
||||
.root_source_file = b.path("src/main.zig"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
exe_mod.addImport("kernel_embed", kernel_mod);
|
||||
const exe = b.addExecutable(.{
|
||||
.name = "tricu-zig",
|
||||
.root_module = exe_mod,
|
||||
});
|
||||
b.installArtifact(exe);
|
||||
|
||||
const run_cmd = b.addRunArtifact(exe);
|
||||
run_cmd.step.dependOn(b.getInstallStep());
|
||||
const run_step = b.step("run", "Run tricu-zig");
|
||||
run_step.dependOn(&run_cmd.step);
|
||||
|
||||
// -- C ABI static library --
|
||||
const lib_mod = b.createModule(.{
|
||||
.root_source_file = b.path("src/c_abi.zig"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
lib_mod.pic = true;
|
||||
lib_mod.addImport("kernel_embed", kernel_mod);
|
||||
const static_lib = b.addLibrary(.{
|
||||
.name = "arboricx",
|
||||
.root_module = lib_mod,
|
||||
});
|
||||
b.installArtifact(static_lib);
|
||||
|
||||
// -- C ABI shared library (for dynamic language FFI) --
|
||||
const shared_lib = b.addLibrary(.{
|
||||
.name = "arboricx",
|
||||
.root_module = lib_mod,
|
||||
.linkage = .dynamic,
|
||||
});
|
||||
b.installArtifact(shared_lib);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user