Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

make

Compile.make
pub fn make(
    compile: *Compile,
    compile_index: Configuration.Step.Index,
    maker: *Maker,
    progress_node: std.Progress.Node,
) Step.ExtendedMakeError!void

File

Code

pub fn make(
    compile: *Compile,
    compile_index: Configuration.Step.Index,
    maker: *Maker,
    progress_node: std.Progress.Node,
) Step.ExtendedMakeError!void {
    const graph = maker.graph;
    const gpa = maker.gpa;
    const conf = &maker.scanned_config.configuration;
    const conf_step = compile_index.ptr(conf);
    const conf_comp = conf_step.extended.get(conf.extra).compile;

    var arena_allocator: std.heap.ArenaAllocator = .init(gpa);
    defer arena_allocator.deinit();
    const arena = arena_allocator.allocator();

    var argv: std.ArrayList([]const u8) = .empty;
    defer argv.deinit(gpa);

    try lowerZigArgs(arena, compile, compile_index, maker, progress_node, &argv, false);

    const incremental = conf_comp.flags4.incremental.toBool() orelse graph.incremental == true;

    const maybe_output_dir = Step.evalZigProcess(
        compile_index,
        maker,
        argv.items,
        progress_node,
        incremental and (maker.watch or maker.web_server != null),
    ) catch |err| switch (err) {
        error.NeedCompileErrorCheck => {
            try checkCompileErrors(arena, maker, compile_index);
            return;
        },
        else => |e| return e,
    };

    const root_module = conf_comp.root_module.get(conf);
    const target = root_module.resolved_target.get(conf).?.result.get(conf);

    // Update generated files
    if (maybe_output_dir) |output_dir| {
        if (conf_comp.emit_directory.value) |gf| maker.generatedPath(gf).* = output_dir;
        try updateGeneratedFile(maker, arena, &conf_comp, output_dir, &target, conf_comp.generated_bin.value, .bin);
        try updateGeneratedFile(maker, arena, &conf_comp, output_dir, &target, conf_comp.generated_pdb.value, .pdb);
        try updateGeneratedFile(maker, arena, &conf_comp, output_dir, &target, conf_comp.generated_implib.value, .implib);
        try updateGeneratedFile(maker, arena, &conf_comp, output_dir, &target, conf_comp.generated_h.value, .h);
        try updateGeneratedFile(maker, arena, &conf_comp, output_dir, &target, conf_comp.generated_docs.value, .docs);
        try updateGeneratedFile(maker, arena, &conf_comp, output_dir, &target, conf_comp.generated_asm.value, .@"asm");
        try updateGeneratedFile(maker, arena, &conf_comp, output_dir, &target, conf_comp.generated_llvm_ir.value, .llvm_ir);
        try updateGeneratedFile(maker, arena, &conf_comp, output_dir, &target, conf_comp.generated_llvm_bc.value, .llvm_bc);
    }

    if (conf_comp.flags3.kind == .lib and conf_comp.flags2.linkage == .dynamic and
        conf_comp.version.value != null and target.flags.os_tag != .windows)
    {
        if (conf_comp.generated_bin.value) |generated_bin| {
            const full_dest_path = maker.generatedPath(generated_bin).*;
            try maker.installSymLinks(arena, full_dest_path, compile_index, compile_index);
        }
    }
}