macro(pythonize_bool var)
  if (${var})
    set(${var} True)
  else()
    set(${var} False)
  endif()
endmacro()

pythonize_bool(LIBCXXABI_BUILD_32_BITS)
pythonize_bool(LIBCXXABI_ENABLE_SHARED)
pythonize_bool(LIBCXXABI_ENABLE_THREADS)
pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)

set(AUTO_GEN_COMMENT "## Autogenerated by libcxxabi configuration.\n# Do not edit!")
configure_file(
  ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
  @ONLY)

set(LIBCXXABI_TEST_DEPS cxxabi)
if (NOT LIBCXXABI_BUILT_STANDALONE)
  list(APPEND LIBCXXABI_TEST_DEPS cxx)
endif()

if (LIBCXXABI_USE_LLVM_UNWINDER)
  list(APPEND LIBCXXABI_TEST_DEPS unwind)
endif()

add_lit_testsuite(check-libcxxabi "Running libcxxabi tests"
  ${CMAKE_CURRENT_BINARY_DIR}
  DEPENDS ${LIBCXXABI_TEST_DEPS}
  )
