from lit.llvm import llvm_config

config.suffixes = [
    ".c",
    ".cpp",
    ".cppm",
    ".h",
    ".m",
    ".mm",
    ".S",
    ".s",
    ".f90",
    ".F90",
    ".f95",
    ".cu",
    ".rs",
    ".cl",
    ".clcpp",
    ".hip",
    ".hipi",
    ".hlsl",
]
config.substitutions = list(config.substitutions)
config.substitutions.insert(
    0, ("%clang_cc1", """*** Do not use 'clang -cc1' in Driver tests. ***""")
)

# Remove harmful environmental variables for clang Driver tests.
# Some might be useful for other tests so they are only removed here.
driver_overwrite_env_vars = [
    "MACOSX_DEPLOYMENT_TARGET",
    "IPHONEOS_DEPLOYMENT_TARGET",
    "SDKROOT",
    "CCC_OVERRIDE_OPTIONS",
    "CC_PRINT_OPTIONS",
    "CC_PRINT_HEADERS",
    "CC_LOG_DIAGNOSTICS",
    "CC_PRINT_PROC_STAT",
]

for name in driver_overwrite_env_vars:
    if name in config.environment:
        del config.environment[name]

if llvm_config.use_lld(required=False):
    config.available_features.add("lld")

if config.ppc_linux_default_ieeelongdouble:
    config.available_features.add("ppc_linux_default_ieeelongdouble")
