Skip to content

Commit 9a016ba

Browse files
committed
Clarify dependency requirements in the face of cross-compilation
The requirement on dependencies was phrased in terms of "host tools", but it was also intended to apply equally to targets that only support cross-compilation. Only the exception (for libraries commonly needed for binaries on the target) was intended to apply to host tools. Reword the requirement to talk about the dependencies required for "compiling, linking,and emitting functional binaries, libraries, or other code for the target", rather than generically in terms of dependencies for rustc/cargo. This doesn't change the net effect of the requirements, since other requirements already stated that the target can't make the Rust toolchain depend on proprietary libraries. However, this should make the requirements clearer.
1 parent 470b49b commit 9a016ba

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

src/doc/rustc/src/target-tier-policy.md

+13-11
Original file line numberDiff line numberDiff line change
@@ -141,17 +141,19 @@ approved by the appropriate team for that shared code before acceptance.
141141
or binary. In other words, the introduction of the target must not cause a
142142
user installing or running a version of Rust or the Rust tools to be
143143
subject to any new license requirements.
144-
- If the target supports building host tools (such as `rustc` or `cargo`),
145-
those host tools must not depend on proprietary (non-FOSS) libraries, other
146-
than ordinary runtime libraries supplied by the platform and commonly used
147-
by other binaries built for the target. For instance, `rustc` built for the
148-
target may depend on a common proprietary C runtime library or console
149-
output library, but must not depend on a proprietary code generation
150-
library or code optimization library. Rust's license permits such
151-
combinations, but the Rust project has no interest in maintaining such
152-
combinations within the scope of Rust itself, even at tier 3.
153-
- Targets should not require proprietary (non-FOSS) components to link a
154-
functional binary or library.
144+
- Compiling, linking, and emitting functional binaries, libraries, or other
145+
code for the target (whether hosted on the target itself or cross-compiling
146+
from another target) must not depend on proprietary (non-FOSS) libraries.
147+
Host tools built for the target itself may depend on the ordinary runtime
148+
libraries supplied by the platform and commonly used by other applications
149+
built for the target, but those libraries must not be required for code
150+
generation for the target; cross-compilation to the target must not require
151+
such libraries at all. For instance, `rustc` built for the target may
152+
depend on a common proprietary C runtime library or console output library,
153+
but must not depend on a proprietary code generation library or code
154+
optimization library. Rust's license permits such combinations, but the
155+
Rust project has no interest in maintaining such combinations within the
156+
scope of Rust itself, even at tier 3.
155157
- "onerous" here is an intentionally subjective term. At a minimum, "onerous"
156158
legal/licensing terms include but are *not* limited to: non-disclosure
157159
requirements, non-compete requirements, contributor license agreements

0 commit comments

Comments
 (0)