spl-token 1.1.0

Solana Program Library Token
Documentation
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");
}