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 @@ -61,6 +61,12 @@ default=False, 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', metavar='apple_sdk', @@ -254,6 +260,7 @@ "--objc-gnustep specified without path to libobjc2" self.objc_gnustep_inc = os.path.join(args.objc_gnustep_dir, 'include') if args.objc_gnustep_dir else None self.objc_gnustep_lib = os.path.join(args.objc_gnustep_dir, 'lib') if args.objc_gnustep_dir else None + self.sysroot = args.sysroot def _exe_file_name(self): assert self.mode != 'compile' @@ -679,6 +686,8 @@ args.extend(['-fobjc-runtime=gnustep-2.0', '-I', self.objc_gnustep_inc]) if sys.platform == "win32": 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)) @@ -713,6 +722,8 @@ args.extend(['-Wl,-rpath,' + self.objc_gnustep_lib]) elif sys.platform == 'win32': 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 @@ -42,8 +42,8 @@ build_script_args.append('--tools-dir={0}'.format(config.lldb_tools_dir)) if config.llvm_libs_dir: build_script_args.append('--libs-dir={0}'.format(config.llvm_libs_dir)) - if config.objc_gnustep_dir: - 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) @@ -140,6 +140,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@