const std = @import("std"); const builds = std.build; const Builder = std.build.Builder; fn setupLinks(step: *builds.LibExeObjStep) void { step.linkSystemLibrary("c"); step.linkSystemLibrary("lilv-0"); step.linkSystemLibrary("sndfile"); step.linkSystemLibrary("readline"); step.linkSystemLibrary("GraphicsMagickWand"); step.linkSystemLibrary("GraphicsMagick"); step.addIncludeDir("/usr/include/GraphicsMagick"); step.addIncludeDir("/usr/include"); const possible_lilv_include_dirs = [_][]const u8{ "/usr/include/lilv-0/lilv", "/usr/include/lilv-0", }; var found_any_lilv = false; for (possible_lilv_include_dirs) |possible_lilv_dir| { var possible_dir = std.fs.cwd().openDir(possible_lilv_dir, .{}) catch |err| { std.debug.warn("possible lilv {s} fail: {s}\n", .{ possible_lilv_dir, err }); continue; }; possible_dir.close(); found_any_lilv = true; std.debug.warn("found lilv at '{s}'\n", .{possible_lilv_dir}); step.addIncludeDir(possible_lilv_dir); } if (!found_any_lilv) { std.debug.warn("No LILV library was found :(\n", .{}); @panic("no lilv found"); } } pub fn build(b: *Builder) void { const mode = b.standardReleaseOptions(); const exe = b.addExecutable("scritcher", "src/main.zig"); exe.setBuildMode(mode); exe.install(); setupLinks(exe); const test_obj_step = b.addTest("src/main.zig"); setupLinks(test_obj_step); const run_cmd = exe.run(); run_cmd.step.dependOn(b.getInstallStep()); const run_step = b.step("run", "Run the app"); run_step.dependOn(&run_cmd.step); const test_step = b.step("test", "Run tests"); test_step.dependOn(&test_obj_step.step); }