merge commit
This commit is contained in:
commit
953d410e5e
7 changed files with 8 additions and 38 deletions
|
|
@ -1129,10 +1129,9 @@ fn get_backend_from_raw_matches(
|
||||||
let backend_name = debug_flags
|
let backend_name = debug_flags
|
||||||
.iter()
|
.iter()
|
||||||
.find_map(|x| x.strip_prefix("codegen-backend=").or(x.strip_prefix("codegen_backend=")));
|
.find_map(|x| x.strip_prefix("codegen-backend=").or(x.strip_prefix("codegen_backend=")));
|
||||||
let unstable_options = debug_flags.iter().find(|x| *x == "unstable-options").is_some();
|
|
||||||
let target = parse_target_triple(early_dcx, matches);
|
let target = parse_target_triple(early_dcx, matches);
|
||||||
let sysroot = Sysroot::new(matches.opt_str("sysroot").map(PathBuf::from));
|
let sysroot = Sysroot::new(matches.opt_str("sysroot").map(PathBuf::from));
|
||||||
let target = config::build_target_config(early_dcx, &target, sysroot.path(), unstable_options);
|
let target = config::build_target_config(early_dcx, &target, sysroot.path());
|
||||||
|
|
||||||
get_codegen_backend(early_dcx, &sysroot, backend_name, &target)
|
get_codegen_backend(early_dcx, &sysroot, backend_name, &target)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -435,7 +435,6 @@ pub fn run_compiler<R: Send>(config: Config, f: impl FnOnce(&Compiler) -> R + Se
|
||||||
&early_dcx,
|
&early_dcx,
|
||||||
&config.opts.target_triple,
|
&config.opts.target_triple,
|
||||||
config.opts.sysroot.path(),
|
config.opts.sysroot.path(),
|
||||||
config.opts.unstable_opts.unstable_options,
|
|
||||||
);
|
);
|
||||||
let file_loader = config.file_loader.unwrap_or_else(|| Box::new(RealFileLoader));
|
let file_loader = config.file_loader.unwrap_or_else(|| Box::new(RealFileLoader));
|
||||||
let path_mapping = config.opts.file_path_mapping();
|
let path_mapping = config.opts.file_path_mapping();
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,6 @@ where
|
||||||
&early_dcx,
|
&early_dcx,
|
||||||
&sessopts.target_triple,
|
&sessopts.target_triple,
|
||||||
sessopts.sysroot.path(),
|
sessopts.sysroot.path(),
|
||||||
sessopts.unstable_opts.unstable_options,
|
|
||||||
);
|
);
|
||||||
let hash_kind = sessopts.unstable_opts.src_hash_algorithm(&target);
|
let hash_kind = sessopts.unstable_opts.src_hash_algorithm(&target);
|
||||||
let checksum_hash_kind = sessopts.unstable_opts.checksum_hash_algorithm();
|
let checksum_hash_kind = sessopts.unstable_opts.checksum_hash_algorithm();
|
||||||
|
|
|
||||||
|
|
@ -1589,9 +1589,8 @@ pub fn build_target_config(
|
||||||
early_dcx: &EarlyDiagCtxt,
|
early_dcx: &EarlyDiagCtxt,
|
||||||
target: &TargetTuple,
|
target: &TargetTuple,
|
||||||
sysroot: &Path,
|
sysroot: &Path,
|
||||||
unstable_options: bool,
|
|
||||||
) -> Target {
|
) -> Target {
|
||||||
match Target::search(target, sysroot, unstable_options) {
|
match Target::search(target, sysroot) {
|
||||||
Ok((target, warnings)) => {
|
Ok((target, warnings)) => {
|
||||||
for warning in warnings.warning_messages() {
|
for warning in warnings.warning_messages() {
|
||||||
early_dcx.early_warn(warning)
|
early_dcx.early_warn(warning)
|
||||||
|
|
|
||||||
|
|
@ -1002,11 +1002,8 @@ pub fn build_session(
|
||||||
}
|
}
|
||||||
|
|
||||||
let host_triple = TargetTuple::from_tuple(config::host_tuple());
|
let host_triple = TargetTuple::from_tuple(config::host_tuple());
|
||||||
let (host, target_warnings) =
|
let (host, target_warnings) = Target::search(&host_triple, sopts.sysroot.path())
|
||||||
Target::search(&host_triple, sopts.sysroot.path(), sopts.unstable_opts.unstable_options)
|
.unwrap_or_else(|e| dcx.handle().fatal(format!("Error loading host specification: {e}")));
|
||||||
.unwrap_or_else(|e| {
|
|
||||||
dcx.handle().fatal(format!("Error loading host specification: {e}"))
|
|
||||||
});
|
|
||||||
for warning in target_warnings.warning_messages() {
|
for warning in target_warnings.warning_messages() {
|
||||||
dcx.handle().warn(warning)
|
dcx.handle().warn(warning)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3296,19 +3296,10 @@ impl Target {
|
||||||
pub fn search(
|
pub fn search(
|
||||||
target_tuple: &TargetTuple,
|
target_tuple: &TargetTuple,
|
||||||
sysroot: &Path,
|
sysroot: &Path,
|
||||||
unstable_options: bool,
|
|
||||||
) -> Result<(Target, TargetWarnings), String> {
|
) -> Result<(Target, TargetWarnings), String> {
|
||||||
use std::{env, fs};
|
use std::{env, fs};
|
||||||
|
|
||||||
fn load_file(
|
fn load_file(path: &Path) -> Result<(Target, TargetWarnings), String> {
|
||||||
path: &Path,
|
|
||||||
unstable_options: bool,
|
|
||||||
) -> Result<(Target, TargetWarnings), String> {
|
|
||||||
if !unstable_options {
|
|
||||||
return Err(
|
|
||||||
"custom targets are unstable and require `-Zunstable-options`".to_string()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
let contents = fs::read_to_string(path).map_err(|e| e.to_string())?;
|
let contents = fs::read_to_string(path).map_err(|e| e.to_string())?;
|
||||||
Target::from_json(&contents)
|
Target::from_json(&contents)
|
||||||
}
|
}
|
||||||
|
|
@ -3332,7 +3323,7 @@ impl Target {
|
||||||
for dir in env::split_paths(&target_path) {
|
for dir in env::split_paths(&target_path) {
|
||||||
let p = dir.join(&path);
|
let p = dir.join(&path);
|
||||||
if p.is_file() {
|
if p.is_file() {
|
||||||
return load_file(&p, unstable_options);
|
return load_file(&p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3345,7 +3336,7 @@ impl Target {
|
||||||
Path::new("target.json"),
|
Path::new("target.json"),
|
||||||
]);
|
]);
|
||||||
if p.is_file() {
|
if p.is_file() {
|
||||||
return load_file(&p, unstable_options);
|
return load_file(&p);
|
||||||
}
|
}
|
||||||
|
|
||||||
Err(format!("could not find specification for target {target_tuple:?}"))
|
Err(format!("could not find specification for target {target_tuple:?}"))
|
||||||
|
|
|
||||||
|
|
@ -15,20 +15,11 @@ fn main() {
|
||||||
.run_fail()
|
.run_fail()
|
||||||
.assert_stderr_contains("error loading target specification");
|
.assert_stderr_contains("error loading target specification");
|
||||||
rustc()
|
rustc()
|
||||||
.arg("-Zunstable-options")
|
|
||||||
.input("foo.rs")
|
.input("foo.rs")
|
||||||
.target("my-incomplete-platform.json")
|
.target("my-incomplete-platform.json")
|
||||||
.run_fail()
|
.run_fail()
|
||||||
.assert_stderr_contains("missing field `llvm-target`");
|
.assert_stderr_contains("missing field `llvm-target`");
|
||||||
let test_platform = rustc()
|
|
||||||
.input("foo.rs")
|
|
||||||
.target("my-x86_64-unknown-linux-gnu-platform")
|
|
||||||
.crate_type("lib")
|
|
||||||
.emit("asm")
|
|
||||||
.run_fail()
|
|
||||||
.assert_stderr_contains("custom targets are unstable and require `-Zunstable-options`");
|
|
||||||
rustc()
|
rustc()
|
||||||
.arg("-Zunstable-options")
|
|
||||||
.env("RUST_TARGET_PATH", ".")
|
.env("RUST_TARGET_PATH", ".")
|
||||||
.input("foo.rs")
|
.input("foo.rs")
|
||||||
.target("my-awesome-platform")
|
.target("my-awesome-platform")
|
||||||
|
|
@ -36,7 +27,6 @@ fn main() {
|
||||||
.emit("asm")
|
.emit("asm")
|
||||||
.run();
|
.run();
|
||||||
rustc()
|
rustc()
|
||||||
.arg("-Zunstable-options")
|
|
||||||
.env("RUST_TARGET_PATH", ".")
|
.env("RUST_TARGET_PATH", ".")
|
||||||
.input("foo.rs")
|
.input("foo.rs")
|
||||||
.target("my-x86_64-unknown-linux-gnu-platform")
|
.target("my-x86_64-unknown-linux-gnu-platform")
|
||||||
|
|
@ -62,31 +52,27 @@ fn main() {
|
||||||
.actual_text("test-platform-2", test_platform_2)
|
.actual_text("test-platform-2", test_platform_2)
|
||||||
.run();
|
.run();
|
||||||
rustc()
|
rustc()
|
||||||
.arg("-Zunstable-options")
|
|
||||||
.input("foo.rs")
|
.input("foo.rs")
|
||||||
.target("endianness-mismatch")
|
.target("endianness-mismatch")
|
||||||
.run_fail()
|
.run_fail()
|
||||||
.assert_stderr_contains(r#""data-layout" claims architecture is little-endian"#);
|
.assert_stderr_contains(r#""data-layout" claims architecture is little-endian"#);
|
||||||
rustc()
|
rustc()
|
||||||
.arg("-Zunstable-options")
|
|
||||||
.input("foo.rs")
|
.input("foo.rs")
|
||||||
.target("mismatching-data-layout")
|
.target("mismatching-data-layout")
|
||||||
.crate_type("lib")
|
.crate_type("lib")
|
||||||
.run_fail()
|
.run_fail()
|
||||||
.assert_stderr_contains("data-layout for target");
|
.assert_stderr_contains("data-layout for target");
|
||||||
rustc()
|
rustc()
|
||||||
.arg("-Zunstable-options")
|
|
||||||
.input("foo.rs")
|
.input("foo.rs")
|
||||||
.target("require-explicit-cpu")
|
.target("require-explicit-cpu")
|
||||||
.crate_type("lib")
|
.crate_type("lib")
|
||||||
.run_fail()
|
.run_fail()
|
||||||
.assert_stderr_contains("target requires explicitly specifying a cpu");
|
.assert_stderr_contains("target requires explicitly specifying a cpu");
|
||||||
rustc()
|
rustc()
|
||||||
.arg("-Zunstable-options")
|
|
||||||
.input("foo.rs")
|
.input("foo.rs")
|
||||||
.target("require-explicit-cpu")
|
.target("require-explicit-cpu")
|
||||||
.crate_type("lib")
|
.crate_type("lib")
|
||||||
.arg("-Ctarget-cpu=generic")
|
.arg("-Ctarget-cpu=generic")
|
||||||
.run();
|
.run();
|
||||||
rustc().arg("-Zunstable-options").target("require-explicit-cpu").print("target-cpus").run();
|
rustc().target("require-explicit-cpu").arg("--print=target-cpus").run();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue