-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[libc] Fix the GPU build when building inside the NATIVE project #118573
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Summary: We use the NATIVE directory for cross-compiling tools that need to be run on the host. This was not forwarding the CMake arguments we used to check if this was a GPU compile that created its own tools. Forward that and simplify. Fixes llvm#118558
@llvm/pr-subscribers-libc Author: Joseph Huber (jhuber6) ChangesSummary: Fixes #118558 Full diff: https://github.com/llvm/llvm-project/pull/118573.diff 2 Files Affected:
diff --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt
index fd82359022cffd..11a355b1203602 100644
--- a/libc/CMakeLists.txt
+++ b/libc/CMakeLists.txt
@@ -52,22 +52,9 @@ set(LIBC_NAMESPACE ${default_namespace}
# We will build the GPU utilities if we are not doing a runtimes build.
option(LIBC_BUILD_GPU_LOADER "Always build the GPU loader utilities" OFF)
-if(LIBC_BUILD_GPU_LOADER OR NOT LLVM_RUNTIMES_BUILD)
- foreach(_name ${LLVM_RUNTIME_TARGETS})
- if("libc" IN_LIST RUNTIMES_${_name}_LLVM_ENABLE_RUNTIMES)
- if("${_name}" STREQUAL "amdgcn-amd-amdhsa" OR "${_name}" STREQUAL "nvptx64-nvidia-cuda")
- set(LIBC_NEED_LOADER_UTILS TRUE)
- endif()
- endif()
- endforeach()
- if("${LIBC_TARGET_TRIPLE}" STREQUAL "amdgcn-amd-amdhsa" OR
- "${LIBC_TARGET_TRIPLE}" STREQUAL "nvptx64-nvidia-cuda")
- set(LIBC_NEED_LOADER_UTILS TRUE)
- endif()
- if(LIBC_NEED_LOADER_UTILS)
- add_subdirectory(utils/gpu)
- return()
- endif()
+if(LIBC_BUILD_GPU_LOADER OR ((NOT LLVM_RUNTIMES_BUILD) AND LLVM_LIBC_GPU_BUILD))
+ add_subdirectory(utils/gpu)
+ return()
endif()
add_subdirectory(newhdrgen)
diff --git a/llvm/cmake/modules/CrossCompile.cmake b/llvm/cmake/modules/CrossCompile.cmake
index e36a71f522d82c..c22d185349dcc5 100644
--- a/llvm/cmake/modules/CrossCompile.cmake
+++ b/llvm/cmake/modules/CrossCompile.cmake
@@ -78,6 +78,9 @@ function(llvm_create_cross_target project_name target_name toolchain buildtype)
list(APPEND libc_flags -DLLVM_FORCE_BUILD_RUNTIME=ON)
endif()
endif()
+ if(LLVM_LIBC_GPU_BUILD)
+ list(APPEND libc_flags -DLLVM_LIBC_GPU_BUILD=ON)
+ endif()
add_custom_command(OUTPUT ${${project_name}_${target_name}_BUILD}/CMakeCache.txt
COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}"
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for figuring this out!
Looks like there's some more references to LIBC_HDRGEN_EXE in llvm/cmake/modules/CrossCompile.cmake that can get cleaned up, too.
Not that this makes GPU build + project libc build not work, but I'm not too concerened because we're deprecating that anyways. |
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/146/builds/1763 Here is the relevant piece of the build log for the reference
|
Summary:
We use the NATIVE directory for cross-compiling tools that need to be
run on the host. This was not forwarding the CMake arguments we used to
check if this was a GPU compile that created its own tools. Forward that
and simplify.
Fixes #118558