68 lines
2.0 KiB
Zig
68 lines
2.0 KiB
Zig
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);
|
|
|
|
}
|