aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/cmake/modules/prepare_libc_gpu_build.cmake45
-rw-r--r--llvm/runtimes/CMakeLists.txt4
2 files changed, 15 insertions, 34 deletions
diff --git a/libc/cmake/modules/prepare_libc_gpu_build.cmake b/libc/cmake/modules/prepare_libc_gpu_build.cmake
index dc8beb1..e2a0908 100644
--- a/libc/cmake/modules/prepare_libc_gpu_build.cmake
+++ b/libc/cmake/modules/prepare_libc_gpu_build.cmake
@@ -16,6 +16,17 @@ if(NOT LLVM_LIBC_FULL_BUILD)
"GPU.")
endif()
+# Set the required flags globally so standard CMake utilities can compile.
+if(LIBC_TARGET_TRIPLE)
+ set(CMAKE_REQUIRED_FLAGS "--target=${LIBC_TARGET_TRIPLE}")
+endif()
+if(LIBC_TARGET_ARCHITECTURE_IS_AMDGPU)
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -nogpulib")
+elseif(LIBC_TARGET_ARCHITECTURE_IS_NVPTX)
+ set(CMAKE_REQUIRED_FLAGS
+ "${CMAKE_REQUIRED_FLAGS} -flto -c -Wno-unused-command-line-argument")
+endif()
+
# Identify the program used to package multiple images into a single binary.
get_filename_component(compiler_path ${CMAKE_CXX_COMPILER} DIRECTORY)
if(TARGET clang-offload-packager)
@@ -56,39 +67,9 @@ endif()
set(LIBC_GPU_TEST_ARCHITECTURE "" CACHE STRING "Architecture for the GPU tests")
if(LIBC_TARGET_ARCHITECTURE_IS_AMDGPU)
- # Identify any locally installed AMD GPUs on the system using 'amdgpu-arch'.
- if(TARGET amdgpu-arch)
- get_target_property(LIBC_AMDGPU_ARCH amdgpu-arch LOCATION)
- else()
- find_program(LIBC_AMDGPU_ARCH
- NAMES amdgpu-arch NO_DEFAULT_PATH
- PATHS ${LLVM_BINARY_DIR}/bin ${compiler_path})
- endif()
- if(LIBC_AMDGPU_ARCH)
- execute_process(COMMAND ${LIBC_AMDGPU_ARCH}
- OUTPUT_VARIABLE arch_tool_output
- ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(arch_tool_output MATCHES "^gfx[0-9]+")
- set(PLATFORM_HAS_GPU TRUE)
- endif()
- endif()
+ check_cxx_compiler_flag(-mcpu=native PLATFORM_HAS_GPU)
elseif(LIBC_TARGET_ARCHITECTURE_IS_NVPTX)
- # Identify any locally installed NVIDIA GPUs on the system using 'nvptx-arch'.
- if(TARGET nvptx-arch)
- get_target_property(LIBC_NVPTX_ARCH nvptx-arch LOCATION)
- else()
- find_program(LIBC_NVPTX_ARCH
- NAMES nvptx-arch NO_DEFAULT_PATH
- PATHS ${LLVM_BINARY_DIR}/bin ${compiler_path})
- endif()
- if(LIBC_NVPTX_ARCH)
- execute_process(COMMAND ${LIBC_NVPTX_ARCH}
- OUTPUT_VARIABLE arch_tool_output
- ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(arch_tool_output MATCHES "^sm_[0-9]+")
- set(PLATFORM_HAS_GPU TRUE)
- endif()
- endif()
+ check_cxx_compiler_flag(-march=native PLATFORM_HAS_GPU)
endif()
set(gpu_test_architecture "")
diff --git a/llvm/runtimes/CMakeLists.txt b/llvm/runtimes/CMakeLists.txt
index 029b6a7..52e9519 100644
--- a/llvm/runtimes/CMakeLists.txt
+++ b/llvm/runtimes/CMakeLists.txt
@@ -496,7 +496,7 @@ if(build_runtimes)
if(TARGET amdhsa-loader)
list(APPEND extra_cmake_args
"-DRUNTIMES_amdgcn-amd-amdhsa_LIBC_GPU_LOADER_EXECUTABLE=$<TARGET_FILE:amdhsa-loader>")
- list(APPEND extra_deps amdhsa-loader amdgpu-arch)
+ list(APPEND extra_deps amdhsa-loader)
endif()
list(APPEND extra_cmake_args "-DRUNTIMES_amdgcn-amd-amdhsa_LLVM_LIBC_FULL_BUILD=ON")
endif()
@@ -504,7 +504,7 @@ if(build_runtimes)
if(TARGET nvptx-loader)
list(APPEND extra_cmake_args
"-DRUNTIMES_nvptx64-nvidia-cuda_LIBC_GPU_LOADER_EXECUTABLE=$<TARGET_FILE:nvptx-loader>")
- list(APPEND extra_deps nvptx-loader nvptx-arch)
+ list(APPEND extra_deps nvptx-loader)
endif()
list(APPEND extra_cmake_args "-DRUNTIMES_nvptx64-nvidia-cuda_LLVM_LIBC_FULL_BUILD=ON")
endif()