init
Traverse the whole dependency graph and give every module a unique name, ideally one named after what it's called somewhere in the graph. It will help here to have both a mapping from module to name and a set of all the currently-used names.
Function parameters
Parameters
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
fn init(arena: Allocator, root_module: *Module) Allocator.Error!CliNamedModules {
var compile: CliNamedModules = .{
.modules = .{},
.names = .{},
};
const graph = root_module.getGraph();
{
assert(graph.modules[0] == root_module);
try compile.modules.put(arena, root_module, {});
try compile.names.put(arena, "root", {});
}
for (graph.modules[1..], graph.names[1..]) |mod, orig_name| {
var name = orig_name;
var n: usize = 0;
while (true) {
const gop = try compile.names.getOrPut(arena, name);
if (!gop.found_existing) {
try compile.modules.putNoClobber(arena, mod, {});
break;
}
name = try std.fmt.allocPrint(arena, "{s}{d}", .{ orig_name, n });
n += 1;
}
}
return compile;
}