Merge pull request #5284 from makise-homura/update_lcc_support

Update lcc support
pull/5294/head
Jussi Pakkanen 6 years ago committed by GitHub
commit 5c85b50280
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      mesonbuild/backend/ninjabackend.py
  2. 2
      mesonbuild/compilers/compilers.py
  3. 15
      mesonbuild/compilers/cpp.py
  4. 6
      run_unittests.py

@ -2418,7 +2418,7 @@ rule FORTRAN_DEP_HACK%s
guessed_dependencies = []
# TODO The get_library_naming requirement currently excludes link targets that use d or fortran as their main linker
if hasattr(linker, 'get_library_naming'):
search_dirs = tuple(search_dirs) + linker.get_library_dirs(self.environment)
search_dirs = tuple(search_dirs) + tuple(linker.get_library_dirs(self.environment))
static_patterns = linker.get_library_naming(self.environment, LibType.STATIC, strict=True)
shared_patterns = linker.get_library_naming(self.environment, LibType.SHARED, strict=True)
for libname in libs:

@ -1736,7 +1736,7 @@ class ElbrusCompiler(GnuCompiler):
# FIXME: use _build_wrapper to call this so that linker flags from the env
# get applied
def get_library_dirs(self, env):
def get_library_dirs(self, env, elf_class = None):
os_env = os.environ.copy()
os_env['LC_ALL'] = 'C'
stdo = Popen_safe(self.exelist + ['--print-search-dirs'], env=os_env)[1]

@ -115,8 +115,8 @@ class CPPCompiler(CCompiler):
'gnu++17': 'gnu++1z'
}
# Currently, remapping is only supported for Clang and GCC
assert(self.id in frozenset(['clang', 'gcc']))
# Currently, remapping is only supported for Clang, Elbrus and GCC
assert(self.id in frozenset(['clang', 'lcc', 'gcc']))
if cpp_std not in CPP_FALLBACKS:
# 'c++03' and 'c++98' don't have fallback types
@ -251,10 +251,13 @@ class ElbrusCPPCompiler(GnuCPPCompiler, ElbrusCompiler):
# It does not support c++/gnu++ 17 and 1z, but still does support 0x, 1y, and gnu++98.
def get_options(self):
opts = CPPCompiler.get_options(self)
opts['cpp_std'] = coredata.UserComboOption('cpp_std', 'C++ language standard to use',
['none', 'c++98', 'c++03', 'c++0x', 'c++11', 'c++14', 'c++1y',
'gnu++98', 'gnu++03', 'gnu++0x', 'gnu++11', 'gnu++14', 'gnu++1y'],
'none')
opts.update({'cpp_std': coredata.UserComboOption('cpp_std', 'C++ language standard to use',
['none', 'c++98', 'c++03', 'c++0x', 'c++11', 'c++14', 'c++1y',
'gnu++98', 'gnu++03', 'gnu++0x', 'gnu++11', 'gnu++14', 'gnu++1y'],
'none'),
'cpp_debugstl': coredata.UserBooleanOption('cpp_debugstl',
'STL debug mode',
False)})
return opts
# Elbrus C++ compiler does not have lchmod, but there is only linker warning, not compiler error.

@ -5841,7 +5841,11 @@ class NativeFileTests(BasePlatformTests):
@skip_if_env_set('FC')
def test_fortran_compiler(self):
def cb(comp):
if comp.id == 'gcc':
if comp.id == 'lcc':
if shutil.which('lfortran'):
return 'lfortran', 'lcc'
raise unittest.SkipTest('No alternate Fortran implementation.')
elif comp.id == 'gcc':
if shutil.which('ifort'):
return 'ifort', 'intel'
elif shutil.which('flang'):

Loading…
Cancel
Save