[lldb] [test] Pass LLVM_LIBS_DIR from CMake for linking liblldb
Pass the correct library directory from CMake to dotest.py when linking liblldb, instead of trying to reconstruct the path from executable path. This fixes link failures on platforms having non-null LLVM_LIBDIR_SUFFIX. Differential Revision: https://reviews.llvm.org/D73767
This commit is contained in:
@@ -136,6 +136,10 @@ rerun_all_issues = False
|
||||
# same base name.
|
||||
all_tests = set()
|
||||
|
||||
# LLDB library directory.
|
||||
lldb_libs_dir = None
|
||||
|
||||
|
||||
def shouldSkipBecauseOfCategories(test_categories):
|
||||
if use_categories:
|
||||
if len(test_categories) == 0 or len(
|
||||
|
||||
@@ -452,6 +452,9 @@ def parseOptionsAndInitTestdirs():
|
||||
|
||||
os.environ['CLANG_MODULE_CACHE_DIR'] = configuration.clang_module_cache_dir
|
||||
|
||||
if args.lldb_libs_dir:
|
||||
configuration.lldb_libs_dir = args.lldb_libs_dir
|
||||
|
||||
# Gather all the dirs passed on the command line.
|
||||
if len(args.args) > 0:
|
||||
configuration.testdirs = [os.path.realpath(os.path.abspath(x)) for x in args.args]
|
||||
@@ -559,10 +562,7 @@ def setupSysPath():
|
||||
# confusingly, this is the "bin" directory
|
||||
lldbLibDir = os.path.dirname(lldbtest_config.lldbExec)
|
||||
os.environ["LLDB_LIB_DIR"] = lldbLibDir
|
||||
lldbImpLibDir = os.path.join(
|
||||
lldbLibDir,
|
||||
'..',
|
||||
'lib') if sys.platform.startswith('win32') else lldbLibDir
|
||||
lldbImpLibDir = configuration.lldb_libs_dir
|
||||
os.environ["LLDB_IMPLIB_DIR"] = lldbImpLibDir
|
||||
print("LLDB library dir:", os.environ["LLDB_LIB_DIR"])
|
||||
print("LLDB import library dir:", os.environ["LLDB_IMPLIB_DIR"])
|
||||
|
||||
@@ -172,6 +172,11 @@ def create_parser():
|
||||
dest='clang_module_cache_dir',
|
||||
metavar='The clang module cache directory used by Clang',
|
||||
help='The clang module cache directory used in the Make files by Clang while building tests. Defaults to <test build directory>/module-cache-clang.')
|
||||
group.add_argument(
|
||||
'--lldb-libs-dir',
|
||||
dest='lldb_libs_dir',
|
||||
metavar='path',
|
||||
help='The path to LLDB library directory (containing liblldb)')
|
||||
|
||||
# Configuration options
|
||||
group = parser.add_argument_group('Remote platform options')
|
||||
|
||||
@@ -1399,7 +1399,7 @@ class Base(unittest2.TestCase):
|
||||
stdflag = self.getstdFlag()
|
||||
stdlibflag = self.getstdlibFlag()
|
||||
|
||||
lib_dir = os.environ["LLDB_LIB_DIR"]
|
||||
lib_dir = configuration.lldb_libs_dir
|
||||
if self.hasDarwinFramework():
|
||||
d = {'CXX_SOURCES': sources,
|
||||
'EXE': exe_name,
|
||||
@@ -1426,7 +1426,7 @@ class Base(unittest2.TestCase):
|
||||
os.path.join(
|
||||
os.environ["LLDB_SRC"],
|
||||
"include")),
|
||||
'LD_EXTRAS': "-L%s/../lib -llldb -Wl,-rpath,%s/../lib" % (lib_dir, lib_dir)}
|
||||
'LD_EXTRAS': "-L%s -llldb -Wl,-rpath,%s" % (lib_dir, lib_dir)}
|
||||
if self.TraceOn():
|
||||
print(
|
||||
"Building LLDB Driver (%s) from sources %s" %
|
||||
@@ -1439,7 +1439,7 @@ class Base(unittest2.TestCase):
|
||||
|
||||
stdflag = self.getstdFlag()
|
||||
|
||||
lib_dir = os.environ["LLDB_LIB_DIR"]
|
||||
lib_dir = configuration.lldb_libs_dir
|
||||
if self.hasDarwinFramework():
|
||||
d = {'DYLIB_CXX_SOURCES': sources,
|
||||
'DYLIB_NAME': lib_name,
|
||||
@@ -1464,7 +1464,7 @@ class Base(unittest2.TestCase):
|
||||
os.path.join(
|
||||
os.environ["LLDB_SRC"],
|
||||
"include")),
|
||||
'LD_EXTRAS': "-shared -L%s/../lib -llldb -Wl,-rpath,%s/../lib" % (lib_dir, lib_dir)}
|
||||
'LD_EXTRAS': "-shared -L%s -llldb -Wl,-rpath,%s" % (lib_dir, lib_dir)}
|
||||
if self.TraceOn():
|
||||
print(
|
||||
"Building LLDB Library (%s) from sources %s" %
|
||||
|
||||
@@ -114,6 +114,9 @@ if config.dsymutil:
|
||||
if config.filecheck:
|
||||
dotest_cmd += ['--filecheck', config.filecheck]
|
||||
|
||||
if config.lldb_libs_dir:
|
||||
dotest_cmd += ['--lldb-libs-dir', config.lldb_libs_dir]
|
||||
|
||||
# We don't want to force users passing arguments to lit to use `;` as a
|
||||
# separator. We use Python's simple lexical analyzer to turn the args into a
|
||||
# list. Pass there arguments last so they can override anything that was
|
||||
|
||||
@@ -10,6 +10,7 @@ config.llvm_build_mode = "@LLVM_BUILD_MODE@"
|
||||
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
|
||||
config.lldb_obj_root = "@LLDB_BINARY_DIR@"
|
||||
config.lldb_src_root = "@LLDB_SOURCE_DIR@"
|
||||
config.lldb_libs_dir = "@LLDB_LIBS_DIR@"
|
||||
config.cmake_cxx_compiler = "@CMAKE_CXX_COMPILER@"
|
||||
config.host_os = "@HOST_OS@"
|
||||
config.host_triple = "@LLVM_HOST_TRIPLE@"
|
||||
|
||||
Reference in New Issue
Block a user