diff --git a/src/bootstrap/src/core/build_steps/llvm.rs b/src/bootstrap/src/core/build_steps/llvm.rs index c04a8cd6b7ab2..900508d294725 100644 --- a/src/bootstrap/src/core/build_steps/llvm.rs +++ b/src/bootstrap/src/core/build_steps/llvm.rs @@ -1038,6 +1038,9 @@ impl Step for OmpOffload { let inc_dir = base.display(); cflags.push_all(format!(" -I {inc_dir}")); } + cflags.push_all( + " -ULIBC_NAMESPACE -DLIBC_NAMESPACE=__llvm_libc_22_1_0_rust1_95_0nightly", + ); configure_cmake(builder, target, &mut cfg, true, LdFlags::default(), cflags, &[]); @@ -1061,6 +1064,10 @@ impl Step for OmpOffload { .define("OFFLOAD_INCLUDE_TESTS", "OFF") .define("LLVM_ROOT", builder.llvm_out(target).join("build")) .define("LLVM_DIR", llvm_cmake_dir.clone()) + // FIXME(offload): re-evaluate with LLVM23 if we can drop these three lines + //.define("LLVM_ENABLE_PER_TARGET_RUNTIME_DIR", "ON") + .define("CMAKE_CXX_COMPILER_WORKS", "TRUE") + .define("CMAKE_C_COMPILER_WORKS", "TRUE") .define("LLVM_DEFAULT_TARGET_TRIPLE", omp_target); if let Some(p) = clang_dir.clone() { cfg.define("Clang_DIR", p); @@ -1074,7 +1081,10 @@ impl Step for OmpOffload { } else { // OpenMP provides some device libraries, so we also compile it for all gpu targets. cfg.define("LLVM_USE_LINKER", "lld"); - cfg.define("LLVM_ENABLE_RUNTIMES", "openmp"); + cfg.define("LIBC_INCLUDE_BENCHMARKS", "OFF"); + cfg.define("LIBC_TARGET_TRIPLE", omp_target); + cfg.define("LLVM_LIBC_FULL_BUILD", "ON"); + cfg.define("LLVM_ENABLE_RUNTIMES", "openmp;libc"); cfg.define("CMAKE_C_COMPILER_TARGET", omp_target); cfg.define("CMAKE_CXX_COMPILER_TARGET", omp_target); } diff --git a/src/llvm-project b/src/llvm-project index a306f6a8c5349..2f08734369828 160000 --- a/src/llvm-project +++ b/src/llvm-project @@ -1 +1 @@ -Subproject commit a306f6a8c53494d32c171c346c6809c97124c697 +Subproject commit 2f08734369828fc9de24241328cdae0245f2d0ce