E1001: Unsupported target
| Code | Category | Stability |
|---|---|---|
E1001 | Linker and target | Permanent |
Explanation
E1001 is the permanent code for a compilation target Rue cannot serve. Rue supports exactly three targets — x86-64-linux, aarch64-linux, and aarch64-macos — each served by its own embedded runtime archive (ADR-0034). Target selection happens in the driver before any compilation begins: --target <name> is checked against that set, and with no --target the compiler uses its host and refuses to guess when that host is not one of the three. Both refusals are argument-parsing failures, printed on stderr as a plain Error: line with the list of valid targets and exiting unsuccessfully; neither is reported as E1001, so no compilation reaches this code today. It stays reserved and permanent for a target rejection raised from inside a compilation. The adjacent case that is real belongs to E1000: a target whose code Rue can generate but whose executable it cannot link is a link failure, not an unsupported target.
Likely cause
A target refusal seen from the command line is the driver's, not E1001. --target <name> for a name outside x86-64-linux, aarch64-linux, and aarch64-macos prints Error: unknown target '<name>' followed by the valid list, and a compiler built for an unsupported host prints Error: no --target specified and this host (...) is not a supported Rue target. Name one of the supported targets, or, when the goal is to inspect generated code for a target rather than to link an executable for it, use --emit asm, which never reaches the linker.