@AUTO_GEN_COMMENT@

import os
import site

config.cxx_under_test           = "@LIBUNWIND_COMPILER@"
config.project_obj_root         = "@CMAKE_BINARY_DIR@"
config.libunwind_src_root       = "@LIBUNWIND_SOURCE_DIR@"
config.libunwind_obj_root       = "@LIBUNWIND_BINARY_DIR@"
config.abi_library_path         = "@LIBUNWIND_LIBRARY_DIR@"
config.libcxx_src_root          = "@LIBUNWIND_LIBCXX_PATH@"
config.libunwind_headers        = "@LIBUNWIND_SOURCE_DIR@/include"
config.cxx_library_root         = "@LIBUNWIND_LIBCXX_LIBRARY_PATH@"
config.llvm_unwinder            = True
config.builtins_library         = "@LIBUNWIND_BUILTINS_LIBRARY@"
config.enable_threads           = @LIBUNWIND_ENABLE_THREADS@
config.use_sanitizer            = "@LLVM_USE_SANITIZER@"
config.enable_32bit             = @LIBUNWIND_BUILD_32_BITS@
config.target_info              = "@LIBUNWIND_TARGET_INFO@"
config.test_linker_flags        = "@LIBUNWIND_TEST_LINKER_FLAGS@"
config.test_compiler_flags      = "@LIBUNWIND_TEST_COMPILER_FLAGS@"
config.executor                 = "@LIBUNWIND_EXECUTOR@"
config.libunwind_shared         = @LIBUNWIND_ENABLE_SHARED@
config.enable_shared            = @LIBCXX_ENABLE_SHARED@
config.arm_ehabi                = @LIBUNWIND_USES_ARM_EHABI@
config.host_triple              = "@LLVM_HOST_TRIPLE@"
config.target_triple            = "@TARGET_TRIPLE@"
config.use_target               = bool("@LIBUNWIND_TARGET_TRIPLE@")
config.sysroot                  = "@LIBUNWIND_SYSROOT@"
config.gcc_toolchain            = "@LIBUNWIND_GCC_TOOLCHAIN@"
config.cxx_ext_threads          = @LIBUNWIND_BUILD_EXTERNAL_THREAD_LIBRARY@

site.addsitedir(os.path.join(config.libunwind_src_root, 'test'))
site.addsitedir(os.path.join(config.libcxx_src_root, 'utils'))

# name: The name of this test suite.
config.name = 'libunwind'

# suffixes: A list of file extensions to treat as test files.
config.suffixes = ['.cpp', '.s']

# test_source_root: The root path where tests are located.
config.test_source_root = os.path.join(config.libunwind_src_root, 'test')

# Allow expanding substitutions that are based on other substitutions
config.recursiveExpansionLimit = 10

# Infer the test_exec_root from the build directory.
config.test_exec_root = os.path.join(config.libunwind_obj_root, 'test')

import libcxx.test.format
config.test_format = libcxx.test.format.CxxStandardLibraryTest()

lit_config.note('Using configuration variant: libunwind')
import libunwind.test.config
configuration = libunwind.test.config.Configuration(lit_config, config)
configuration.configure()
configuration.print_config_info()
