136 lines · plain
1# Test runner infrastructure for Flang. This configures the Flang test trees2# for use by Lit, and delegates to LLVM's lit test handlers.3add_subdirectory(lib)4 5llvm_canonicalize_cmake_booleans(6 FLANG_STANDALONE_BUILD7 LLVM_BUILD_EXAMPLES8 LLVM_BYE_LINK_INTO_TOOLS9 LLVM_ENABLE_PLUGINS10)11 12set(FLANG_TOOLS_DIR ${FLANG_BINARY_DIR}/bin)13 14# Check if 128-bit float computations can be done via long double15check_cxx_source_compiles(16 "#include <cfloat>17 #if LDBL_MANT_DIG != 11318 #error LDBL_MANT_DIG != 11319 #endif20 int main() { return 0; }21 "22 HAVE_LDBL_MANT_DIG_113)23 24# FIXME In out-of-tree builds, "SHLIBDIR" is undefined and passing it to25# `configure_lit_site_cfg` leads to a configuration error. This is currently26# only required by plugins/examples, which are not supported in out-of-tree27# builds.28if (FLANG_STANDALONE_BUILD)29 set(PATHS_FOR_PLUGINS "")30else ()31 set(PATHS_FOR_PLUGINS "SHLIBDIR")32endif ()33 34configure_lit_site_cfg(35 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in36 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py37 MAIN_CONFIG38 ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py39 PATHS40 ${PATHS_FOR_PLUGINS}41)42 43configure_lit_site_cfg(44 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in45 ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py46 MAIN_CONFIG47 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py48)49 50configure_lit_site_cfg(51 ${CMAKE_CURRENT_SOURCE_DIR}/NonGtestUnit/lit.site.cfg.py.in52 ${CMAKE_CURRENT_BINARY_DIR}/NonGtestUnit/lit.site.cfg.py53 MAIN_CONFIG54 ${CMAKE_CURRENT_SOURCE_DIR}/NonGtestUnit/lit.cfg.py55)56 57set(FLANG_TEST_PARAMS58 flang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py)59 60set(FLANG_TEST_DEPENDS61 flang62 module_files63 fir-opt64 tco65 bbc66 FortranDecimal67)68 69if (NOT FLANG_STANDALONE_BUILD)70 list(APPEND FLANG_TEST_DEPENDS71 llvm-config72 FileCheck73 count74 not75 llvm-bcanalyzer76 llvm-dis77 llvm-objcopy78 llvm-objdump79 llvm-profdata80 llvm-readelf81 llvm-readobj82 split-file83 )84endif ()85 86if (LLVM_BUILD_EXAMPLES AND LLVM_ENABLE_PLUGINS AND NOT (WIN32 OR CYGWIN) AND NOT FLANG_STANDALONE_BUILD)87 list(APPEND FLANG_TEST_DEPENDS Bye)88endif()89 90if (FLANG_INCLUDE_TESTS)91 if (FLANG_GTEST_AVAIL)92 list(APPEND FLANG_TEST_DEPENDS FlangUnitTests)93 endif()94endif()95 96if (LLVM_BUILD_EXAMPLES)97 list(APPEND FLANG_TEST_DEPENDS98 flangPrintFunctionNames99 flangOmpReport100 flangFeatureList101 )102endif ()103 104if ("openmp" IN_LIST LLVM_ENABLE_RUNTIMES AND NOT FLANG_STANDALONE_BUILD)105 list(APPEND FLANG_TEST_DEPENDS "libomp-mod")106endif ()107 108add_custom_target(flang-test-depends DEPENDS ${FLANG_TEST_DEPENDS})109set_target_properties(flang-test-depends PROPERTIES FOLDER "Flang/Meta")110 111add_lit_testsuite(check-flang "Running the Flang regression tests"112 ${CMAKE_CURRENT_BINARY_DIR}113 PARAMS ${FLANG_TEST_PARAMS}114 DEPENDS ${FLANG_TEST_DEPENDS}115)116set_target_properties(check-flang PROPERTIES FOLDER "Flang/Meta")117 118# In case of standalone builds.119if (FLANG_STANDALONE_BUILD)120 add_lit_testsuites(FLANG ${CMAKE_CURRENT_BINARY_DIR}121 PARAMS ${FLANG_TEST_PARAMS}122 DEPENDS ${FLANG_TEST_DEPENDS})123else()124 add_lit_testsuites(FLANG ${CMAKE_CURRENT_SOURCE_DIR}125 PARAMS ${FLANG_TEST_PARAMS}126 DEPENDS ${FLANG_TEST_DEPENDS})127endif()128 129# To modify the default target triple for flang tests.130if (DEFINED FLANG_TEST_TARGET_TRIPLE)131 if (NOT DEFINED LLVM_TARGET_TRIPLE_ENV OR LLVM_TARGET_TRIPLE_ENV STREQUAL "")132 message(FATAL_ERROR "LLVM_TARGET_TRIPLE_ENV must also be defined in order "133 "to use FLANG_TEST_TARGET_TRIPLE.")134 endif()135endif()136