19a53afd2SSlava Zakharinif (FLANG_EXPERIMENTAL_CUDA_RUNTIME) 29a53afd2SSlava Zakharin # If Fortran runtime is built as CUDA library, the linking 39a53afd2SSlava Zakharin # of targets that link FortranRuntime must be done 49a53afd2SSlava Zakharin # with CUDA_RESOLVE_DEVICE_SYMBOLS. 59a53afd2SSlava Zakharin # CUDA language must be enabled for CUDA_RESOLVE_DEVICE_SYMBOLS 69a53afd2SSlava Zakharin # to take effect. 79a53afd2SSlava Zakharin enable_language(CUDA) 89a53afd2SSlava Zakharinendif() 99a53afd2SSlava Zakharin 1093f602b3Ssameeran joshiadd_custom_target(FlangUnitTests) 11*76e7c8f4SMichael Kruseset_target_properties(FlangUnitTests PROPERTIES FOLDER "Flang/Tests") 1293f602b3Ssameeran joshi 139a53afd2SSlava Zakharinfunction(add_flang_unittest_offload_properties target) 149a53afd2SSlava Zakharin # Set CUDA_RESOLVE_DEVICE_SYMBOLS. 159a53afd2SSlava Zakharin if (FLANG_EXPERIMENTAL_CUDA_RUNTIME) 169a53afd2SSlava Zakharin set_target_properties(${target} 179a53afd2SSlava Zakharin PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON 189a53afd2SSlava Zakharin ) 199a53afd2SSlava Zakharin endif() 209a53afd2SSlava Zakharin # Enable OpenMP offload during linking. We may need to replace 219a53afd2SSlava Zakharin # LINK_OPTIONS with COMPILE_OPTIONS when there are OpenMP offload 229a53afd2SSlava Zakharin # unittests. 239a53afd2SSlava Zakharin # 249a53afd2SSlava Zakharin # FIXME: replace 'native' in --offload-arch option with the list 259a53afd2SSlava Zakharin # of targets that Fortran Runtime was built for. 269a53afd2SSlava Zakharin # Common code must be moved from flang/runtime/CMakeLists.txt. 279a53afd2SSlava Zakharin if (NOT FLANG_EXPERIMENTAL_OMP_OFFLOAD_BUILD STREQUAL "off") 289a53afd2SSlava Zakharin set_target_properties(${target} 299a53afd2SSlava Zakharin PROPERTIES LINK_OPTIONS 309a53afd2SSlava Zakharin "-fopenmp;--offload-arch=native" 319a53afd2SSlava Zakharin ) 329a53afd2SSlava Zakharin endif() 339a53afd2SSlava Zakharinendfunction() 349a53afd2SSlava Zakharin 3593f602b3Ssameeran joshifunction(add_flang_unittest test_dirname) 3693f602b3Ssameeran joshi add_unittest(FlangUnitTests ${test_dirname} ${ARGN}) 379a53afd2SSlava Zakharin add_flang_unittest_offload_properties(${test_dirname}) 3893f602b3Ssameeran joshiendfunction() 3993f602b3Ssameeran joshi 4077e0e9e1SLogan Smithif (CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG) 4177e0e9e1SLogan Smith add_compile_options("-Wno-suggest-override") 4277e0e9e1SLogan Smithendif() 4377e0e9e1SLogan Smith 444ef2e594SDavid Trubyfunction(add_flang_nongtest_unittest test_name) 45cde06f78SSerge Guelton cmake_parse_arguments(ARG 46cde06f78SSerge Guelton "SLOW_TEST" 47cde06f78SSerge Guelton "" 48cde06f78SSerge Guelton "" 49cde06f78SSerge Guelton ${ARGN}) 504ef2e594SDavid Truby 51cde06f78SSerge Guelton if(ARG_SLOW_TEST) 52cde06f78SSerge Guelton set(suffix .slow) 53cde06f78SSerge Guelton else() 54cde06f78SSerge Guelton set(suffix .test) 55cde06f78SSerge Guelton endif() 564ef2e594SDavid Truby 57cde06f78SSerge Guelton add_executable(${test_name}${suffix} ${test_name}.cpp) 58*76e7c8f4SMichael Kruse set_target_properties(${test_name}${suffix} PROPERTIES FOLDER "Flang/Tests/Unit") 59cde06f78SSerge Guelton 60cde06f78SSerge Guelton if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB) 61cde06f78SSerge Guelton set(llvm_libs LLVM) 62cde06f78SSerge Guelton else() 63cde06f78SSerge Guelton llvm_map_components_to_libnames(llvm_libs Support) 64cde06f78SSerge Guelton endif() 65cde06f78SSerge Guelton target_link_libraries(${test_name}${suffix} ${llvm_libs} ${ARG_UNPARSED_ARGUMENTS}) 66cde06f78SSerge Guelton 67cde06f78SSerge Guelton if(NOT ARG_SLOW_TEST) 68cde06f78SSerge Guelton add_dependencies(FlangUnitTests ${test_name}${suffix}) 69cde06f78SSerge Guelton endif() 709a53afd2SSlava Zakharin 719a53afd2SSlava Zakharin add_flang_unittest_offload_properties(${test_name}${suffix}) 724ef2e594SDavid Trubyendfunction() 734ef2e594SDavid Truby 7493f602b3Ssameeran joshiadd_subdirectory(Optimizer) 7573b193aeSPeter Klausleradd_subdirectory(Common) 76ee5fa1f2SLuke Irelandadd_subdirectory(Decimal) 77ee5fa1f2SLuke Irelandadd_subdirectory(Evaluate) 78ffc67bb3SDavid Spickettadd_subdirectory(Runtime) 79257b2971SCaroline Concattoadd_subdirectory(Frontend) 80