Move raw FFI bindings generation to separate crates. This makes it possible to reuse bindgen declarations for a header file in its dependencies (this was not the case before this change), while keeping multiple -sys crates to avoid rebuilding all the code whenever something changes. Because the -sys crates are generated in dependency order, this also enforces that the crates are organized in something that resembles the dependencies between C headers. The meson.build for rust-safe crates becomes simpler, and it should be possible in the future to let Meson's cargo support handle most of it. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> [General cleanup and Python script. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
31 lines
932 B
C
31 lines
932 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/*
|
|
* This header file is meant to be used as input to the `bindgen` application
|
|
* in order to generate C FFI compatible Rust bindings.
|
|
*/
|
|
|
|
/*
|
|
* We block include/qemu/typedefs.h from bindgen, add here symbols
|
|
* that are needed as opaque types by other functions.
|
|
*/
|
|
typedef struct Clock Clock;
|
|
typedef struct DeviceState DeviceState;
|
|
typedef struct IRQState *qemu_irq;
|
|
typedef void (*qemu_irq_handler)(void *opaque, int n, int level);
|
|
|
|
/* Once bindings exist, these could move to a different *-sys crate. */
|
|
typedef struct BlockBackend BlockBackend;
|
|
typedef struct Monitor Monitor;
|
|
typedef struct NetClientState NetClientState;
|
|
|
|
#include "qemu/osdep.h"
|
|
|
|
#include "hw/core/clock.h"
|
|
#include "hw/core/irq.h"
|
|
#include "hw/core/qdev-clock.h"
|
|
#include "hw/core/qdev.h"
|
|
#include "hw/core/qdev-properties-system.h"
|
|
#include "hw/core/qdev-properties.h"
|
|
#include "hw/core/resettable.h"
|