const std = @import("std"); pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); const exe = b.addExecutable(.{ .name = "html-search-zig-example", .root_source_file = .{ .path = "src/main.zig" }, .target = target, .optimize = optimize, }); const libHtmlTree = buildHtmlSearch(b, &target, optimize); exe.linkLibrary(libHtmlTree); exe.linkLibC(); exe.addIncludePath(.{ .path = "depends/html-search/depends/html-parser/include" }); exe.addIncludePath(.{ .path = "depends/html-search/include" }); b.installArtifact(exe); const run_cmd = b.addRunArtifact(exe); run_cmd.step.dependOn(b.getInstallStep()); if (b.args) |args| { run_cmd.addArgs(args); } const run_step = b.step("run", "Run the app"); run_step.dependOn(&run_cmd.step); } fn buildHtmlSearch(b: *std.Build, target: *const std.zig.CrossTarget, optimize: std.builtin.OptimizeMode) *std.Build.Step.Compile { const lib = b.addStaticLibrary(.{ .name = "html-search", .target = target.*, .optimize = optimize, }); lib.addCSourceFiles(&.{ "depends/html-search/depends/html-parser/src/HtmlParser.c", "depends/html-search/src/HtmlSearch.c", "depends/html-search/src/XpathTokenizer.c", "depends/html-search/src/XpathParser.c", "depends/html-search/src/NodeSearch.c", }, &.{}); lib.addIncludePath(.{ .path = "depends/html-search/depends/html-parser/include" }); lib.linkLibC(); return lib; }