Axis / Build System / Target
Target
A Target is a declarative destination context. It owns selected machine properties, execution declaration, tool-provider defaults and optional launch-command preparation. It checks permitted product selections. Its identity is distinct from a physical device.
Source and concrete API: target.go.
Properties
-
Definition: the selected authored destination declaration. -
Machine: architecture, operating system, ABI and any explicitly supported additional properties. -
Environment: the selected execution declaration. -
Toolchains: default bindings for tool contract names. -
RunConfig: configured options, bound input paths, restricted support-output lookup and an absolute private working directory.
Behavior
Select resolves the requested destination, checks the selected product’s allow-list, applies the caller’s machine validator and resolves the execution declaration. Missing declarations, disallowed selections and unsupported machine properties are errors.
The caller chooses the destination explicitly. A host architecture or compiler default cannot silently select it. Architecture alone is not a complete compatibility predicate; ABI, CPU baseline and supported runtime properties may also matter.
Boundary and support
RunCommand invokes the optional run handler with name, machine, configured options, work and the supplied input lookups. The handler returns an executor.Command containing literal arguments and optional environment additions. The working directory comes from RunConfig; stdin and output streams belong to the eventual caller. An empty argument list or executable, NUL bytes, invalid environment entries and attempts to override the directory or stdin fail.
Command preparation does not start a process, configure dependencies or grant ambient filesystem access. The caller binds successful immutable inputs, restricts support lookup and owns the private directory through execution and cleanup. An absent handler is an explicit unsupported-operation error; selection never substitutes another destination.
Machine data describes where produced software is intended to operate. It does not itself create boot files or identify an attached device. Distribution packing, device provisioning and launch-time tool installation remain unimplemented.