From b22965df1304a752af2724f7c2c3c58347532e71 Mon Sep 17 00:00:00 2001 From: Daniel Thornburgh Date: Tue, 23 May 2023 11:48:28 -0700 Subject: [PATCH] [lldb] Pass CMAKE_SYSROOT through to LLDB shell tests This allows the LLDB Shell tests to succeed in (e.g. CI) environments where system libraries are provided hermetically as a sysroot. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D151269 --- lldb/test/Shell/helper/build.py | 13 +++++++++++++ lldb/test/Shell/helper/toolchain.py | 5 +++++ lldb/test/Shell/lit.site.cfg.py.in | 1 + 3 files changed, 19 insertions(+) diff --git a/lldb/test/Shell/helper/build.py b/lldb/test/Shell/helper/build.py index 21e5d2f22316..2a04967c89bc 100755 --- a/lldb/test/Shell/helper/build.py +++ b/lldb/test/Shell/helper/build.py @@ -73,6 +73,14 @@ parser.add_argument( help="Include and link GNUstep libobjc2 (Windows and Linux only)", ) +parser.add_argument( + "--sysroot", + metavar="directory", + dest="sysroot", + required=False, + help="If specified, a sysroot to be passed via --sysroot", +) + if sys.platform == "darwin": parser.add_argument( "--apple-sdk", @@ -305,6 +313,7 @@ class Builder(object): if args.objc_gnustep_dir else None ) + self.sysroot = args.sysroot def _exe_file_name(self): assert self.mode != "compile" @@ -761,6 +770,8 @@ class GccBuilder(Builder): args.extend( ["-Xclang", "-gcodeview", "-Xclang", "--dependent-lib=msvcrtd"] ) + elif self.sysroot: + args.extend(["--sysroot", self.sysroot]) if self.std: args.append("-std={0}".format(self.std)) @@ -797,6 +808,8 @@ class GccBuilder(Builder): args.extend( ["-fuse-ld=lld-link", "-g", "-Xclang", "--dependent-lib=msvcrtd"] ) + elif self.sysroot: + args.extend(["--sysroot", self.sysroot]) return ("linking", self._obj_file_names(), self._exe_file_name(), None, args) diff --git a/lldb/test/Shell/helper/toolchain.py b/lldb/test/Shell/helper/toolchain.py index 31d3f1295fb4..8b56c659b13b 100644 --- a/lldb/test/Shell/helper/toolchain.py +++ b/lldb/test/Shell/helper/toolchain.py @@ -47,6 +47,8 @@ def use_lldb_substitutions(config): build_script_args.append( '--objc-gnustep-dir="{0}"'.format(config.objc_gnustep_dir) ) + if config.cmake_sysroot: + build_script_args.append("--sysroot={0}".format(config.cmake_sysroot)) lldb_init = _get_lldb_init_path(config) @@ -160,6 +162,9 @@ def use_support_substitutions(config): # The clang module cache is used for building inferiors. host_flags += ["-fmodules-cache-path={}".format(config.clang_module_cache)] + if config.cmake_sysroot: + host_flags += ["--sysroot={}".format(config.cmake_sysroot)] + host_flags = " ".join(host_flags) config.substitutions.append(("%clang_host", "%clang " + host_flags)) config.substitutions.append(("%clangxx_host", "%clangxx " + host_flags)) diff --git a/lldb/test/Shell/lit.site.cfg.py.in b/lldb/test/Shell/lit.site.cfg.py.in index f84cb60ff940..736dfc335732 100644 --- a/lldb/test/Shell/lit.site.cfg.py.in +++ b/lldb/test/Shell/lit.site.cfg.py.in @@ -13,6 +13,7 @@ config.lldb_tools_dir = lit_config.substitute("@LLDB_TOOLS_DIR@") # Since it comes from the command line, it may have backslashes which # should not need to be escaped. config.lldb_lit_tools_dir = lit_config.substitute(r"@LLDB_LIT_TOOLS_DIR@") +config.cmake_sysroot = lit_config.substitute("@CMAKE_SYSROOT@") config.target_triple = "@LLVM_TARGET_TRIPLE@" config.python_executable = "@Python3_EXECUTABLE@" config.have_zlib = @LLVM_ENABLE_ZLIB@