from lit.llvm import llvm_config

config.suffixes = ['.c', '.cpp', '.h', '.m', '.mm', '.S', '.s', '.f90', '.F90', '.f95',
                   '.cu', '.rs', '.cl', '.clcpp', '.hip', '.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')
