diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake --- a/libc/cmake/modules/LLVMLibCObjectRules.cmake +++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake @@ -195,7 +195,9 @@ if(LIBC_GPU_TARGET_ARCHITECTURE_IS_AMDGPU) target_compile_options(${internal_target_name} PRIVATE -mcpu=${LIBC_GPU_TARGET_ARCHITECTURE} -flto) elseif(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX) - target_compile_options(${internal_target_name} PRIVATE -march=${LIBC_GPU_TARGET_ARCHITECTURE}) + target_compile_options(${internal_target_name} PRIVATE + -march=${LIBC_GPU_TARGET_ARCHITECTURE} + --cuda-path=${LIBC_CUDA_ROOT}) endif() target_include_directories(${internal_target_name} PRIVATE ${include_dirs}) if(full_deps_list) diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake --- a/libc/cmake/modules/LLVMLibCTestRules.cmake +++ b/libc/cmake/modules/LLVMLibCTestRules.cmake @@ -507,6 +507,7 @@ --target=${LIBC_GPU_TARGET_TRIPLE}) elseif(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX) target_compile_options(${fq_build_target_name} PRIVATE + --cuda-path=${LIBC_CUDA_ROOT} -march=${LIBC_GPU_TARGET_ARCHITECTURE} --target=${LIBC_GPU_TARGET_TRIPLE}) endif() diff --git a/libc/cmake/modules/prepare_libc_gpu_build.cmake b/libc/cmake/modules/prepare_libc_gpu_build.cmake --- a/libc/cmake/modules/prepare_libc_gpu_build.cmake +++ b/libc/cmake/modules/prepare_libc_gpu_build.cmake @@ -98,3 +98,11 @@ else() message(FATAL_ERROR "Unknown GPU architecture '${gpu_test_architecture}'") endif() + +if(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX) + find_package(CUDAToolkit QUIET) + if(CUDAToolkit_FOUND) + get_filename_component(LIBC_CUDA_ROOT "${CUDAToolkit_BIN_DIR}" DIRECTORY ABSOLUTE) + message(WARNING ${LIBC_CUDA_ROOT}) + endif() +endif() diff --git a/libc/startup/gpu/nvptx/CMakeLists.txt b/libc/startup/gpu/nvptx/CMakeLists.txt --- a/libc/startup/gpu/nvptx/CMakeLists.txt +++ b/libc/startup/gpu/nvptx/CMakeLists.txt @@ -10,6 +10,7 @@ -nogpulib # Do not include any GPU vendor libraries. -march=${LIBC_GPU_TARGET_ARCHITECTURE} --target=${LIBC_GPU_TARGET_TRIPLE} + --cuda-path=${LIBC_CUDA_ROOT} NO_GPU_BUNDLE # Compile this file directly without special GPU handling. ) get_fq_target_name(crt1 fq_name) @@ -19,4 +20,5 @@ PUBLIC "-march=${LIBC_GPU_TARGET_ARCHITECTURE}" "--target=${LIBC_GPU_TARGET_TRIPLE}" + "--cuda-path=${LIBC_CUDA_ROOT}" ) diff --git a/libc/test/IntegrationTest/CMakeLists.txt b/libc/test/IntegrationTest/CMakeLists.txt --- a/libc/test/IntegrationTest/CMakeLists.txt +++ b/libc/test/IntegrationTest/CMakeLists.txt @@ -8,6 +8,7 @@ set(TEST_COMPILE_FLAGS -march=${LIBC_GPU_TARGET_ARCHITECTURE} --target=${LIBC_GPU_TARGET_TRIPLE} + --cuda-path=${LIBC_CUDA_ROOT} ) endif()