diff options
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 |