From a27e8dead1b4b775b98d510e431ad0a830185092 Mon Sep 17 00:00:00 2001 From: Ilya Kurdyukov <59548320+ilyakurdyukov@users.noreply.github.com> Date: Thu, 5 Feb 2026 19:19:46 +0700 Subject: [PATCH 1/4] fix Elbrus support Fix commit d37d649b08b832d52fa684bc0506829fb40d5261, which broke Elbrus support: File "/usr/lib/python3/site-packages/mesonbuild/compilers/cpp.py", line 641, in get_option_compile_args assert isinstance(debugstl, str) (cherry picked from commit d435758194d1327c0a7f0a077cea45e2b266d47d) --- mesonbuild/compilers/cpp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index 332282f6a457..1d0ec855f9a2 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -656,7 +656,7 @@ def get_option_compile_args(self, target: 'BuildTarget', env: 'Environment', sub non_msvc_eh_options(eh, args) debugstl = self.get_compileropt_value('debugstl', env, target, subproject) - assert isinstance(debugstl, str) + assert isinstance(debugstl, bool) if debugstl: args.append('-D_GLIBCXX_DEBUG=1') return args From f36678a73d806f1228d8a4fb5fd18311966d80e7 Mon Sep 17 00:00:00 2001 From: Ilya Kurdyukov <59548320+ilyakurdyukov@users.noreply.github.com> Date: Thu, 5 Feb 2026 19:26:25 +0700 Subject: [PATCH 2/4] update Elbrus C/C++ stds for newer compiler (cherry picked from commit 3beb5d14363e09cbd5444a1e36d20fe8dd53cfd9) --- mesonbuild/compilers/c.py | 2 ++ mesonbuild/compilers/cpp.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py index 424b61251618..cfdeaaaedd7d 100644 --- a/mesonbuild/compilers/c.py +++ b/mesonbuild/compilers/c.py @@ -342,6 +342,8 @@ def get_options(self) -> 'MutableKeyedOptionDictType': stds += ['c90', 'c1x', 'gnu90', 'gnu1x', 'iso9899:2011'] if version_compare(self.version, '>=1.26.00'): stds += ['c17', 'c18', 'iso9899:2017', 'iso9899:2018', 'gnu17', 'gnu18'] + if version_compare(self.version, '>=1.28.00'): + stds += ['c2x', 'gnu2x', 'c23', 'gnu23'] key = self.form_compileropt_key('std') std_opt = opts[key] assert isinstance(std_opt, options.UserStdOption), 'for mypy' diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index 1d0ec855f9a2..0cce0c866780 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -628,6 +628,8 @@ def get_options(self) -> 'MutableKeyedOptionDictType': cpp_stds += ['c++2a'] if version_compare(self.version, '>=1.26.00'): cpp_stds += ['c++20'] + if version_compare(self.version, '>=1.28.00'): + cpp_stds += ['c++23'] key = self.form_compileropt_key('std') std_opt = opts[key] From e9bd65231b5a0f991e1dbdd6cb62ce12605b23fd Mon Sep 17 00:00:00 2001 From: Gleb Popov <6yearold@gmail.com> Date: Tue, 2 Jun 2026 15:51:21 +0300 Subject: [PATCH 3/4] ElbrusCompiler: mark as not supporting -fuse-ld (cherry picked from commit 94b3bbc87de1b0525a73f6d877a98dc58134087d) --- mesonbuild/compilers/mixins/elbrus.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mesonbuild/compilers/mixins/elbrus.py b/mesonbuild/compilers/mixins/elbrus.py index 7037db23260e..d285000a21de 100644 --- a/mesonbuild/compilers/mixins/elbrus.py +++ b/mesonbuild/compilers/mixins/elbrus.py @@ -97,3 +97,7 @@ def get_option_std_args(self, target: BuildTarget, env: Environment, subproject: def openmp_flags(self, env: Environment) -> T.List[str]: return ['-fopenmp'] + + @classmethod + def use_linker_args(cls, linker: str, version: str) -> T.List[str]: + return [] From 759d95fde62be0a545e3652b7429969efae21290 Mon Sep 17 00:00:00 2001 From: Gleb Popov <6yearold@gmail.com> Date: Wed, 10 Jun 2026 21:59:54 +0300 Subject: [PATCH 4/4] Implement language_stdlib_only_link_flags() for ElbrusFortranCompiler e2k's gfortran mimics the GNU one in this regard. Fixes numpy's f2py tests. (cherry picked from commit 3eaf128967eb252e42e71d01b2b2bdef5b33f8b7) --- mesonbuild/compilers/fortran.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mesonbuild/compilers/fortran.py b/mesonbuild/compilers/fortran.py index 6f4f3d2c15a0..6f2164cc4ca3 100644 --- a/mesonbuild/compilers/fortran.py +++ b/mesonbuild/compilers/fortran.py @@ -344,6 +344,11 @@ def get_options(self) -> 'MutableKeyedOptionDictType': def get_module_outdir_args(self, path: str) -> T.List[str]: return ['-J' + path] + def language_stdlib_only_link_flags(self) -> T.List[str]: + # No need to add search paths here, because LCC ships everything + # (C, C++, Fortran) and always knows where to look for its stuff + return ['-lgfortran', '-lm'] + class G95FortranCompiler(FortranCompiler):