lazyImport
In a build.zig file, this function is to @import what lazyDependency is to dependency.
If the dependency is lazy and has not yet been fetched, it instructs the parent process to fetch
that dependency after the build script has finished running, then returns null.
If the dependency is lazy but has already been fetched, or if it is eager, it returns
the build.zig struct of that dependency, just like a regular @import.
Function parameters
Parameters
- b:*Build
- asking_build_zig:type
- The build.zig struct of the package importing the dependency.
- dep_name:[]const u8
Type definitions in this namespace
Types
- Graph
- Shared state among all Build instances.
- GeneratedFile
- A file that is generated by a build step.
- LazyPath
- A reference to an existing or future path.
- ResolvedTarget
- A pair of target query and fully resolved target.
Functions in this namespace
Functions
- resolveInstallPrefix
- This function is intended to be called by lib/build_runner.zig, not a build.zig file.
- addOptions
- Create a set of key-value pairs that can be converted into a Zig source
- addTest
- Creates an executable containing unit tests.
- addModule
- This function creates a module and adds it to the package's module set, making
- createModule
- This function creates a private module, to be used by the current package,
- addSystemCommand
- Initializes a `Step.Run` with argv, which must at least have the path to the
- addRunArtifact
- Creates a `Step.Run` with an executable built with `addExecutable`.
- addConfigHeader
- Using the `values` provided, produces a C header file, possibly based on a
- dupe
- Allocator.dupe without the need to handle out of memory.
- dupeStrings
- Duplicates an array of strings without the need to handle out of memory.
- dupePath
- Duplicates a path and converts all slashes to the OS's canonical path separator.
- option
- Creates a configuration option to be passed to the build.zig script.
- standardTargetOptions
- Exposes standard `zig build` options for choosing a target and additionally
- parseTargetQuery
- Obtain a target query from a string, reporting diagnostics to stderr if the
- standardTargetOptionsQueryOnly
- Exposes standard `zig build` options for choosing a target.
- installArtifact
- This creates the install step and adds it to the dependencies of the
- addInstallArtifact
- This merely creates the step; it does not add it to the dependencies of the
- installFile
- `dest_rel_path` is relative to prefix path
- installBinFile
- `dest_rel_path` is relative to bin path
- installLibFile
- `dest_rel_path` is relative to lib path
- addInstallFile
- `dest_rel_path` is relative to install prefix path
- addInstallBinFile
- `dest_rel_path` is relative to bin path
- addInstallLibFile
- `dest_rel_path` is relative to lib path
- addInstallHeaderFile
- `dest_rel_path` is relative to header path
- path
- References a file or directory relative to the source root.
- pathFromRoot
- This is low-level implementation details of the build system, not meant to
- run
- This is a helper function to be called from build.zig scripts, *not* from
- lazyDependency
- When this function is called, it means that the current build does, in
- lazyImport
- In a build.zig file, this function is to `@import` what `lazyDependency` is to `dependency`.
- dumpBadGetPathHelp
- In this function the stderr mutex has already been locked.
- makeTempPath
- This function is intended to be called in the `configure` phase only.
- resolveTargetQuery
- Converts a target query into a fully resolved target that can be passed to
Error sets in this namespace
Error Sets
Source
Implementation
pub inline fn lazyImport(
b: *Build,
/// The build.zig struct of the package importing the dependency.
/// When calling this function from the `build` function of a build.zig file's, you normally
/// pass `@This()`.
comptime asking_build_zig: type,
comptime dep_name: []const u8,
) ?type {
const build_runner = @import("root");
const deps = build_runner.dependencies;
const pkg_hash = findImportPkgHashOrFatal(b, asking_build_zig, dep_name);
inline for (@typeInfo(deps.packages).@"struct".decls) |decl| {
if (comptime mem.eql(u8, decl.name, pkg_hash)) {
const pkg = @field(deps.packages, decl.name);
const available = !@hasDecl(pkg, "available") or pkg.available;
if (!available) {
markNeededLazyDep(b, pkg_hash);
return null;
}
return if (@hasDecl(pkg, "build_zig"))
pkg.build_zig
else
@compileError("dependency '" ++ dep_name ++ "' does not have a build.zig");
}
}
comptime unreachable; // Bad @dependencies source
}