about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume.gomez@huawei.com>2024-03-03 23:00:46 +0100
committerGuillaume Gomez <guillaume.gomez@huawei.com>2024-03-05 19:59:40 +0100
commit06d07f816a9e95de360c95cabca907bd6e666905 (patch)
tree8a778adb00cea9d1f596d3df33c8dcd02f89fc1c
parentfaebf73983661ae2bd7abe2027b5491f4762cc6e (diff)
downloadrust-06d07f816a9e95de360c95cabca907bd6e666905.tar.gz
rust-06d07f816a9e95de360c95cabca907bd6e666905.zip
Remove unneeded special case for rust CI
-rw-r--r--build_system/src/config.rs65
-rw-r--r--build_system/src/test.rs12
2 files changed, 30 insertions, 47 deletions
diff --git a/build_system/src/config.rs b/build_system/src/config.rs
index c633ee57d4a..46621ef3b21 100644
--- a/build_system/src/config.rs
+++ b/build_system/src/config.rs
@@ -128,6 +128,7 @@ pub struct ConfigInfo {
     // just to set the `gcc_path` field to display it.
     pub no_download: bool,
     pub no_default_features: bool,
+    pub backend: Option<String>,
 }
 
 impl ConfigInfo {
@@ -178,6 +179,14 @@ impl ConfigInfo {
                     return Err("Expected a value after `--cg_gcc-path`, found nothing".to_string())
                 }
             },
+            "--use-backend" => match args.next() {
+                Some(backend) if !backend.is_empty() => self.backend = Some(backend),
+                _ => {
+                    return Err(
+                        "Expected an argument after `--use-backend`, found nothing".into()
+                    )
+                }
+            },
             "--no-default-features" => self.no_default_features = true,
             _ => return Ok(false),
         }
@@ -377,39 +386,25 @@ impl ConfigInfo {
             "debug"
         };
 
-        let has_builtin_backend = env
-            .get("BUILTIN_BACKEND")
-            .map(|backend| !backend.is_empty())
-            .unwrap_or(false);
-
         let mut rustflags = Vec::new();
-        if has_builtin_backend {
-            // It means we're building inside the rustc testsuite, so some options need to be handled
-            // a bit differently.
-            self.cg_backend_path = "gcc".to_string();
-
-            match env.get("RUSTC_SYSROOT") {
-                Some(rustc_sysroot) if !rustc_sysroot.is_empty() => {
-                    rustflags.extend_from_slice(&["--sysroot".to_string(), rustc_sysroot.clone()]);
-                }
-                _ => {}
-            }
-            // This should not be needed, but is necessary for the CI in the rust repository.
-            // FIXME: Remove when the rust CI switches to the master version of libgccjit.
-            rustflags.push("-Cpanic=abort".to_string());
+        self.cg_backend_path = current_dir
+            .join("target")
+            .join(channel)
+            .join(&format!("librustc_codegen_gcc.{}", self.dylib_ext))
+            .display()
+            .to_string();
+        self.sysroot_path = current_dir
+            .join("build_sysroot/sysroot")
+            .display()
+            .to_string();
+        if let Some(backend) = &self.backend {
+            rustflags.push(format!("-Zcodegen-backend={}", backend));
         } else {
-            self.cg_backend_path = current_dir
-                .join("target")
-                .join(channel)
-                .join(&format!("librustc_codegen_gcc.{}", self.dylib_ext))
-                .display()
-                .to_string();
-            self.sysroot_path = current_dir
-                .join("build_sysroot/sysroot")
-                .display()
-                .to_string();
-            rustflags.extend_from_slice(&["--sysroot".to_string(), self.sysroot_path.clone()]);
-        };
+            rustflags.extend_from_slice(&[
+                "--sysroot".to_string(), self.sysroot_path.clone(),
+                format!("-Zcodegen-backend={}", self.cg_backend_path),
+            ]);
+        }
 
         // This environment variable is useful in case we want to change options of rustc commands.
         if let Some(cg_rustflags) = env.get("CG_RUSTFLAGS") {
@@ -427,10 +422,7 @@ impl ConfigInfo {
             rustflags.push("-Csymbol-mangling-version=v0".to_string());
         }
 
-        rustflags.extend_from_slice(&[
-            "-Cdebuginfo=2".to_string(),
-            format!("-Zcodegen-backend={}", self.cg_backend_path),
-        ]);
+        rustflags.push("-Cdebuginfo=2".to_string());
 
         // Since we don't support ThinLTO, disable LTO completely when not trying to do LTO.
         // TODO(antoyo): remove when we can handle ThinLTO.
@@ -504,7 +496,8 @@ impl ConfigInfo {
     --config-file          : Location of the config file to be used
     --cg_gcc-path          : Location of the rustc_codegen_gcc root folder (used
                              when ran from another directory)
-    --no-default-features  : Add `--no-default-features` flag to cargo commands"
+    --no-default-features  : Add `--no-default-features` flag to cargo commands
+    --use-backend          : Useful only for rustc testsuite"
         );
     }
 }
diff --git a/build_system/src/test.rs b/build_system/src/test.rs
index a4db2fdebef..0895dc6bff7 100644
--- a/build_system/src/test.rs
+++ b/build_system/src/test.rs
@@ -93,7 +93,6 @@ fn show_usage() {
     --features [arg]       : Add a new feature [arg]
     --use-system-gcc       : Use system installed libgccjit
     --build-only           : Only build rustc_codegen_gcc then exits
-    --use-backend          : Useful only for rustc testsuite
     --nb-parts             : Used to split rustc_tests (for CI needs)
     --current-part         : Used with `--nb-parts`, allows you to specify which parts to test"#
     );
@@ -113,7 +112,6 @@ struct TestArg {
     use_system_gcc: bool,
     runners: BTreeSet<String>,
     flags: Vec<String>,
-    backend: Option<String>,
     nb_parts: Option<usize>,
     current_part: Option<usize>,
     sysroot_panic_abort: bool,
@@ -145,14 +143,6 @@ impl TestArg {
                     test_arg.use_system_gcc = true;
                 }
                 "--build-only" => test_arg.build_only = true,
-                "--use-backend" => match args.next() {
-                    Some(backend) if !backend.is_empty() => test_arg.backend = Some(backend),
-                    _ => {
-                        return Err(
-                            "Expected an argument after `--use-backend`, found nothing".into()
-                        )
-                    }
-                },
                 "--nb-parts" => {
                     test_arg.nb_parts = Some(get_number_after_arg(&mut args, "--nb-parts")?);
                 }
@@ -199,7 +189,7 @@ impl TestArg {
 }
 
 fn build_if_no_backend(env: &Env, args: &TestArg) -> Result<(), String> {
-    if args.backend.is_some() {
+    if args.config_info.backend.is_some() {
         return Ok(());
     }
     let mut command: Vec<&dyn AsRef<OsStr>> = vec![&"cargo", &"rustc"];