diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index bbae40801..34cf74e7d 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1170,6 +1170,7 @@ int dummy; args += rustc.get_buildtype_args(self.get_option_for_target('buildtype', target)) depfile = os.path.join(target.subdir, target.name + '.d') args += ['--emit', 'dep-info={}'.format(depfile), '--emit', 'link'] + args += target.get_extra_args('rust') args += ['-o', os.path.join(target.subdir, target.get_filename())] orderdeps = [os.path.join(t.subdir, t.get_filename()) for t in target.link_targets] linkdirs = OrderedDict() diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 0d58394f6..c6c712f54 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -34,6 +34,7 @@ known_basic_kwargs = {'install': True, 'fortran_args': True, 'd_args': True, 'java_args': True, + 'rust_args': True, 'link_args': True, 'link_depends': True, 'link_with': True, @@ -632,6 +633,10 @@ class BuildTarget(Target): if not isinstance(fortranlist, list): fortranlist = [fortranlist] self.add_compiler_args('fortran', fortranlist) + rustlist = kwargs.get('rust_args', []) + if not isinstance(rustlist, list): + rustlist = [rustlist] + self.add_compiler_args('rust', rustlist) if not isinstance(self, Executable): self.vala_header = kwargs.get('vala_header', self.name + '.h') self.vala_vapi = kwargs.get('vala_vapi', self.name + '.vapi') diff --git a/test cases/rust/1 basic/meson.build b/test cases/rust/1 basic/meson.build index 076d86b60..3919279a9 100644 --- a/test cases/rust/1 basic/meson.build +++ b/test cases/rust/1 basic/meson.build @@ -1,6 +1,9 @@ project('rustprog', 'rust') -e = executable('program', 'prog.rs', install : true) +e = executable('program', 'prog.rs', + rust_args : ['-C', 'lto'], # Just a test + install : true +) test('rusttest', e) subdir('subdir')