aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/rust.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/compilers/rust.py')
-rw-r--r--mesonbuild/compilers/rust.py19
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