diff options
-rw-r--r-- | libc/cmake/modules/prepare_libc_gpu_build.cmake | 45 | ||||
-rw-r--r-- | llvm/runtimes/CMakeLists.txt | 4 |
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() |