set(CFI_TESTSUITES)

macro (add_cfi_test_suites lld thinlto newpm)
  set(suffix)
  if (${lld})
    set(suffix ${suffix}-lld)
  endif()
  if (${thinlto})
    set(suffix ${suffix}-thinlto)
  endif()
  if (${newpm})
    set(suffix ${suffix}-newpm)
  endif()
  set(suffix ${suffix}-${CFI_TEST_TARGET_ARCH})

  set(CFI_TEST_USE_LLD ${lld})
  set(CFI_TEST_USE_THINLTO ${thinlto})
  set(CFI_TEST_USE_NEWPM ${newpm})

  set(CFI_LIT_TEST_MODE Standalone)
  set(CFI_TEST_CONFIG_SUFFIX -standalone${suffix})
  configure_lit_site_cfg(
    ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
    ${CMAKE_CURRENT_BINARY_DIR}/Standalone${suffix}/lit.site.cfg
    )
  list(APPEND CFI_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/Standalone${suffix})

  set(CFI_LIT_TEST_MODE Devirt)
  set(CFI_TEST_CONFIG_SUFFIX -devirt${suffix})
  configure_lit_site_cfg(
    ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
    ${CMAKE_CURRENT_BINARY_DIR}/Devirt${suffix}/lit.site.cfg
    )
  list(APPEND CFI_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/Devirt${suffix})
endmacro()

set(CFI_TEST_ARCH ${CFI_SUPPORTED_ARCH})
if(APPLE)
  darwin_filter_host_archs(CFI_SUPPORTED_ARCH CFI_TEST_ARCH)
endif()

foreach(arch ${CFI_TEST_ARCH})
  set(CFI_TEST_TARGET_ARCH ${arch})
  get_test_cc_for_arch(${arch} CFI_TEST_TARGET_CC CFI_TEST_TARGET_CFLAGS)
  if (APPLE)
    # FIXME: enable ThinLTO tests after fixing http://llvm.org/pr32741
    add_cfi_test_suites(False False False)
  elseif(WIN32)
    add_cfi_test_suites(True False False)
    add_cfi_test_suites(True True False)
  else()
    add_cfi_test_suites(False False False)
    add_cfi_test_suites(False True False)
    add_cfi_test_suites(False False True)
    add_cfi_test_suites(False True True)
    if (COMPILER_RT_HAS_LLD AND NOT arch STREQUAL "i386")
	    add_cfi_test_suites(True False False)
	    add_cfi_test_suites(True True False)
    endif()
  endif()
endforeach()

set(CFI_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
list(APPEND CFI_TEST_DEPS
  ubsan
  stats
)
if(COMPILER_RT_HAS_CFI)
  list(APPEND CFI_TEST_DEPS cfi)
endif()

if(NOT COMPILER_RT_STANDALONE_BUILD)
  list(APPEND CFI_TEST_DEPS
    opt
    sanstats
  )
  if(LLVM_ENABLE_PIC AND LLVM_BINUTILS_INCDIR)
    list(APPEND CFI_TEST_DEPS
      LLVMgold
    )
  endif()
  if(APPLE)
    list(APPEND CFI_TEST_DEPS
      LTO
    )
  endif()
  if(NOT APPLE AND COMPILER_RT_HAS_LLD)
    list(APPEND CFI_TEST_DEPS
      lld
    )
  endif()
endif()

add_lit_testsuite(check-cfi "Running the cfi regression tests"
  ${CFI_TESTSUITES}
  DEPENDS ${CFI_TEST_DEPS})

add_lit_target(check-cfi-and-supported "Running the cfi regression tests"
  ${CFI_TESTSUITES}
  PARAMS check_supported=1
  DEPENDS ${CFI_TEST_DEPS})

set_target_properties(check-cfi PROPERTIES FOLDER "Compiler-RT Misc")
set_target_properties(check-cfi-and-supported PROPERTIES FOLDER "Compiler-RT Misc")
