
Following the conclusion of the [RFC](https://discourse.llvm.org/t/rfc-names-for-flang-rt-libraries/84321), rename Flang's runtime libraries as follows: * libFortranRuntime.(a|so) to libflang_rt.runtime.(a|so) * libFortranFloat128Math.a to libflang_rt.quadmath.a * libCufRuntime_cuda_${CUDAToolkit_VERSION_MAJOR}.(a|so) to libflang_rt.cuda_${CUDAToolkit_VERSION_MAJOR}.(a|so) This follows the same naming scheme as Compiler-RT libraries (`libclang_rt.${component}.(a|so)`). It provides some consistency between Flang's runtime libraries for current and potential future library components.
89 lines
2.5 KiB
CMake
89 lines
2.5 KiB
CMake
include(AddFlangOffloadRuntime)
|
|
|
|
if (FLANG_EXPERIMENTAL_CUDA_RUNTIME)
|
|
# If Fortran runtime is built as CUDA library, the linking
|
|
# of targets that link flang_rt.runtime must be done
|
|
# with CUDA_RESOLVE_DEVICE_SYMBOLS.
|
|
# CUDA language must be enabled for CUDA_RESOLVE_DEVICE_SYMBOLS
|
|
# to take effect.
|
|
enable_language(CUDA)
|
|
endif()
|
|
|
|
add_custom_target(FlangUnitTests)
|
|
set_target_properties(FlangUnitTests PROPERTIES FOLDER "Flang/Tests")
|
|
|
|
function(add_flang_unittest_offload_properties target)
|
|
# Do not apply runtime properties if not even compiling the runtime.
|
|
if (NOT FLANG_INCLUDE_RUNTIME)
|
|
return ()
|
|
endif ()
|
|
|
|
# Set CUDA_RESOLVE_DEVICE_SYMBOLS.
|
|
if (FLANG_EXPERIMENTAL_CUDA_RUNTIME)
|
|
set_target_properties(${target}
|
|
PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON
|
|
)
|
|
endif()
|
|
# Enable OpenMP offload during linking. We may need to replace
|
|
# LINK_OPTIONS with COMPILE_OPTIONS when there are OpenMP offload
|
|
# unittests.
|
|
#
|
|
# FIXME: replace 'native' in --offload-arch option with the list
|
|
# of targets that Fortran Runtime was built for.
|
|
# Common code must be moved from flang/runtime/CMakeLists.txt.
|
|
if (NOT FLANG_EXPERIMENTAL_OMP_OFFLOAD_BUILD STREQUAL "off")
|
|
set_target_properties(${target}
|
|
PROPERTIES LINK_OPTIONS
|
|
"-fopenmp;--offload-arch=native"
|
|
)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(add_flang_unittest test_dirname)
|
|
add_unittest(FlangUnitTests ${test_dirname} ${ARGN})
|
|
add_flang_unittest_offload_properties(${test_dirname})
|
|
endfunction()
|
|
|
|
if (CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG)
|
|
add_compile_options("-Wno-suggest-override")
|
|
endif()
|
|
|
|
function(add_flang_nongtest_unittest test_name)
|
|
cmake_parse_arguments(ARG
|
|
"SLOW_TEST"
|
|
""
|
|
""
|
|
${ARGN})
|
|
|
|
if(ARG_SLOW_TEST)
|
|
set(suffix .slow)
|
|
else()
|
|
set(suffix .test)
|
|
endif()
|
|
|
|
add_executable(${test_name}${suffix} ${test_name}.cpp)
|
|
set_target_properties(${test_name}${suffix} PROPERTIES FOLDER "Flang/Tests/Unit")
|
|
|
|
if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
|
|
set(llvm_libs LLVM)
|
|
else()
|
|
llvm_map_components_to_libnames(llvm_libs Support)
|
|
endif()
|
|
target_link_libraries(${test_name}${suffix} ${llvm_libs} ${ARG_UNPARSED_ARGUMENTS})
|
|
|
|
if(NOT ARG_SLOW_TEST)
|
|
add_dependencies(FlangUnitTests ${test_name}${suffix})
|
|
endif()
|
|
|
|
add_flang_unittest_offload_properties(${test_name}${suffix})
|
|
endfunction()
|
|
|
|
add_subdirectory(Optimizer)
|
|
add_subdirectory(Common)
|
|
add_subdirectory(Decimal)
|
|
add_subdirectory(Evaluate)
|
|
if (FLANG_INCLUDE_RUNTIME)
|
|
add_subdirectory(Runtime)
|
|
endif ()
|
|
add_subdirectory(Frontend)
|