X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2Flit.cfg;h=98f72092e3121d71037e6a5ace6d1f3e24739a7e;hb=294e67861c9a497f4b7529a410d8817d36354d5a;hp=546984d972a7699ef2676589119bcd8bede9d1d5;hpb=f3e2d80770c43e2ae1e5ba0d6a944974087f57ae;p=oota-llvm.git diff --git a/test/lit.cfg b/test/lit.cfg index 546984d972a..98f72092e31 100644 --- a/test/lit.cfg +++ b/test/lit.cfg @@ -3,6 +3,7 @@ # Configuration file for the 'lit' test runner. import os +import sys # name: The name of this test suite. config.name = 'LLVM' @@ -22,6 +23,55 @@ llvm_obj_root = getattr(config, 'llvm_obj_root', None) 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 + +# Propagate 'HOME' through the environment. +if 'HOME' in os.environ: + config.environment['HOME'] = os.environ['HOME'] + +# Propagate 'INCLUDE' through the environment. +if 'INCLUDE' in os.environ: + config.environment['INCLUDE'] = os.environ['INCLUDE'] + +# Propagate 'LIB' through the environment. +if 'LIB' in os.environ: + config.environment['LIB'] = os.environ['LIB'] + +# Propagate the temp directory. Windows requires this because it uses \Windows\ +# if none of these are present. +if 'TMP' in os.environ: + config.environment['TMP'] = os.environ['TMP'] +if 'TEMP' in os.environ: + config.environment['TEMP'] = os.environ['TEMP'] + +# Propagate LLVM_SRC_ROOT into the environment. +config.environment['LLVM_SRC_ROOT'] = getattr(config, 'llvm_src_root', '') + +# Propagate PYTHON_EXECUTABLE into the environment +config.environment['PYTHON_EXECUTABLE'] = getattr(config, 'python_executable', + '') + ### import os @@ -33,6 +83,12 @@ if config.test_exec_root is None: # 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'. # @@ -71,17 +127,24 @@ import re site_exp = {} # FIXME: Implement lit.site.cfg. for line in open(os.path.join(config.llvm_obj_root, 'test', 'site.exp')): - m = re.match('set ([^ ]+) "([^"]*)"', line) + m = re.match('set ([^ ]+) "(.*)"', line) if m: site_exp[m.group(1)] = m.group(2) # Add substitutions. -for sub in ['llvmgcc', 'llvmgxx', 'compile_cxx', 'compile_c', +config.substitutions.append(('%llvmgcc_only', site_exp['llvmgcc'])) +for sub in ['llvmgcc', 'llvmgxx', 'emitir', 'compile_cxx', 'compile_c', 'link', 'shlibext', 'ocamlopt', 'llvmdsymutil', 'llvmlibsdir', + 'llvmshlibdir', 'bugpoint_topts']: if sub in ('llvmgcc', 'llvmgxx'): config.substitutions.append(('%' + sub, - site_exp[sub] + ' -emit-llvm -w')) + site_exp[sub] + ' %emitir -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])) @@ -90,14 +153,25 @@ excludes = [] # 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 -langs = set(site_exp['llvmgcc_langs'].split(',')) +def llvm_supports_darwin_and_target(name): + return 'darwin' in config.target_triple and llvm_supports_target(name) + +langs = set([s.strip() for s in site_exp['llvmgcc_langs'].split(',')]) def llvm_gcc_supports(name): - return name in langs + return name.strip() in langs + +bindings = set([s.strip() for s in site_exp['llvm_bindings'].split(',')]) +def llvm_supports_binding(name): + return name.strip() in bindings # Provide on_clone hook for reading 'dg.exp'. import os @@ -149,3 +223,19 @@ def on_clone(parent, cfg, for_path): lit.error('unable to understand %r:\n%s' % (libPath, lib)) config.on_clone = on_clone + +### Features + +# Shell execution +if sys.platform not in ['win32']: + config.available_features.add('shell') + +# Loadable module +# FIXME: This should be supplied by Makefile or autoconf. +if sys.platform in ['win32', 'cygwin']: + loadable_module = (config.enable_shared == 1) +else: + loadable_module = True + +if loadable_module: + config.available_features.add('loadable_module')