_qemu_api_cfg = run_command(rustc_args,
  '--config-headers', config_host_h, '--features', files('Cargo.toml'),
  capture: true, check: true).stdout().strip().splitlines()

libc_dep = dependency('libc-0.2-rs')

# _qemu_api_cfg += ['--cfg', 'feature="allocator"']
if rustc.version().version_compare('>=1.77.0')
  _qemu_api_cfg += ['--cfg', 'has_offset_of']
endif
if get_option('debug_mutex')
  _qemu_api_cfg += ['--cfg', 'feature="debug_cell"']
endif

_qemu_api_rs = static_library(
  'qemu_api',
  structured_sources(
    [
      'src/lib.rs',
      'src/assertions.rs',
      'src/bindings.rs',
      'src/bitops.rs',
      'src/callbacks.rs',
      'src/cell.rs',
      'src/chardev.rs',
      'src/c_str.rs',
      'src/errno.rs',
      'src/irq.rs',
      'src/memory.rs',
      'src/module.rs',
      'src/offset_of.rs',
      'src/prelude.rs',
      'src/qdev.rs',
      'src/qom.rs',
      'src/sysbus.rs',
      'src/timer.rs',
      'src/vmstate.rs',
      'src/zeroable.rs',
    ],
    {'.' : bindings_rs},
  ),
  override_options: ['rust_std=2021', 'build.rust_std=2021'],
  rust_abi: 'rust',
  rust_args: _qemu_api_cfg,
  dependencies: libc_dep,
)

rust.test('rust-qemu-api-tests', _qemu_api_rs,
          suite: ['unit', 'rust'])

qemu_api = declare_dependency(
  link_with: _qemu_api_rs,
  dependencies: qemu_api_macros,
)

# Rust executables do not support objects, so add an intermediate step.
rust_qemu_api_objs = static_library(
    'rust_qemu_api_objs',
    objects: [libqom.extract_all_objects(recursive: false),
              libhwcore.extract_all_objects(recursive: false)])

test('rust-qemu-api-integration',
    executable(
        'rust-qemu-api-integration',
        'tests/tests.rs',
        override_options: ['rust_std=2021', 'build.rust_std=2021'],
        rust_args: ['--test'],
        install: false,
        dependencies: [qemu_api, qemu_api_macros],
        link_whole: [rust_qemu_api_objs, libqemuutil]),
    args: [
        '--test', '--test-threads', '1',
        '--format', 'pretty',
    ],
    protocol: 'rust',
    suite: ['unit', 'rust'])
