diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2020-10-26 12:45:35 -0700 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2020-11-05 21:24:20 +0200 |
commit | 7860a6aeab9514391f02923a7f6357f094c8af68 (patch) | |
tree | 57e7b9bf1f89ab5e5d1133a97a550ea237527046 /mesonbuild/compilers/rust.py | |
parent | be2c1a43000db0a84a76522b23b80d597e08f663 (diff) | |
download | meson-7860a6aeab9514391f02923a7f6357f094c8af68.zip meson-7860a6aeab9514391f02923a7f6357f094c8af68.tar.gz meson-7860a6aeab9514391f02923a7f6357f094c8af68.tar.bz2 |
rust: implement support for --edition
Using the std option, so now `rust_std=..` will work. I've chosen to use
"std" even though rust calls these "editions", as meson refers to
language versions as "standards", which makes meson feel more uniform,
and be less surprising.
Fixes: #5100
Diffstat (limited to 'mesonbuild/compilers/rust.py')
-rw-r--r-- | mesonbuild/compilers/rust.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py index 02bc791..469859b 100644 --- a/mesonbuild/compilers/rust.py +++ b/mesonbuild/compilers/rust.py @@ -16,15 +16,18 @@ import subprocess, os.path import textwrap import typing as T +from .. import coredata from ..mesonlib import EnvironmentException, MachineChoice, Popen_safe from .compilers import Compiler, rust_buildtype_args, clike_debug_args if T.TYPE_CHECKING: + from ..coredata import OptionDictType from ..dependencies import ExternalProgram from ..envconfig import MachineInfo from ..environment import Environment # noqa: F401 from ..linkers import DynamicLinker + rust_optimization_args = { '0': [], 'g': ['-C', 'opt-level=0'], @@ -122,3 +125,19 @@ class RustCompiler(Compiler): # Rust does not have a use_linker_args because it dispatches to a gcc-like # C compiler for dynamic linking, as such we invoke the C compiler's # use_linker_args method instead. + + def get_options(self) -> 'OptionDictType': + return { + 'std': coredata.UserComboOption( + 'Rust Eddition to use', + ['none', '2015', '2018'], + 'none', + ), + } + + def get_option_compile_args(self, options: 'OptionDictType') -> T.List[str]: + args = [] + std = options['std'] + if std.value != 'none': + args.append('--edition=' + std.value) + return args |