1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- extern crate cbindgen;
- use std::env;
- fn main() {
- println!("cargo:rerun-if-env-changed=SPL_CBINDGEN");
- println!("cargo:rerun-if-changed=inc/token.h");
- if std::path::Path::new("inc/token.h").exists() && env::var("SPL_CBINDGEN").is_err() {
- return;
- }
- println!("cargo:warning=Generating inc/token.h");
- let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
- let config = cbindgen::Config {
- header: Some("/* Autogenerated SPL Token program C Bindings */".to_string()),
- after_includes: Some(format!(
- "{}{}{}",
- format!(
- "\n#define TOKEN_MAJOR_VERSION {}",
- env!("CARGO_PKG_VERSION_MAJOR")
- ),
- format!(
- "\n#define TOKEN_MINOR_VERSION {}",
- env!("CARGO_PKG_VERSION_MINOR")
- ),
- format!(
- "\n#define TOKEN_PATCH_VERSION {}",
- env!("CARGO_PKG_VERSION_PATCH")
- )
- )),
- language: cbindgen::Language::C,
- line_length: 80,
- style: cbindgen::Style::Both,
- tab_width: 4,
- cpp_compat: true,
- pragma_once: true,
- enumeration: cbindgen::EnumConfig {
- prefix_with_name: true,
- ..cbindgen::EnumConfig::default()
- },
- export: cbindgen::ExportConfig {
- prefix: Some("Token_".to_string()),
- include: vec![
- "TokenInstruction".to_string(),
- "Mint".to_string(),
- "Account".to_string(),
- "Multisig".to_string(),
- ],
- exclude: vec!["DECIMALS".to_string()],
- ..cbindgen::ExportConfig::default()
- },
- parse: cbindgen::ParseConfig {
- parse_deps: true,
- include: Some(vec!["solana-sdk".to_string()]),
- ..cbindgen::ParseConfig::default()
- },
- ..cbindgen::Config::default()
- };
- cbindgen::Builder::new()
- .with_crate(crate_dir)
- .with_config(config)
- .generate()
- .unwrap()
- .write_to_file("inc/token.h");
- }
|