Fix GCC libc++abi build
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286783 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -312,6 +312,9 @@ add_target_flags_if(LIBCXX_BUILD_32_BITS "-m32")
|
||||
add_target_flags_if(LIBCXX_TARGET_TRIPLE "-target ${LIBCXX_TARGET_TRIPLE}")
|
||||
add_target_flags_if(LIBCXX_SYSROOT "--sysroot=${LIBCXX_SYSROOT}")
|
||||
add_target_flags_if(LIBCXX_GCC_TOOLCHAIN "-gcc-toolchain ${LIBCXX_GCC_TOOLCHAIN}")
|
||||
if (LIBCXX_TARGET_TRIPLE)
|
||||
set(TARGET_TRIPLE "${LIBCXX_TARGET_TRIPLE}")
|
||||
endif()
|
||||
|
||||
# Configure compiler.
|
||||
include(config-ix)
|
||||
|
||||
@@ -193,6 +193,17 @@ class CXXCompiler(object):
|
||||
flags=flags)
|
||||
return rc == 0
|
||||
|
||||
def addFlagIfSupported(self, flag):
|
||||
if isinstance(flag, list):
|
||||
flags = list(flag)
|
||||
else:
|
||||
flags = [flag]
|
||||
if self.hasCompileFlag(flags):
|
||||
self.flags += flags
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def addCompileFlagIfSupported(self, flag):
|
||||
if isinstance(flag, list):
|
||||
flags = list(flag)
|
||||
|
||||
@@ -83,6 +83,10 @@ class Configuration(object):
|
||||
conf = self.get_lit_conf(name)
|
||||
if conf is None:
|
||||
return default
|
||||
if isinstance(conf, bool):
|
||||
return conf
|
||||
if not isinstance(conf, str):
|
||||
raise TypeError('expected bool or string')
|
||||
if conf.lower() in ('1', 'true'):
|
||||
return True
|
||||
if conf.lower() in ('', '0', 'false'):
|
||||
@@ -375,7 +379,10 @@ class Configuration(object):
|
||||
if gcc_toolchain:
|
||||
self.cxx.flags += ['-gcc-toolchain', gcc_toolchain]
|
||||
if self.use_target:
|
||||
self.cxx.flags += ['-target', self.config.target_triple]
|
||||
if not self.cxx.addFlagIfSupported(
|
||||
['-target', self.config.target_triple]):
|
||||
self.lit_config.warning('use_target is true but -target is '\
|
||||
'not supported by the compiler')
|
||||
|
||||
def configure_compile_flags_header_includes(self):
|
||||
support_path = os.path.join(self.libcxx_src_root, 'test/support')
|
||||
@@ -756,10 +763,12 @@ class Configuration(object):
|
||||
def configure_triple(self):
|
||||
# Get or infer the target triple.
|
||||
self.config.target_triple = self.get_lit_conf('target_triple')
|
||||
self.use_target = bool(self.config.target_triple)
|
||||
self.use_target = self.get_lit_bool('use_target', False)
|
||||
if self.use_target and self.config.target_triple:
|
||||
self.lit_config.warning('use_target is true but no triple is specified')
|
||||
# If no target triple was given, try to infer it from the compiler
|
||||
# under test.
|
||||
if not self.use_target:
|
||||
if not self.config.target_triple:
|
||||
target_triple = self.cxx.getTriple()
|
||||
# Drop sub-major version components from the triple, because the
|
||||
# current XFAIL handling expects exact matches for feature checks.
|
||||
|
||||
@@ -15,7 +15,9 @@ config.use_sanitizer = "@LLVM_USE_SANITIZER@"
|
||||
config.sanitizer_library = "@LIBCXX_SANITIZER_LIBRARY@"
|
||||
config.abi_library_path = "@LIBCXX_CXX_ABI_LIBRARY_PATH@"
|
||||
config.configuration_variant = "@LIBCXX_LIT_VARIANT@"
|
||||
config.target_triple = "@LIBCXX_TARGET_TRIPLE@"
|
||||
config.host_triple = "@LLVM_HOST_TRIPLE@"
|
||||
config.target_triple = "@TARGET_TRIPLE@"
|
||||
config.use_target = len("@LIBCXX_TARGET_TRIPLE@") > 0
|
||||
config.sysroot = "@LIBCXX_SYSROOT@"
|
||||
config.gcc_toolchain = "@LIBCXX_GCC_TOOLCHAIN@"
|
||||
config.generate_coverage = "@LIBCXX_GENERATE_COVERAGE@"
|
||||
|
||||
Reference in New Issue
Block a user