diff --git a/lldb/test/Shell/helper/build.py b/lldb/test/Shell/helper/build.py --- a/lldb/test/Shell/helper/build.py +++ b/lldb/test/Shell/helper/build.py @@ -73,6 +73,14 @@ 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 @@ if args.objc_gnustep_dir else None ) + self.sysroot = args.sysroot def _exe_file_name(self): assert self.mode != "compile" @@ -761,6 +770,8 @@ 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 @@ 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 --- a/lldb/test/Shell/helper/toolchain.py +++ b/lldb/test/Shell/helper/toolchain.py @@ -47,6 +47,8 @@ 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 @@ # 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 --- a/lldb/test/Shell/lit.site.cfg.py.in +++ b/lldb/test/Shell/lit.site.cfg.py.in @@ -13,6 +13,7 @@ # 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@