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"); }