CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
120 lines
4.2 KiB
CMake
120 lines
4.2 KiB
CMake
#===-- unittests/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
|
|
#
|
|
#===------------------------------------------------------------------------===#
|
|
|
|
# Target that depends on all unittests
|
|
add_custom_target(FlangRTUnitTests)
|
|
set_target_properties(FlangRTUnitTests PROPERTIES FOLDER "Flang-RT/Meta")
|
|
|
|
# LLVM uses a modified version of GTest that uses LLVMSupport for console
|
|
# output. We are using the pre-compiled GTest library from the LLVM build,
|
|
# if available. Otherwise, do nothing.
|
|
|
|
if (CMAKE_CROSSCOMPILING)
|
|
# TODO: It is possible that LLVM_GTEST_RUN_UNDER defines an emulator or
|
|
# ssh remote command invocation; for this case provide an option to
|
|
# enable unittests.
|
|
message(STATUS "Flang-RT unittests disabled because we are cross-compiling")
|
|
return ()
|
|
endif ()
|
|
|
|
# Make the targets default_gtest and default_gtest_main available.
|
|
build_gtest()
|
|
|
|
add_dependencies(flang-rt-test-depends
|
|
FlangRTUnitTests
|
|
flang_rt.runtime.unittest
|
|
)
|
|
|
|
if (CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG)
|
|
add_compile_options("-Wno-suggest-override")
|
|
endif()
|
|
|
|
|
|
function(add_flangrt_unittest_offload_properties target)
|
|
# Set CUDA_RESOLVE_DEVICE_SYMBOLS.
|
|
if (FLANG_RT_EXPERIMENTAL_OFFLOAD_SUPPORT STREQUAL "CUDA")
|
|
set_target_properties(${target}
|
|
PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON
|
|
)
|
|
endif()
|
|
endfunction()
|
|
|
|
# flang-rt on Windows requires compiler-rt for some symbols. For binaries built
|
|
# with flang this dependency is added by the flang driver, but since the unit
|
|
# tests are built with clang we need to add the dependency manually.
|
|
function(add_flangrt_dependent_libs target)
|
|
if (MSVC AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
if (FLANG_RT_BUILTINS_LIBRARY)
|
|
target_compile_options(${target} PRIVATE "$<$<COMPILE_LANGUAGE:CXX,C>:-Xclang>" "$<$<COMPILE_LANGUAGE:CXX,C>:--dependent-lib=${FLANG_RT_BUILTINS_LIBRARY}>")
|
|
endif ()
|
|
endif ()
|
|
if (MSVC AND CMAKE_Fortran_COMPILER_ID STREQUAL "LLVMFlang")
|
|
if (FLANG_RT_BUILTINS_LIBRARY)
|
|
target_compile_options(${target} PRIVATE "$<$<COMPILE_LANGUAGE:Fortran>:-Xflang>" "$<$<COMPILE_LANGUAGE:Fortran>:--dependent-lib=${FLANG_RT_BUILTINS_LIBRARY}>")
|
|
else ()
|
|
message(WARNING "Did not find libclang_rt.builtins.lib.
|
|
LLVM may emit builtins that are not implemented in msvcrt/ucrt and
|
|
instead falls back to builtins from Compiler-RT. Linking with ${tgtname}
|
|
may result in a linker error.")
|
|
endif ()
|
|
elseif (APPLE)
|
|
# Clang on Darwin enables non-POSIX extensions by default.
|
|
# This causes some macros to leak, such as HUGE from <math.h>, which
|
|
# causes some conflicts with Flang symbols (but not with Flang-RT, for
|
|
# now).
|
|
# It also causes some Flang-RT extensions to be disabled, such as fdate,
|
|
# that checks for _POSIX_C_SOURCE.
|
|
# Setting _POSIX_C_SOURCE avoids these issues.
|
|
target_compile_options(${target} PRIVATE "-D_POSIX_C_SOURCE=200809")
|
|
endif ()
|
|
endfunction()
|
|
|
|
|
|
function(add_flangrt_unittest test_dirname)
|
|
cmake_parse_arguments(ARG
|
|
""
|
|
""
|
|
"LINK_LIBS"
|
|
${ARGN})
|
|
|
|
add_unittest(FlangRTUnitTests ${test_dirname} ${ARG_UNPARSED_ARGUMENTS})
|
|
|
|
target_link_libraries(${test_dirname} PRIVATE ${ARG_LINK_LIBS})
|
|
add_flangrt_unittest_offload_properties(${test_dirname})
|
|
add_flangrt_dependent_libs(${test_dirname})
|
|
endfunction()
|
|
|
|
function(add_flangrt_nongtest_unittest test_name)
|
|
cmake_parse_arguments(ARG
|
|
"SLOW_TEST"
|
|
""
|
|
"LINK_LIBS"
|
|
${ARGN})
|
|
|
|
if(ARG_SLOW_TEST)
|
|
set(suffix .slow)
|
|
else()
|
|
set(suffix .test)
|
|
endif()
|
|
|
|
add_executable(${test_name}${suffix} EXCLUDE_FROM_ALL ${ARG_UNPARSED_ARGUMENTS})
|
|
set_target_properties(${test_name}${suffix} PROPERTIES FOLDER "Flang-RT/Tests/Unit")
|
|
|
|
target_link_libraries(${test_name}${suffix} PRIVATE NonGTestTesting ${ARG_LINK_LIBS})
|
|
add_flangrt_dependent_libs(${test_name}${suffix})
|
|
|
|
if(NOT ARG_SLOW_TEST)
|
|
add_dependencies(FlangRTUnitTests ${test_name}${suffix})
|
|
endif()
|
|
|
|
add_flangrt_unittest_offload_properties(${test_name}${suffix})
|
|
endfunction()
|
|
|
|
add_subdirectory(Evaluate)
|
|
add_subdirectory(Runtime)
|