xref: /llvm-project/flang/unittests/CMakeLists.txt (revision 76e7c8f4aaa7f3bdf6085927756a8772ab7f00f6)
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