xref: /openbmc/qemu/rust/qemu-api/meson.build (revision cde3c425)
15a5110d2SManos Pitsidianakis_qemu_api_rs = static_library(
25a5110d2SManos Pitsidianakis  'qemu_api',
35a5110d2SManos Pitsidianakis  structured_sources(
45a5110d2SManos Pitsidianakis    [
55a5110d2SManos Pitsidianakis      'src/lib.rs',
65a5110d2SManos Pitsidianakis      'src/definitions.rs',
75a5110d2SManos Pitsidianakis      'src/device_class.rs',
85a5110d2SManos Pitsidianakis    ],
95a5110d2SManos Pitsidianakis    {'.' : bindings_rs},
105a5110d2SManos Pitsidianakis  ),
115a5110d2SManos Pitsidianakis  override_options: ['rust_std=2021', 'build.rust_std=2021'],
125a5110d2SManos Pitsidianakis  rust_abi: 'rust',
137b72c7ddSPaolo Bonzini  rust_args: [
145a5110d2SManos Pitsidianakis    '--cfg', 'MESON',
155a5110d2SManos Pitsidianakis    # '--cfg', 'feature="allocator"',
165a5110d2SManos Pitsidianakis  ],
175a5110d2SManos Pitsidianakis)
185a5110d2SManos Pitsidianakis
195a5110d2SManos Pitsidianakisqemu_api = declare_dependency(
205a5110d2SManos Pitsidianakis  link_with: _qemu_api_rs,
21*cde3c425SPaolo Bonzini  dependencies: qemu_api_macros,
225a5110d2SManos Pitsidianakis)
23*cde3c425SPaolo Bonzini
24*cde3c425SPaolo Bonzini# Rust executables do not support objects, so add an intermediate step.
25*cde3c425SPaolo Bonzinirust_qemu_api_objs = static_library(
26*cde3c425SPaolo Bonzini    'rust_qemu_api_objs',
27*cde3c425SPaolo Bonzini    objects: [libqom.extract_all_objects(recursive: false),
28*cde3c425SPaolo Bonzini              libhwcore.extract_all_objects(recursive: false)])
29*cde3c425SPaolo Bonzini
30*cde3c425SPaolo Bonzinitest('rust-qemu-api-integration',
31*cde3c425SPaolo Bonzini    executable(
32*cde3c425SPaolo Bonzini        'rust-qemu-api-integration',
33*cde3c425SPaolo Bonzini        'tests/tests.rs',
34*cde3c425SPaolo Bonzini        override_options: ['rust_std=2021', 'build.rust_std=2021'],
35*cde3c425SPaolo Bonzini        rust_args: ['--test'],
36*cde3c425SPaolo Bonzini        install: false,
37*cde3c425SPaolo Bonzini        dependencies: [qemu_api, qemu_api_macros],
38*cde3c425SPaolo Bonzini        link_whole: [rust_qemu_api_objs, libqemuutil]),
39*cde3c425SPaolo Bonzini    args: [
40*cde3c425SPaolo Bonzini        '--test',
41*cde3c425SPaolo Bonzini        '--format', 'pretty',
42*cde3c425SPaolo Bonzini    ],
43*cde3c425SPaolo Bonzini    protocol: 'rust',
44*cde3c425SPaolo Bonzini    suite: ['unit', 'rust'])
45