
Extract Flang's runtime library to use the LLVM_ENABLE_RUNTIME mechanism. It will only become active when `LLVM_ENABLE_RUNTIMES=flang-rt` is used, which also changes the `FLANG_INCLUDE_RUNTIME` to `OFF` so the old runtime build rules do not conflict. This also means that unless `LLVM_ENABLE_RUNTIMES=flang-rt` is passed, nothing changes with the current build process. Motivation: * Consistency with LLVM's other runtime libraries (compiler-rt, libc, libcxx, openmp offload, ...) * Allows compiling the runtime for multiple targets at once using the LLVM_RUNTIME_TARGETS configuration options * Installs the runtime into the compiler's per-target resource directory so it can be automatically found even when cross-compiling Also see RFC discussion at https://discourse.llvm.org/t/rfc-use-llvm-enable-runtimes-for-flangs-runtime/80826
35 lines
964 B
CMake
35 lines
964 B
CMake
#===-- lib/cuda/CMakeLists.txt ---------------------------------------------===#
|
|
#
|
|
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
# See https://llvm.org/LICENSE.txt for license information.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
#
|
|
#===------------------------------------------------------------------------===#
|
|
|
|
|
|
add_flangrt_library(flang_rt.cuda STATIC
|
|
allocatable.cpp
|
|
allocator.cpp
|
|
descriptor.cpp
|
|
init.cpp
|
|
kernel.cpp
|
|
memmove-function.cpp
|
|
memory.cpp
|
|
registration.cpp
|
|
|
|
# libflang_rt.runtime depends on a certain version of CUDA. To be able to have
|
|
# multiple build of this library with different CUDA version, the version is
|
|
# added to the library name.
|
|
TARGET_PROPERTIES
|
|
OUTPUT_NAME "flang_rt.cuda_${CUDAToolkit_VERSION_MAJOR}"
|
|
|
|
INCLUDE_DIRECTORIES
|
|
PRIVATE ${CUDAToolkit_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_link_libraries(flang_rt.cuda
|
|
PUBLIC
|
|
flang_rt.runtime
|
|
CUDA::cudart_static
|
|
)
|