forked from OSchip/llvm-project
[test] Fix finding LLDB tools when building stand-alone
Use both LLDB- and LLVM-specific tool/library directories when LLDB is being built stand-alone. This ensures that the freshly-built tools (and libraries) are used correctly. Without this patch, the test suite uses LLVM_TOOLS_DIR and LLVM_LIBS_DIR to locate lldb, and set PATH and LD_LIBRARY_PATH. When doing a stand-alone build, these variables represent the installed LLVM. As a result, tests either fail due to missing lldb executable or use an earlier installed LLDB version rather than the one being built. To solve this, additional LLDB_TOOLS_DIR and LLDB_LIBS_DIR variables are added and populated using LLVM_*_OUTPUT_INTDIR. Those variables contain directories used to output built executables and libraries. In stand-alone builds, they represent the build-tree directories used by LLDB. In integrated builds, they have the same values as LLVM_*_DIR and therefore using them does not harm. The new variables are prepended to PATH and LD_LIBRARY_PATH to ensure that freshly built binaries are preferred over potentially earlier installed ones. Furthermore, paths used to locate various tools are updated to match appropriate locations. Differential Revision: https://reviews.llvm.org/D29985 llvm-svn: 295621
This commit is contained in:
parent
1577023414
commit
caf810e3e4
|
@ -39,18 +39,24 @@ config.llvm_obj_root = getattr(config, 'llvm_obj_root', None)
|
|||
|
||||
# Tweak the PATH to include the tools dir and the scripts dir.
|
||||
if lldb_obj_root is not None:
|
||||
lldb_tools_dir = getattr(config, 'lldb_tools_dir', None)
|
||||
if not lldb_tools_dir:
|
||||
lit_config.fatal('No LLDB tools dir set!')
|
||||
llvm_tools_dir = getattr(config, 'llvm_tools_dir', None)
|
||||
if not llvm_tools_dir:
|
||||
lit_config.fatal('No LLVM tools dir set!')
|
||||
path = os.path.pathsep.join((llvm_tools_dir, config.environment['PATH']))
|
||||
path = os.path.pathsep.join((lldb_tools_dir, llvm_tools_dir, config.environment['PATH']))
|
||||
path = os.path.pathsep.join((os.path.join(getattr(config, 'llvm_src_root', None),'test','Scripts'),path))
|
||||
|
||||
config.environment['PATH'] = path
|
||||
|
||||
lldb_libs_dir = getattr(config, 'lldb_libs_dir', None)
|
||||
if not lldb_libs_dir:
|
||||
lit_config.fatal('No LLDB libs dir set!')
|
||||
llvm_libs_dir = getattr(config, 'llvm_libs_dir', None)
|
||||
if not llvm_libs_dir:
|
||||
lit_config.fatal('No LLVM libs dir set!')
|
||||
path = os.path.pathsep.join((llvm_libs_dir,
|
||||
path = os.path.pathsep.join((lldb_libs_dir, llvm_libs_dir,
|
||||
config.environment.get('LD_LIBRARY_PATH','')))
|
||||
config.environment['LD_LIBRARY_PATH'] = path
|
||||
|
||||
|
@ -115,14 +121,14 @@ if config.test_exec_root is None:
|
|||
# Register substitutions
|
||||
config.substitutions.append(('%python', config.python_executable))
|
||||
|
||||
debugserver = lit.util.which('debugserver', llvm_tools_dir)
|
||||
lldb = lit.util.which('lldb', llvm_tools_dir)
|
||||
debugserver = lit.util.which('debugserver', lldb_tools_dir)
|
||||
lldb = lit.util.which('lldb', lldb_tools_dir)
|
||||
|
||||
if not os.path.exists(config.cc):
|
||||
config.cc = lit.util.which(config.cc, llvm_tools_dir)
|
||||
config.cc = lit.util.which(config.cc, config.environment['PATH'])
|
||||
|
||||
if not os.path.exists(config.cxx):
|
||||
config.cxx = lit.util.which(config.cxx, llvm_tools_dir)
|
||||
config.cxx = lit.util.which(config.cxx, config.environment['PATH'])
|
||||
|
||||
if platform.system() in ['Darwin']:
|
||||
try:
|
||||
|
|
|
@ -6,6 +6,8 @@ config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
|
|||
config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
|
||||
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
|
||||
config.lldb_obj_root = "@LLDB_BINARY_DIR@"
|
||||
config.lldb_libs_dir = "@LLVM_LIBRARY_OUTPUT_INTDIR@"
|
||||
config.lldb_tools_dir = "@LLVM_RUNTIME_OUTPUT_INTDIR@"
|
||||
config.target_triple = "@TARGET_TRIPLE@"
|
||||
config.python_executable = "@PYTHON_EXECUTABLE@"
|
||||
config.cc = "@CMAKE_C_COMPILER@"
|
||||
|
|
Loading…
Reference in New Issue