1# Test runner infrastructure for Flang. This configures the Flang test trees 2# for use by Lit, and delegates to LLVM's lit test handlers. 3add_subdirectory(lib) 4 5llvm_canonicalize_cmake_booleans( 6 FLANG_STANDALONE_BUILD 7 LLVM_BUILD_EXAMPLES 8 LLVM_BYE_LINK_INTO_TOOLS 9 LLVM_ENABLE_PLUGINS 10) 11 12set(FLANG_TOOLS_DIR ${FLANG_BINARY_DIR}/bin) 13 14# Check if 128-bit float computations can be done via long double 15check_cxx_source_compiles( 16 "#include <cfloat> 17 #if LDBL_MANT_DIG != 113 18 #error LDBL_MANT_DIG != 113 19 #endif 20 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 to 25# `configure_lit_site_cfg` leads to a configuration error. This is currently 26# only required by plugins/examples, which are not supported in out-of-tree 27# 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.in 36 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py 37 MAIN_CONFIG 38 ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py 39 PATHS 40 ${PATHS_FOR_PLUGINS} 41) 42 43configure_lit_site_cfg( 44 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in 45 ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py 46 MAIN_CONFIG 47 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py 48) 49 50configure_lit_site_cfg( 51 ${CMAKE_CURRENT_SOURCE_DIR}/NonGtestUnit/lit.site.cfg.py.in 52 ${CMAKE_CURRENT_BINARY_DIR}/NonGtestUnit/lit.site.cfg.py 53 MAIN_CONFIG 54 ${CMAKE_CURRENT_SOURCE_DIR}/NonGtestUnit/lit.cfg.py 55) 56 57set(FLANG_TEST_PARAMS 58 flang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py) 59 60set(FLANG_TEST_DEPENDS 61 flang 62 llvm-config 63 FileCheck 64 count 65 not 66 module_files 67 fir-opt 68 tco 69 bbc 70 llvm-dis 71 llvm-objdump 72 llvm-readobj 73 split-file 74 FortranRuntime 75 FortranDecimal 76) 77if (LLVM_ENABLE_PLUGINS AND NOT WIN32) 78 list(APPEND FLANG_TEST_DEPENDS Bye) 79endif() 80 81if (FLANG_INCLUDE_TESTS) 82 if (FLANG_GTEST_AVAIL) 83 list(APPEND FLANG_TEST_DEPENDS FlangUnitTests) 84 endif() 85endif() 86 87if (LLVM_BUILD_EXAMPLES) 88 list(APPEND FLANG_TEST_DEPENDS 89 flangPrintFunctionNames 90 flangOmpReport 91 flangFeatureList 92 ) 93endif () 94 95add_custom_target(flang-test-depends DEPENDS ${FLANG_TEST_DEPENDS}) 96set_target_properties(flang-test-depends PROPERTIES FOLDER "Flang/Meta") 97 98add_lit_testsuite(check-flang "Running the Flang regression tests" 99 ${CMAKE_CURRENT_BINARY_DIR} 100 PARAMS ${FLANG_TEST_PARAMS} 101 DEPENDS ${FLANG_TEST_DEPENDS} 102) 103set_target_properties(check-flang PROPERTIES FOLDER "Flang/Meta") 104 105# In case of standalone builds. 106if (FLANG_STANDALONE_BUILD) 107 add_lit_testsuites(FLANG ${CMAKE_CURRENT_BINARY_DIR} 108 PARAMS ${FLANG_TEST_PARAMS} 109 DEPENDS ${FLANG_TEST_DEPENDS}) 110else() 111 add_lit_testsuites(FLANG ${CMAKE_CURRENT_SOURCE_DIR} 112 PARAMS ${FLANG_TEST_PARAMS} 113 DEPENDS ${FLANG_TEST_DEPENDS}) 114endif() 115 116# To modify the default target triple for flang tests. 117if (DEFINED FLANG_TEST_TARGET_TRIPLE) 118 if (NOT DEFINED LLVM_TARGET_TRIPLE_ENV OR LLVM_TARGET_TRIPLE_ENV STREQUAL "") 119 message(FATAL_ERROR "LLVM_TARGET_TRIPLE_ENV must also be defined in order " 120 "to use FLANG_TEST_TARGET_TRIPLE.") 121 endif() 122endif() 123