From c84a256fba7a09a123f679ff4a56b4f3238e5630 Mon Sep 17 00:00:00 2001 From: Kasper Sauramo Date: Mon, 20 Oct 2025 22:56:38 +0300 Subject: [PATCH] reorganize build script --- build.zig | 174 +++++++++++++++++++++++++++++------------------------- 1 file changed, 92 insertions(+), 82 deletions(-) diff --git a/build.zig b/build.zig index e50e54a..66bff8d 100644 --- a/build.zig +++ b/build.zig @@ -26,46 +26,55 @@ pub fn build(b: *std.Build) void { ); return; } - // This comes from the libomt build scripts - const omt_out_path = "3rd/libomt/bin/Release/net8.0/linux-x64/publish/"; - // Build libomtnet - const libomtnet_build_script = b.addSystemCommand(&.{"bash"}); - libomtnet_build_script.cwd = b.path("3rd/libomtnet/build"); - libomtnet_build_script.addFileArg(b.path("3rd/libomtnet/build/buildall.sh")); + { + // This comes from the libomt build scripts + const omt_out_path = "3rd/libomt/bin/Release/net8.0/linux-x64/publish/"; - // Doesn't need install, libomt/build scripts assume a folder hierarchy + // Build libomtnet + const libomtnet_build_script = b.addSystemCommand(&.{"bash"}); + libomtnet_build_script.cwd = b.path("3rd/libomtnet/build"); + libomtnet_build_script.addFileArg(b.path("3rd/libomtnet/build/buildall.sh")); - // Build libomt - const libomt_build_script = b.addSystemCommand(&.{"bash"}); - libomt_build_script.cwd = b.path("3rd/libomt/build"); - libomt_build_script.addFileArg(b.path("3rd/libomt/build/buildlinuxx64.sh")); - libomt_build_script.step.dependOn(&libomtnet_build_script.step); + // Build libomt + const libomt_build_script = b.addSystemCommand(&.{"bash"}); + libomt_build_script.cwd = b.path("3rd/libomt/build"); + libomt_build_script.addFileArg(b.path("3rd/libomt/build/buildlinuxx64.sh")); + libomt_build_script.step.dependOn(&libomtnet_build_script.step); - // Install libomt - const install_omt_h = b.addInstallHeaderFile( - b.path(b.pathJoin(&.{ omt_out_path, "libomt.h" })), - "libomt.h", - ); - install_omt_h.step.dependOn(&libomt_build_script.step); + // Install libomt + const install_omt_h = b.addInstallHeaderFile( + b.path(b.pathJoin(&.{ omt_out_path, "libomt.h" })), + "libomt.h", + ); + install_omt_h.step.dependOn(&libomt_build_script.step); - const install_omt_so = b.addInstallLibFile( - b.path(b.pathJoin(&.{ omt_out_path, "libomt.so" })), - "libomt.so", - ); - install_omt_so.step.dependOn(&libomt_build_script.step); + const install_omt_so = b.addInstallLibFile( + b.path(b.pathJoin(&.{ omt_out_path, "libomt.so" })), + "libomt.so", + ); + install_omt_so.step.dependOn(&libomt_build_script.step); - // Build libvmx - const libvmx_build = b.addSystemCommand(&.{"bash"}); - libvmx_build.cwd = b.path("3rd/libvmx/build"); - libvmx_build.addFileArg(b.path("3rd/libvmx/build/buildlinuxx64.sh")); + // Build libvmx + const libvmx_build = b.addSystemCommand(&.{"bash"}); + libvmx_build.cwd = b.path("3rd/libvmx/build"); + libvmx_build.addFileArg(b.path("3rd/libvmx/build/buildlinuxx64.sh")); - // Install libvmx - const install_vmx_so = b.addInstallLibFile( - b.path("3rd/libvmx/build/libvmx.so"), - "libvmx.so", - ); - install_vmx_so.step.dependOn(&libvmx_build.step); + // Install libvmx + const install_vmx_so = b.addInstallLibFile( + b.path("3rd/libvmx/build/libvmx.so"), + "libvmx.so", + ); + install_vmx_so.step.dependOn(&libvmx_build.step); + + { + // Manual build step for libomt dependencies + const build_omt_step = b.step("omt", "Build libomtnet, libomt and libvmx"); + build_omt_step.dependOn(&install_omt_h.step); + build_omt_step.dependOn(&install_omt_so.step); + build_omt_step.dependOn(&install_vmx_so.step); + } + } // The output lib and header directories const lib_output_path: std.Build.LazyPath = .{ @@ -81,68 +90,69 @@ pub fn build(b: *std.Build) void { .target = target, .optimize = optimize, }); + omt_module.linkSystemLibrary("omt", .{}); - - // Define executable - const sender_exe = b.addExecutable(.{ - .name = "omtoy-sender", - .root_module = b.createModule(.{ - .root_source_file = b.path("src/sender.zig"), - .target = target, - .optimize = optimize, - }), - }); - sender_exe.root_module.addImport("omt", omt_module); - omt_module.addLibraryPath(lib_output_path); omt_module.addIncludePath(include_output_path); - sender_exe.root_module.addLibraryPath(lib_output_path); - sender_exe.root_module.addIncludePath(include_output_path); - sender_exe.linkSystemLibrary("omt"); - sender_exe.linkLibC(); + { + // Define executables + const sender_exe = b.addExecutable(.{ + .name = "omtoy-sender", + .root_module = b.createModule(.{ + .root_source_file = b.path("src/sender.zig"), + .target = target, + .optimize = optimize, + }), + }); + sender_exe.root_module.addImport("omt", omt_module); - const receiver_exe = b.addExecutable(.{ - .name = "omtoy-receiver", - .root_module = b.createModule(.{ - .root_source_file = b.path("src/receiver.zig"), - .target = target, - .optimize = optimize, - }), - }); - receiver_exe.root_module.addImport("omt", omt_module); + sender_exe.root_module.addLibraryPath(lib_output_path); + sender_exe.root_module.addIncludePath(include_output_path); + sender_exe.linkSystemLibrary("omt"); + sender_exe.linkLibC(); - receiver_exe.root_module.addLibraryPath(lib_output_path); - receiver_exe.root_module.addIncludePath(include_output_path); - receiver_exe.linkSystemLibrary("omt"); - receiver_exe.linkLibC(); + b.installArtifact(sender_exe); - b.installArtifact(sender_exe); - b.installArtifact(receiver_exe); + // Add run step for sender + const run_sender_step = b.step("sender-run", "Run the sender client"); + const run_sender_cmd = b.addRunArtifact(sender_exe); + run_sender_step.dependOn(&run_sender_cmd.step); + run_sender_cmd.step.dependOn(b.getInstallStep()); - // Manual build step for libomt dependencies - const build_omt_step = b.step("omt", "Build libomtnet, libomt and libvmx"); - build_omt_step.dependOn(&install_omt_h.step); - build_omt_step.dependOn(&install_omt_so.step); - build_omt_step.dependOn(&install_vmx_so.step); + // Don't actually have arguments, so this is moot + if (b.args) |args| { + run_sender_cmd.addArgs(args); + } + } - // Add run step for sender - const run_sender_step = b.step("sender-run", "Run the sender client"); - const run_sender_cmd = b.addRunArtifact(sender_exe); - run_sender_step.dependOn(&run_sender_cmd.step); + { + const receiver_exe = b.addExecutable(.{ + .name = "omtoy-receiver", + .root_module = b.createModule(.{ + .root_source_file = b.path("src/receiver.zig"), + .target = target, + .optimize = optimize, + }), + }); + receiver_exe.root_module.addImport("omt", omt_module); - const run_receiver_step = b.step("receiver-run", "Run the receiver client"); - const run_receiver_cmd = b.addRunArtifact(receiver_exe); - run_receiver_step.dependOn(&run_receiver_cmd.step); + receiver_exe.root_module.addLibraryPath(lib_output_path); + receiver_exe.root_module.addIncludePath(include_output_path); + receiver_exe.linkSystemLibrary("omt"); + receiver_exe.linkLibC(); - // Add run step for receiver + b.installArtifact(receiver_exe); - run_sender_cmd.step.dependOn(b.getInstallStep()); - run_receiver_cmd.step.dependOn(b.getInstallStep()); + const run_receiver_step = b.step("receiver-run", "Run the receiver client"); + const run_receiver_cmd = b.addRunArtifact(receiver_exe); + run_receiver_step.dependOn(&run_receiver_cmd.step); + run_receiver_cmd.step.dependOn(b.getInstallStep()); - if (b.args) |args| { - run_sender_cmd.addArgs(args); - run_receiver_cmd.addArgs(args); + // Don't actually have arguments so this is moot + if (b.args) |args| { + run_receiver_cmd.addArgs(args); + } } // TODO: write tests and stuff