mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use crate::build_sysroot;
 | |
| use crate::path::Dirs;
 | |
| use crate::prepare::GitRepo;
 | |
| use crate::utils::{spawn_and_wait, CargoProject, Compiler};
 | |
| use crate::{CodegenBackend, SysrootKind};
 | |
| 
 | |
| static ABI_CAFE_REPO: GitRepo = GitRepo::github(
 | |
|     "Gankra",
 | |
|     "abi-cafe",
 | |
|     "4c6dc8c9c687e2b3a760ff2176ce236872b37212",
 | |
|     "588df6d66abbe105",
 | |
|     "abi-cafe",
 | |
| );
 | |
| 
 | |
| static ABI_CAFE: CargoProject = CargoProject::new(&ABI_CAFE_REPO.source_dir(), "abi_cafe_target");
 | |
| 
 | |
| pub(crate) fn run(
 | |
|     channel: &str,
 | |
|     sysroot_kind: SysrootKind,
 | |
|     dirs: &Dirs,
 | |
|     cg_clif_dylib: &CodegenBackend,
 | |
|     rustup_toolchain_name: Option<&str>,
 | |
|     bootstrap_host_compiler: &Compiler,
 | |
| ) {
 | |
|     ABI_CAFE_REPO.fetch(dirs);
 | |
|     ABI_CAFE_REPO.patch(dirs);
 | |
| 
 | |
|     eprintln!("Building sysroot for abi-cafe");
 | |
|     build_sysroot::build_sysroot(
 | |
|         dirs,
 | |
|         channel,
 | |
|         sysroot_kind,
 | |
|         cg_clif_dylib,
 | |
|         bootstrap_host_compiler,
 | |
|         rustup_toolchain_name,
 | |
|         bootstrap_host_compiler.triple.clone(),
 | |
|     );
 | |
| 
 | |
|     eprintln!("Running abi-cafe");
 | |
| 
 | |
|     let pairs = ["rustc_calls_cgclif", "cgclif_calls_rustc", "cgclif_calls_cc", "cc_calls_cgclif"];
 | |
| 
 | |
|     let mut cmd = ABI_CAFE.run(bootstrap_host_compiler, dirs);
 | |
|     cmd.arg("--");
 | |
|     cmd.arg("--pairs");
 | |
|     cmd.args(pairs);
 | |
|     cmd.arg("--add-rustc-codegen-backend");
 | |
|     match cg_clif_dylib {
 | |
|         CodegenBackend::Local(path) => {
 | |
|             cmd.arg(format!("cgclif:{}", path.display()));
 | |
|         }
 | |
|         CodegenBackend::Builtin(name) => {
 | |
|             cmd.arg(format!("cgclif:{name}"));
 | |
|         }
 | |
|     }
 | |
|     cmd.current_dir(ABI_CAFE.source_dir(dirs));
 | |
| 
 | |
|     spawn_and_wait(cmd);
 | |
| }
 | 
