2 个版本
0.1.1 | 2021 年 8 月 18 日 |
---|---|
0.1.0 | 2021 年 8 月 18 日 |
#1814 在 Rust 模式
8KB
87 行
bindgen-cfg
使用 yaml 指定 bindgen 设置。
示例
build.rs
use std::path::PathBuf;
use bindgen_cfg::BuilderExt;
fn main() {
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
bindgen::builder()
.header("wrapper.h")
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
.config("bindgen.yaml")
.expect("bindgen config is present and well formed")
.generate()
.write_to_file(out_path.join("bindings.rs"))
.expect("write SPDK bindings");
}
bindgen.yaml
opaque:
- spdk_nvme_ctrlr
- spdk_nvme_ctrlr_data
- spdk_nvme_qpair
- spdk_nvme_ns
- spdk_nvme_cpl
- spdk_nvme_health_information_page
- spdk_nvme_sgl_descriptor
type:
block:
- spdk_nvme_tcp_rsp
- spdk_nvme_tcp_cmd
- spdk_nvmf_fabric_prop_get_rsp
- spdk_nvmf_fabric_connect_rsp
- spdk_nvmf_fabric_connect_cmd
- spdk_nvmf_fabric_auth_send_cmd
- spdk_nvmf_fabric_auth_recv_cmd
block:
- IPPORT_RESERVED
- FP_NORMAL
- FP_SUBNORMAL
- FP_ZERO
- FP_INFINITE
- FP_NAN
配置模式
block: # a list of items to block (Builder::blocklist_item; alias "blacklist")
- item_name
function: # a block/allow filter for functions
allow: # (Builder::allowlist_function; alias "whitelist")
- func_name
block: # (Builder::blocklist_function; alias "blacklist")
- func_name
variable: # an allow filter for functions; no block list
allow: # (Builder::allowlist_var; alias "whitelist")
- var_name
type: # a block/allow filter for types
allow: # (Builder::allowlist_type; alias "whitelist")
- type_name
block: # (Builder::blocklist_type; alias "blacklist")
- type_name
opaque: # a list of opaque types (Builder::opaque_type)
- type_name
enum: # a mapping between enum names and their code gen type
enum1: bitfield # (Builder::bitfield_enum; alias "b")
enum2: new_type # (Builder::newtype_enum; alias "nt")
enum3: rustified # (Builder::rustified_enum; alias "r")
enum4: rustified_non_exhaustive # (Builder::rustified_non_exhaustive_enum; alias "rne")
enum5: constified # (Builder::constified_enum; alias "c")
enum6: constified_module # (Builder::constified_enum_module; alias "cm")
许可
许可方式为以下之一
- Apache 许可证 2.0 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在作品中的任何贡献,将按照上述方式双重许可,无需附加条款或条件。
对于我的使用案例,没有其他配置选项是相关的,但我愿意合并请求以添加新的配置选项。
依赖项
~9.5MB
~182K SLoC