diff --git a/lldb/packages/Python/lldbsuite/test/configuration.py b/lldb/packages/Python/lldbsuite/test/configuration.py --- a/lldb/packages/Python/lldbsuite/test/configuration.py +++ b/lldb/packages/Python/lldbsuite/test/configuration.py @@ -136,6 +136,10 @@ # 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( diff --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py --- a/lldb/packages/Python/lldbsuite/test/dotest.py +++ b/lldb/packages/Python/lldbsuite/test/dotest.py @@ -452,6 +452,9 @@ 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 @@ # 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"]) diff --git a/lldb/packages/Python/lldbsuite/test/dotest_args.py b/lldb/packages/Python/lldbsuite/test/dotest_args.py --- a/lldb/packages/Python/lldbsuite/test/dotest_args.py +++ b/lldb/packages/Python/lldbsuite/test/dotest_args.py @@ -172,6 +172,11 @@ 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 /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') diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -1399,7 +1399,7 @@ 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 @@ 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 @@ 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 @@ 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" % diff --git a/lldb/test/API/lit.cfg.py b/lldb/test/API/lit.cfg.py --- a/lldb/test/API/lit.cfg.py +++ b/lldb/test/API/lit.cfg.py @@ -114,6 +114,9 @@ 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 diff --git a/lldb/test/API/lit.site.cfg.py.in b/lldb/test/API/lit.site.cfg.py.in --- a/lldb/test/API/lit.site.cfg.py.in +++ b/lldb/test/API/lit.site.cfg.py.in @@ -10,6 +10,7 @@ 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@"