Files
mesa/src/compiler/rust/meson.build
Mel Henning 3b341366a6 compiler/rust: Fix running tests
`ninja test` wasn't actually running these tests, I guess because the
target name was duplicated in meson. Fix this so the tests actually run.

Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32812>
2025-01-02 20:52:47 +00:00

143 lines
3.3 KiB
Meson

# Copyright © 2024 Igalia S.L.
# SPDX-License-Identifier: MIT
_compiler_rs_sources = [
'as_slice.rs',
'bitset.rs',
'cfg.rs',
'memstream.rs',
'nir_instr_printer.rs',
'nir.rs',
'smallvec.rs',
]
_compiler_binding_types = [
'exec_list',
'exec_node',
'float_controls',
'gc_ctx',
'gl_access_qualifier',
'gl_frag_result',
'gl_interp_mode',
'gl_shader_stage',
'gl_subgroup_size',
'gl_system_value',
'gl_tess_spacing',
'gl_varying_slot',
'gl_vert_attrib',
'glsl_type',
'nir_.*',
'mesa_scope',
'mesa_prim',
'pipe_shader_type',
'shader_info',
'tess_primitive_mode',
]
_compiler_bindgen_args = [
'--raw-line', '#![allow(non_camel_case_types)]',
'--raw-line', '#![allow(non_snake_case)]',
'--raw-line', '#![allow(non_upper_case_globals)]',
'--allowlist-var', 'nir_.*_infos',
'--allowlist-var', 'rust_.*',
'--allowlist-function', 'glsl_.*',
'--allowlist-function', '_mesa_shader_stage_to_string',
'--allowlist-function', 'nir_.*',
'--allowlist-function', 'compiler_rs.*',
'--allowlist-function', 'u_memstream.*',
'--allowlist-type', 'u_memstream',
'--no-prepend-enum-name',
]
foreach type : _compiler_binding_types
_compiler_bindgen_args += ['--allowlist-type', type]
endforeach
_libcompiler_c_sources = files('rust_helpers.c')
_libcompiler_c = static_library(
'compiler_c_helpers',
[_libcompiler_c_sources],
include_directories : [inc_include, inc_util],
c_args : [no_override_init_args],
gnu_symbol_visibility : 'hidden',
)
_idep_libcompiler_c = declare_dependency(
include_directories: include_directories('.'),
link_with : _libcompiler_c,
)
_compiler_bindings_rs = rust.bindgen(
input : ['bindings.h'],
output : 'bindings.rs',
c_args : [
pre_args,
],
args : _compiler_bindgen_args,
dependencies : [
idep_nir_headers,
idep_mesautil,
],
)
compiler_rs_bindgen_blocklist = []
foreach type : _compiler_binding_types
compiler_rs_bindgen_blocklist += ['--blocklist-type', type]
endforeach
_compiler_rs_sources = structured_sources([
# lib.rs has to go first
'lib.rs',
_compiler_bindings_rs,
_compiler_rs_sources,
])
_libcompiler_rs = static_library(
'compiler',
_compiler_rs_sources,
gnu_symbol_visibility : 'hidden',
rust_abi : 'rust',
dependencies: [_idep_libcompiler_c],
)
# TODO: Linking Rust executables (such as unit tests) doesn't play nicely
# with the sanitizers because meson doesn't know to pass -fsanitize to the
# Rust linker. See also https://github.com/mesonbuild/meson/issues/11741
if with_tests and get_option('b_sanitize') == 'none'
rust.test(
'compiler_test',
_libcompiler_rs,
suite : ['compiler', 'rs'],
dependencies : [
idep_mesautil.partial_dependency(link_args : true, links : true),
],
# This is needed to ensure we link against glibc
# See also https://gitlab.freedesktop.org/mesa/mesa/-/issues/11632
rust_args: ['-C', 'default-linker-libraries'],
)
endif
idep_compiler_rs = declare_dependency(
link_with : _libcompiler_rs,
)
dep_syn = dependency('syn',
version : '>= 2.0.15',
fallback : ['syn', 'dep_syn'],
required : true,
)
_libcompiler_proc_rs = static_library(
'compiler_proc',
'proc/lib.rs',
gnu_symbol_visibility : 'hidden',
dependencies : [dep_syn],
rust_abi : 'rust',
native : true,
)
idep_compiler_proc_rs = declare_dependency(
link_with : _libcompiler_proc_rs,
)