diff --git a/mlir/lib/Target/LLVM/CMakeLists.txt b/mlir/lib/Target/LLVM/CMakeLists.txt index bc14c568e46be..422f7e5fa7cae 100644 --- a/mlir/lib/Target/LLVM/CMakeLists.txt +++ b/mlir/lib/Target/LLVM/CMakeLists.txt @@ -70,17 +70,23 @@ if ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD) if(MLIR_ENABLE_NVPTXCOMPILER) # Find the `nvptxcompiler` library. # TODO: Bump the MLIR CMake version to 3.25 and use `CUDA::nvptxcompiler_static`. - find_library(MLIR_NVPTXCOMPILER_LIB nvptxcompiler_static + find_library(MLIR_NVPTXCOMPILER_LIB_PATH nvptxcompiler_static PATHS ${CUDAToolkit_LIBRARY_DIR} NO_DEFAULT_PATH) # Fail if `nvptxcompiler_static` couldn't be found. - if(MLIR_NVPTXCOMPILER_LIB STREQUAL "MLIR_NVPTXCOMPILER_LIB-NOTFOUND") + if(MLIR_NVPTXCOMPILER_LIB_PATH STREQUAL "MLIR_NVPTXCOMPILER_LIB_PATH-NOTFOUND") message(FATAL_ERROR "Requested using the `nvptxcompiler` library backend but it couldn't be found.") endif() + add_library(MLIR_NVPTXCOMPILER_LIB STATIC IMPORTED GLOBAL) + # Downstream projects can modify this path and use it in CMake. For example: + # add_library(MLIR_NVPTXCOMPILER_LIB STATIC IMPORTED GLOBAL) + # set_property(TARGET MLIR_NVPTXCOMPILER_LIB PROPERTY IMPORTED_LOCATION ${...}) + # where `...` is to be replaced with the path to the library. + set_property(TARGET MLIR_NVPTXCOMPILER_LIB PROPERTY IMPORTED_LOCATION ${MLIR_NVPTXCOMPILER_LIB_PATH}) # Link against `nvptxcompiler_static`. TODO: use `CUDA::nvptxcompiler_static`. - target_link_libraries(MLIRNVVMTarget PRIVATE ${MLIR_NVPTXCOMPILER_LIB}) + target_link_libraries(MLIRNVVMTarget PRIVATE MLIR_NVPTXCOMPILER_LIB) target_include_directories(obj.MLIRNVVMTarget PUBLIC ${CUDAToolkit_INCLUDE_DIRS}) endif() else()