aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/rust.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2020-10-26 12:45:35 -0700
committerJussi Pakkanen <jpakkane@gmail.com>2020-11-05 21:24:20 +0200
commit7860a6aeab9514391f02923a7f6357f094c8af68 (patch)
tree57e7b9bf1f89ab5e5d1133a97a550ea237527046 /mesonbuild/compilers/rust.py
parentbe2c1a43000db0a84a76522b23b80d597e08f663 (diff)
downloadmeson-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.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