build.zig (2209B)
1 const std = @import("std"); 2 3 pub fn build(b: *std.Build) void { 4 const target = b.standardTargetOptions(.{}); 5 const optimize = b.standardOptimizeOption(.{}); 6 7 // -- kernel generator tool (runs on build host) -- 8 const gen_kernel_mod = b.createModule(.{ 9 .root_source_file = b.path("tools/gen_kernel.zig"), 10 .target = b.graph.host, 11 .optimize = .ReleaseSafe, 12 }); 13 const gen_kernel = b.addExecutable(.{ 14 .name = "gen_kernel", 15 .root_module = gen_kernel_mod, 16 }); 17 18 const run_gen_kernel = b.addRunArtifact(gen_kernel); 19 run_gen_kernel.addFileArg(b.path("kernel_run_arboricx_typed.dag")); 20 const kernel_embed = run_gen_kernel.addOutputFileArg("kernel_embed.zig"); 21 22 // -- kernel module shared by exe and lib -- 23 const kernel_mod = b.createModule(.{ 24 .root_source_file = kernel_embed, 25 }); 26 27 // -- main CLI executable -- 28 const exe_mod = b.createModule(.{ 29 .root_source_file = b.path("src/main.zig"), 30 .target = target, 31 .optimize = optimize, 32 }); 33 exe_mod.addImport("kernel_embed", kernel_mod); 34 exe_mod.link_libc = true; 35 exe_mod.linkSystemLibrary("uv", .{}); 36 const exe = b.addExecutable(.{ 37 .name = "tricu-zig", 38 .root_module = exe_mod, 39 }); 40 b.installArtifact(exe); 41 42 const run_cmd = b.addRunArtifact(exe); 43 run_cmd.step.dependOn(b.getInstallStep()); 44 const run_step = b.step("run", "Run tricu-zig"); 45 run_step.dependOn(&run_cmd.step); 46 47 // -- C ABI static library -- 48 const lib_mod = b.createModule(.{ 49 .root_source_file = b.path("src/c_abi.zig"), 50 .target = target, 51 .optimize = optimize, 52 }); 53 lib_mod.pic = true; 54 lib_mod.addImport("kernel_embed", kernel_mod); 55 lib_mod.link_libc = true; 56 lib_mod.linkSystemLibrary("uv", .{}); 57 const static_lib = b.addLibrary(.{ 58 .name = "arboricx", 59 .root_module = lib_mod, 60 }); 61 b.installArtifact(static_lib); 62 63 // -- C ABI shared library (for dynamic language FFI) -- 64 const shared_lib = b.addLibrary(.{ 65 .name = "arboricx", 66 .root_module = lib_mod, 67 .linkage = .dynamic, 68 }); 69 b.installArtifact(shared_lib); 70 71 }