From 7cc41baa98e486d6fd08ca5bb6f336481b757c4a Mon Sep 17 00:00:00 2001 From: makise-homura Date: Mon, 19 Mar 2018 23:30:00 +0300 Subject: Added Elbrus lcc compilers support as inheritance from gcc ones --- mesonbuild/compilers/cpp.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'mesonbuild/compilers/cpp.py') diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index c10f38edb..fd09e4691 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -25,6 +25,7 @@ from .compilers import ( msvc_winlibs, ClangCompiler, GnuCompiler, + ElbrusCompiler, IntelCompiler, ) @@ -133,6 +134,21 @@ class GnuCPPCompiler(GnuCompiler, CPPCompiler): return ['-fpch-preprocess', '-include', os.path.basename(header)] +class ElbrusCPPCompiler(GnuCPPCompiler, ElbrusCompiler): + def __init__(self, exelist, version, gcc_type, is_cross, exe_wrapper=None, defines=None, **kwargs): + GnuCPPCompiler.__init__(self, exelist, version, gcc_type, is_cross, exe_wrapper, defines, **kwargs) + ElbrusCompiler.__init__(self, gcc_type, defines) + + # It does not support c++/gnu++ 17 and 1z, but still does support 0x, 1y, and gnu++98. + def get_options(self): + opts = super().get_options() + 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') + return opts + + class IntelCPPCompiler(IntelCompiler, CPPCompiler): def __init__(self, exelist, version, icc_type, is_cross, exe_wrap, **kwargs): CPPCompiler.__init__(self, exelist, version, is_cross, exe_wrap, **kwargs) -- cgit v1.2.3 From 6230c2a2f61f29cdf92017d7b5a06420f0730114 Mon Sep 17 00:00:00 2001 From: makise-homura Date: Mon, 19 Mar 2018 23:39:06 +0300 Subject: Fixed indentation and space issues found by SideCI --- mesonbuild/compilers/compilers.py | 2 +- mesonbuild/compilers/cpp.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'mesonbuild/compilers/cpp.py') diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index 0ab9b49c1..2e64131c2 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -1084,7 +1084,7 @@ class ElbrusCompiler(GnuCompiler): self.id = 'lcc' self.base_options = ['b_pgo', 'b_coverage', 'b_ndebug', 'b_staticpic', - 'b_lundef', 'b_asneeded' ] + 'b_lundef', 'b_asneeded'] class ClangCompiler: diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index fd09e4691..394c961ba 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -145,7 +145,7 @@ class ElbrusCPPCompiler(GnuCPPCompiler, ElbrusCompiler): 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') + 'none') return opts -- cgit v1.2.3 From 546f81e0f943022e27b4aeaea3edd7bc8549093d Mon Sep 17 00:00:00 2001 From: makise-homura Date: Wed, 21 Mar 2018 16:42:15 +0300 Subject: Fixed lchmod detection for lcc C/C++ compilers --- mesonbuild/compilers/c.py | 8 ++++++++ mesonbuild/compilers/cpp.py | 8 ++++++++ 2 files changed, 16 insertions(+) (limited to 'mesonbuild/compilers/cpp.py') diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py index be8bb5285..47acdd994 100644 --- a/mesonbuild/compilers/c.py +++ b/mesonbuild/compilers/c.py @@ -903,6 +903,14 @@ class ElbrusCCompiler(GnuCCompiler, ElbrusCompiler): 'none')} return opts + # Elbrus C compiler does not have lchmod, but there is only linker warning, not compiler error. + # So we should explicitly fail at this case. + def has_function(self, funcname, prefix, env, extra_args=None, dependencies=None): + if funcname == 'lchmod': + return False + else: + return super().has_function(funcname, prefix, env, extra_args, dependencies) + class IntelCCompiler(IntelCompiler, CCompiler): def __init__(self, exelist, version, icc_type, is_cross, exe_wrapper=None, **kwargs): diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index 394c961ba..d2d25851f 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -148,6 +148,14 @@ class ElbrusCPPCompiler(GnuCPPCompiler, ElbrusCompiler): 'none') return opts + # Elbrus C++ compiler does not have lchmod, but there is only linker warning, not compiler error. + # So we should explicitly fail at this case. + def has_function(self, funcname, prefix, env, extra_args=None, dependencies=None): + if funcname == 'lchmod': + return False + else: + return super().has_function(funcname, prefix, env, extra_args, dependencies) + class IntelCPPCompiler(IntelCompiler, CPPCompiler): def __init__(self, exelist, version, icc_type, is_cross, exe_wrap, **kwargs): -- cgit v1.2.3