|
@@ -120,7 +120,30 @@ if have_rust
|
|
|
endif
|
|
|
|
|
|
if have_rust
|
|
|
+ rustc_args = find_program('scripts/rust/rustc_args.py')
|
|
|
rustfmt = find_program('rustfmt', required: false)
|
|
|
+
|
|
|
+ # Prohibit code that is forbidden in Rust 2024
|
|
|
+ rustc_lint_args = ['-D', 'unsafe_op_in_unsafe_fn']
|
|
|
+
|
|
|
+ # Occasionally, we may need to silence warnings and clippy lints that
|
|
|
+ # were only introduced in newer Rust compiler versions. Do not croak
|
|
|
+ # in that case; a CI job with rust_strict_lints == true ensures that
|
|
|
+ # we do not have misspelled allow() attributes.
|
|
|
+ if not get_option('strict_rust_lints')
|
|
|
+ rustc_lint_args += ['-A', 'unknown_lints']
|
|
|
+ endif
|
|
|
+
|
|
|
+ # Apart from procedural macros, our Rust executables will often link
|
|
|
+ # with C code, so include all the libraries that C code needs. This
|
|
|
+ # is safe; https://github.com/rust-lang/rust/pull/54675 says that
|
|
|
+ # passing -nodefaultlibs to the linker "was more ideological to
|
|
|
+ # start with than anything".
|
|
|
+ add_project_arguments(rustc_lint_args +
|
|
|
+ ['--cfg', 'MESON', '-C', 'default-linker-libraries'],
|
|
|
+ native: false, language: 'rust')
|
|
|
+ add_project_arguments(rustc_lint_args + ['--cfg', 'MESON'],
|
|
|
+ native: true, language: 'rust')
|
|
|
endif
|
|
|
|
|
|
dtrace = not_found
|
|
@@ -3399,37 +3422,8 @@ endif
|
|
|
# Generated sources #
|
|
|
#####################
|
|
|
|
|
|
-genh += configure_file(output: 'config-host.h', configuration: config_host_data)
|
|
|
-
|
|
|
-if have_rust
|
|
|
- rustc_args = run_command(
|
|
|
- find_program('scripts/rust/rustc_args.py'),
|
|
|
- '--config-headers', meson.project_build_root() / 'config-host.h',
|
|
|
- capture : true,
|
|
|
- check: true).stdout().strip().split()
|
|
|
-
|
|
|
- # Prohibit code that is forbidden in Rust 2024
|
|
|
- rustc_args += ['-D', 'unsafe_op_in_unsafe_fn']
|
|
|
-
|
|
|
- # Occasionally, we may need to silence warnings and clippy lints that
|
|
|
- # were only introduced in newer Rust compiler versions. Do not croak
|
|
|
- # in that case; a CI job with rust_strict_lints == true ensures that
|
|
|
- # we do not have misspelled allow() attributes.
|
|
|
- if not get_option('strict_rust_lints')
|
|
|
- rustc_args += ['-A', 'unknown_lints']
|
|
|
- endif
|
|
|
-
|
|
|
- # Apart from procedural macros, our Rust executables will often link
|
|
|
- # with C code, so include all the libraries that C code needs. This
|
|
|
- # is safe; https://github.com/rust-lang/rust/pull/54675 says that
|
|
|
- # passing -nodefaultlibs to the linker "was more ideological to
|
|
|
- # start with than anything".
|
|
|
- add_project_arguments(rustc_args +
|
|
|
- ['--cfg', 'MESON', '-C', 'default-linker-libraries'],
|
|
|
- native: false, language: 'rust')
|
|
|
- add_project_arguments(rustc_args + ['--cfg', 'MESON'],
|
|
|
- native: true, language: 'rust')
|
|
|
-endif
|
|
|
+config_host_h = configure_file(output: 'config-host.h', configuration: config_host_data)
|
|
|
+genh += config_host_h
|
|
|
|
|
|
hxtool = find_program('scripts/hxtool')
|
|
|
shaderinclude = find_program('scripts/shaderinclude.py')
|