Skip to content

Commit 4b1cb50

Browse files
committed
wip
1 parent 98a2e0f commit 4b1cb50

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

src/bootstrap/src/core/build_steps/compile.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2216,6 +2216,42 @@ impl Step for Assemble {
22162216
}
22172217
}
22182218

2219+
if builder.config.llvm_offload && !builder.config.dry_run() {
2220+
let offload_install = builder.ensure(llvm::OmpOffload { target: build_compiler.host });
2221+
if let Some(llvm_config) = builder.llvm_config(builder.config.host_target) {
2222+
let src_dir = offload_install.join("lib");
2223+
let target_libdir =
2224+
builder.sysroot_target_libdir(target_compiler, target_compiler.host);
2225+
let llvm = llvm::get_llvm_version(builder, &llvm_config);
2226+
let llvm_version = llvm.split('.').take(2).collect::<Vec<_>>().join(".");
2227+
let rust_version = builder.rust_version();
2228+
// e.g. libLLVMOffload.so.21.1
2229+
let lib_ext = std::env::consts::DLL_EXTENSION;
2230+
let libenzyme = format!("libLLVMOffload.{lib_ext}.{llvm_version}");
2231+
dbg!(&libenzyme);
2232+
let dst_lib = libdir.join(&libenzyme).with_extension(lib_ext);
2233+
let target_dst_lib = target_libdir.join(&libenzyme).with_extension(lib_ext);
2234+
let src_lib = src_dir.join(&libenzyme);
2235+
builder.copy_link(&src_lib, &dst_lib, FileType::NativeLibrary);
2236+
builder.copy_link(&src_lib, &target_dst_lib, FileType::NativeLibrary);
2237+
2238+
// libomp.so, libomptarget.so
2239+
let omp = src_dir.join("libomp").with_extension(lib_ext);
2240+
let tgt = src_dir.join("libomptarget").with_extension(lib_ext);
2241+
builder.copy_link(&omp, &dst_lib, FileType::NativeLibrary);
2242+
builder.copy_link(&omp, &dst_lib, FileType::NativeLibrary);
2243+
builder.copy_link(&tgt, &dst_lib, FileType::NativeLibrary);
2244+
builder.copy_link(&tgt, &dst_lib, FileType::NativeLibrary);
2245+
//[\u@\h:\W]$ ls ../offload-outdir/lib
2246+
// amdgcn-amd-amdhsa libarcher.so libgomp.so libiomp5.so libLLVMOffload.so.21.1 libomp.so libomptarget.so.21.1
2247+
// cmake libarcher_static.a libgomp.so.1 libLLVMOffload.so libompd.so libomptarget.so nvptx64-nvidia-cuda
2248+
// [\u@\h:\W]$ ls ../offload-outdir/lib/amdgcn-amd-amdhsa
2249+
// libompdevice.a libomptarget-amdgpu.bc
2250+
// [\u@\h:\W]$ ls nv
2251+
// [\u@\h:\W]$ ls ../offload-outdir/lib/nvptx64-nvidia-cuda
2252+
}
2253+
}
2254+
22192255
// Build the libraries for this compiler to link to (i.e., the libraries
22202256
// it uses at runtime).
22212257
debug!(

0 commit comments

Comments
 (0)