From f029dcdb98a60837fc70f1c9429b88f7d5599a9f Mon Sep 17 00:00:00 2001 From: Mehdi Amini Date: Thu, 30 Mar 2017 04:45:33 +0000 Subject: [PATCH] libc++ testing: allow to provide a path for `use_system_cxx_lib` As we're trying to setup testing / bots for all shipping version of libc++ on macOS/iOS, we'll need to be able to pass a path to where to find the dylib for each previous version of the OS. Differential Revision: https://reviews.llvm.org/D31486 llvm-svn: 299053 --- libcxx/utils/libcxx/test/config.py | 21 ++++++++++++++++----- libcxx/utils/libcxx/test/target_info.py | 2 ++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/libcxx/utils/libcxx/test/config.py b/libcxx/utils/libcxx/test/config.py index 765d4d2..9d4f7f3 100644 --- a/libcxx/utils/libcxx/test/config.py +++ b/libcxx/utils/libcxx/test/config.py @@ -273,12 +273,16 @@ class Configuration(object): # the locally built one; the former mode is useful for testing ABI # compatibility between the current headers and a shipping dynamic # library. - self.use_system_cxx_lib = self.get_lit_bool('use_system_cxx_lib') - if self.use_system_cxx_lib is None: - # Default to testing against the locally built libc++ library. + # Default to testing against the locally built libc++ library. + self.use_system_cxx_lib = self.get_lit_conf('use_system_cxx_lib') + if self.use_system_cxx_lib == 'true': + self.use_system_cxx_lib = True + elif self.use_system_cxx_lib == 'false': self.use_system_cxx_lib = False - self.lit_config.note( - "inferred use_system_cxx_lib as: %r" % self.use_system_cxx_lib) + else: + assert os.path.isdir(self.use_system_cxx_lib) + self.lit_config.note( + "inferred use_system_cxx_lib as: %r" % self.use_system_cxx_lib) def configure_cxx_stdlib_under_test(self): self.cxx_stdlib_under_test = self.get_lit_conf( @@ -686,6 +690,13 @@ class Configuration(object): self.cxx_runtime_root] elif self.is_windows and self.link_shared: self.add_path(self.exec_env, self.cxx_runtime_root) + elif os.path.isdir(str(self.use_system_cxx_lib)): + self.cxx.link_flags += ['-L' + self.use_system_cxx_lib] + if not self.is_windows: + self.cxx.link_flags += ['-Wl,-rpath,' + + self.use_system_cxx_lib] + if self.is_windows and self.link_shared: + self.add_path(self.cxx.compile_env, self.use_system_cxx_lib) def configure_link_flags_abi_library_path(self): # Configure ABI library paths. diff --git a/libcxx/utils/libcxx/test/target_info.py b/libcxx/utils/libcxx/test/target_info.py index b4549fd..9a7ae05 100644 --- a/libcxx/utils/libcxx/test/target_info.py +++ b/libcxx/utils/libcxx/test/target_info.py @@ -142,6 +142,8 @@ class DarwinLocalTI(DefaultTargetInfo): library_paths = [] # Configure the library path for libc++ if self.full_config.use_system_cxx_lib: + if (os.path.isdir(str(self.full_config.use_system_cxx_lib))): + library_paths += [self.full_config.use_system_cxx_lib] pass elif self.full_config.cxx_runtime_root: library_paths += [self.full_config.cxx_runtime_root] -- 2.7.4