DoxigAlpha

getCompileDependencies

Return the full set of Step.Compile which start depends on, recursively. start itself is always returned as the first element. If chase_dynamic is false, then dynamic libraries are not included, and their dependencies are not considered; if chase_dynamic is true, dynamic libraries are treated the same as other linked Compiles.

Function parameters

Parameters

#
start:*Compile
chase_dynamic:bool

Type definitions in this namespace

Types

#

Functions in this namespace

Functions

#
installHeader
Marks the specified header for installation alongside this artifact.
installHeadersDirectory
Marks headers from the specified directory for installation alongside this artifact.
installConfigHeader
Marks the specified config header for installation alongside this artifact.
installLibraryHeaders
Forwards all headers marked for installation from `lib` to this artifact.
dependsOnSystemLibrary
Returns whether the library, executable, or object depends on a particular system library.
linkLibC
Deprecated; use `compile.root_module.link_libc = true` instead.
linkLibCpp
Deprecated; use `compile.root_module.link_libcpp = true` instead.
linkSystemLibrary
Deprecated; use `compile.root_module.linkSystemLibrary(name, .{})` instead.
linkSystemLibrary2
Deprecated; use `compile.root_module.linkSystemLibrary(name, options)` instead.
linkFramework
Deprecated; use `c.root_module.linkFramework(name, .{})` instead.
addCSourceFiles
Deprecated; use `compile.root_module.addCSourceFiles(options)` instead.
addCSourceFile
Deprecated; use `compile.root_module.addCSourceFile(source)` instead.
addWin32ResourceFile
Deprecated; use `compile.root_module.addWin32ResourceFile(source)` instead.
getEmittedBinDirectory
Returns the path to the directory that contains the emitted binary file.
getEmittedBin
Returns the path to the generated executable, library or object file.
getEmittedImplib
Returns the path to the generated import library.
getEmittedH
Returns the path to the generated header file.
getEmittedPdb
Returns the generated PDB file.
getEmittedDocs
Returns the path to the generated documentation directory.
getEmittedAsm
Returns the path to the generated assembly code.
getEmittedLlvmIr
Returns the path to the generated LLVM IR.
getEmittedLlvmBc
Returns the path to the generated LLVM BC.
addAssemblyFile
Deprecated; use `compile.root_module.addAssemblyFile(source)` instead.
addObjectFile
Deprecated; use `compile.root_module.addObjectFile(source)` instead.
addObject
Deprecated; use `compile.root_module.addObject(object)` instead.
linkLibrary
Deprecated; use `compile.root_module.linkLibrary(library)` instead.
addAfterIncludePath
Deprecated; use `compile.root_module.addAfterIncludePath(lazy_path)` instead.
addSystemIncludePath
Deprecated; use `compile.root_module.addSystemIncludePath(lazy_path)` instead.
addIncludePath
Deprecated; use `compile.root_module.addIncludePath(lazy_path)` instead.
addConfigHeader
Deprecated; use `compile.root_module.addConfigHeader(config_header)` instead.
addEmbedPath
Deprecated; use `compile.root_module.addEmbedPath(lazy_path)` instead.
addLibraryPath
Deprecated; use `compile.root_module.addLibraryPath(directory_path)` instead.
addRPath
Deprecated; use `compile.root_module.addRPath(directory_path)` instead.
addSystemFrameworkPath
Deprecated; use `compile.root_module.addSystemFrameworkPath(directory_path)` instead.
addFrameworkPath
Deprecated; use `compile.root_module.addFrameworkPath(directory_path)` instead.
getCompileDependencies
Return the full set of `Step.Compile` which `start` depends on, recursively.

= .compile

Values

#
base_id
= .compile

Source

Implementation

#
pub fn getCompileDependencies(start: *Compile, chase_dynamic: bool) []const *Compile {
    const arena = start.step.owner.graph.arena;

    var compiles: std.AutoArrayHashMapUnmanaged(*Compile, void) = .empty;
    var next_idx: usize = 0;

    compiles.putNoClobber(arena, start, {}) catch @panic("OOM");

    while (next_idx < compiles.count()) {
        const compile = compiles.keys()[next_idx];
        next_idx += 1;

        for (compile.root_module.getGraph().modules) |mod| {
            for (mod.link_objects.items) |lo| {
                switch (lo) {
                    .other_step => |other_compile| {
                        if (!chase_dynamic and other_compile.isDynamicLibrary()) continue;
                        compiles.put(arena, other_compile, {}) catch @panic("OOM");
                    },
                    else => {},
                }
            }
        }
    }

    return compiles.keys();
}