Skip to content

Commit

Permalink
[lldb] [test] Pass LLVM_LIBS_DIR from CMake for linking liblldb
Browse files Browse the repository at this point in the history
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
  • Loading branch information
mgorny committed Feb 5, 2020
1 parent 096cd99 commit dcab973
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 8 deletions.
4 changes: 4 additions & 0 deletions lldb/packages/Python/lldbsuite/test/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
8 changes: 4 additions & 4 deletions lldb/packages/Python/lldbsuite/test/dotest.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -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"])
Expand Down
5 changes: 5 additions & 0 deletions lldb/packages/Python/lldbsuite/test/dotest_args.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down
8 changes: 4 additions & 4 deletions lldb/packages/Python/lldbsuite/test/lldbtest.py
Original file line number Diff line number Diff line change
Expand Up @@ -1399,7 +1399,7 @@ def buildDriver(self, sources, exe_name):
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,
Expand All @@ -1426,7 +1426,7 @@ def buildDriver(self, sources, exe_name):
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" %
Expand All @@ -1439,7 +1439,7 @@ def buildLibrary(self, sources, lib_name):

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,
Expand All @@ -1464,7 +1464,7 @@ def buildLibrary(self, sources, lib_name):
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" %
Expand Down
3 changes: 3 additions & 0 deletions lldb/test/API/lit.cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ def find_shlibpath_var():
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
Expand Down
1 change: 1 addition & 0 deletions lldb/test/API/lit.site.cfg.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -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@"
Expand Down

0 comments on commit dcab973

Please sign in to comment.