if llvm_obj_root is not None:
config.test_exec_root = os.path.join(llvm_obj_root, 'test')
+# Tweak the PATH to include the scripts dir, the tools dir, and the llvm-gcc bin
+# dir (if available).
+if llvm_obj_root is not None:
+ llvm_src_root = getattr(config, 'llvm_src_root', None)
+ if not llvm_src_root:
+ lit.fatal('No LLVM source root set!')
+ path = os.path.pathsep.join((os.path.join(llvm_src_root, 'test',
+ 'Scripts'),
+ config.environment['PATH']))
+ config.environment['PATH'] = path
+
+ llvm_tools_dir = getattr(config, 'llvm_tools_dir', None)
+ if not llvm_tools_dir:
+ lit.fatal('No LLVM tools dir set!')
+ path = os.path.pathsep.join((llvm_tools_dir, config.environment['PATH']))
+ config.environment['PATH'] = path
+
+ llvmgcc_dir = getattr(config, 'llvmgcc_dir', None)
+ if llvmgcc_dir:
+ path = os.path.pathsep.join((os.path.join(llvmgcc_dir, 'bin'),
+ config.environment['PATH']))
+ config.environment['PATH'] = path
+
+# Propogate 'HOME' through the environment.
+config.environment['HOME'] = os.environ['HOME']
+
+# Propogate LLVM_SRC_ROOT into the environment.
+config.environment['LLVM_SRC_ROOT'] = getattr(config, 'llvm_src_root', '')
+
+# Propogate PYTHON_EXEUTABLE into the environment
+config.environment['PYTHON_EXECUTABLE'] = getattr(config, 'python_executable',
+ '')
+
###
import os
# configuration hasn't been created by the build system, or we are in an
# out-of-tree build situation).
+ # Check for 'llvm_site_config' user parameter, and use that if available.
+ site_cfg = lit.params.get('llvm_site_config', None)
+ if site_cfg and os.path.exists(site_cfg):
+ lit.load_config(config, site_cfg)
+ raise SystemExit
+
# Try to detect the situation where we are using an out-of-tree build by
# looking for 'llvm-config'.
#
site_exp[m.group(1)] = m.group(2)
# Add substitutions.
+config.substitutions.append(('%llvmgcc_only', site_exp['llvmgcc']))
for sub in ['llvmgcc', 'llvmgxx', 'compile_cxx', 'compile_c',
'link', 'shlibext', 'ocamlopt', 'llvmdsymutil', 'llvmlibsdir',
'bugpoint_topts']:
if sub in ('llvmgcc', 'llvmgxx'):
config.substitutions.append(('%' + sub,
site_exp[sub] + ' -emit-llvm -w'))
+ # FIXME: This is a hack to avoid LLVMC tests failing due to a clang driver
+ # warning when passing in "-fexceptions -fno-exceptions".
+ elif sub == 'compile_cxx':
+ config.substitutions.append(('%' + sub,
+ site_exp[sub].replace('-fno-exceptions', '')))
else:
config.substitutions.append(('%' + sub, site_exp[sub]))
# Provide target_triple for use in XFAIL and XTARGET.
config.target_triple = site_exp['target_triplet']
+# When running under valgrind, we mangle '-vg' or '-vg_leak' onto the end of the
+# triple so we can check it with XFAIL and XTARGET.
+config.target_triple += lit.valgrindTriple
+
# Provide llvm_supports_target for use in local configs.
targets = set(site_exp["TARGETS_TO_BUILD"].split())
def llvm_supports_target(name):
return name in targets
+def llvm_supports_darwin_and_target(name):
+ return 'darwin' in config.target_triple and llvm_supports_target(name)
+
langs = set(site_exp['llvmgcc_langs'].split(','))
def llvm_gcc_supports(name):
return name in langs
bindings = set(site_exp['llvm_bindings'].split(','))
def llvm_supports_binding(name):
- return name in langs
+ return name in bindings
# Provide on_clone hook for reading 'dg.exp'.
import os