@LIT_SITE_CFG_IN_HEADER@

import os

# Load common config for all compiler-rt unit tests.
lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/unittests/lit.common.unit.configured")

def push_ld_library_path(config, new_path):
  new_ld_library_path = os.path.pathsep.join(
    (new_path, config.environment.get('LD_LIBRARY_PATH', '')))
  config.environment['LD_LIBRARY_PATH'] = new_ld_library_path

# Setup config name.
config.name = 'AddressSanitizer-Unit'

# Setup test source and exec root. For unit tests, we define
# it as build directory with ASan unit tests.
# FIXME: De-hardcode this path.
if @ASAN_TEST_DYNAMIC@:
  test_dir = "dynamic"
else:
  test_dir = "default"
config.test_exec_root = os.path.join("@COMPILER_RT_BINARY_DIR@",
                                     "lib", "asan", "tests", test_dir)

config.test_source_root = config.test_exec_root

# Set LD_LIBRARY_PATH to pick dynamic runtime up properly.
push_ld_library_path(config, config.compiler_rt_libdir)

if config.host_os == 'Darwin':
  config.parallelism_group = config.darwin_sanitizer_parallelism_group_func
