Add special case handling of linux target triples that do not contain `-gnu`.

For targets that end it `redhat-linux` and `suse-linux` manually add the `-gnu`
section of the target since `linux-gnu` is needed in the testsuite.

This patch also moves the removal of minor and patchlevel numbers from OSX
triples to be handled when deducing the triple instead of when adding available
features.

llvm-svn: 220724
This commit is contained in:
Eric Fiselier 2014-10-27 22:14:25 +00:00
parent 5d83872245
commit bb19141779
1 changed files with 16 additions and 7 deletions

View File

@ -349,13 +349,8 @@ class Configuration(object):
# markers for tests that are known to fail with versions of libc++ as
# were shipped with a particular triple.
if self.use_system_lib:
# Drop sub-major version components from the triple, because the
# current XFAIL handling expects exact matches for feature checks.
sanitized_triple = re.sub(
r"([^-]+)-([^-]+)-([^-.]+).*", r"\1-\2-\3",
self.config.target_triple)
self.config.available_features.add(
'with_system_lib=%s' % sanitized_triple)
'with_system_lib=%s' % self.config.target_triple)
if 'libcpp-has-no-threads' in self.config.available_features:
self.compile_flags += ['-D_LIBCPP_HAS_NO_THREADS']
@ -456,8 +451,22 @@ class Configuration(object):
# If no target triple was given, try to infer it from the compiler
# under test.
if not self.config.target_triple:
self.config.target_triple = lit.util.capture(
target_triple = lit.util.capture(
[self.cxx, '-dumpmachine']).strip()
# Drop sub-major version components from the triple, because the
# current XFAIL handling expects exact matches for feature checks.
# Example: x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu.
# The 5th group handles triples greater than 3 parts
# (ex x86_64-pc-linux-gnu).
target_triple = re.sub(r'([^-]+)-([^-]+)-([^.]+)([^-]*)(.*)',
r'\1-\2-\3\5', target_triple)
# linux-gnu is needed in the triple to properly identify linuxes
# that use GLIBC. Handle redhat and opensuse triples as special
# cases and append the missing `-gnu` portion.
if target_triple.endswith('redhat-linux') or \
target_triple.endswith('suse-linux'):
target_triple += '-gnu'
self.config.target_triple = target_triple
self.lit_config.note(
"inferred target_triple as: %r" % self.config.target_triple)