| set(LLVM_OPTIONAL_SOURCES |
| cuda-runtime-wrappers.cpp |
| mlir-cuda-runner.cpp |
| ) |
| set(LLVM_LINK_COMPONENTS |
| Core |
| Support |
| ) |
| |
| if(MLIR_CUDA_RUNNER_ENABLED) |
| if (NOT ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD)) |
| message(SEND_ERROR |
| "Building the mlir cuda runner requires the NVPTX backend") |
| endif() |
| |
| # Configure CUDA runner support. Using check_language first allows us to give |
| # a custom error message. |
| include(CheckLanguage) |
| check_language(CUDA) |
| if (CMAKE_CUDA_COMPILER) |
| enable_language(CUDA) |
| else() |
| message(SEND_ERROR |
| "Building the mlir cuda runner requires a working CUDA install") |
| endif() |
| |
| # We need the libcuda.so library. |
| find_library(CUDA_RUNTIME_LIBRARY cuda) |
| |
| add_llvm_library(cuda-runtime-wrappers SHARED |
| cuda-runtime-wrappers.cpp |
| ) |
| target_include_directories(cuda-runtime-wrappers |
| PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} |
| LLVMSupport |
| ) |
| target_link_libraries(cuda-runtime-wrappers |
| PUBLIC |
| LLVMSupport |
| ${CUDA_RUNTIME_LIBRARY} |
| ) |
| |
| get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS) |
| get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS) |
| set(LIBS |
| ${dialect_libs} |
| ${conversion_libs} |
| MLIRJitRunner |
| MLIRAnalysis |
| MLIREDSC |
| MLIRExecutionEngine |
| MLIRIR |
| MLIRParser |
| MLIRSupport |
| MLIRTargetLLVMIR |
| MLIRTargetNVVMIR |
| MLIRTransforms |
| MLIRTranslation |
| ${CUDA_RUNTIME_LIBRARY} |
| ) |
| |
| # Manually expand the target library, since our MLIR libraries |
| # aren't plugged into the LLVM dependency tracking. If we don't |
| # do this then we can't insert the CodeGen library after ourselves |
| llvm_expand_pseudo_components(TARGET_LIBS AllTargetsCodeGens) |
| # Prepend LLVM in front of every target, this is how the library |
| # are named with CMake |
| SET(targets_to_link) |
| FOREACH(t ${TARGET_LIBS}) |
| LIST(APPEND targets_to_link "LLVM${t}") |
| ENDFOREACH(t) |
| |
| add_llvm_tool(mlir-cuda-runner |
| mlir-cuda-runner.cpp |
| |
| DEPENDS |
| cuda-runtime-wrappers |
| ) |
| target_include_directories(mlir-cuda-runner |
| PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} |
| ) |
| llvm_update_compile_flags(mlir-cuda-runner) |
| target_link_libraries(mlir-cuda-runner PRIVATE ${LIBS} ${targets_to_link}) |
| |
| endif() |