teamtalk-sys 0.1.0

Native bindings for TeamTalk SDK
Documentation
use std::env;
use std::path::PathBuf;

fn main() {
    let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap();
    let mut builder = bindgen::Builder::default();

    if target_os == "windows" {
        builder = builder.header_contents(
            "wrapper.h",
            "
            typedef unsigned short WCHAR;
            typedef int INT32;
            typedef unsigned int UINT32;
            typedef long long INT64;
            typedef unsigned short UINT16;
            typedef void VOID;
            typedef void* HWND;
            typedef void* HDC;
            #define WIN32
            #include \"TeamTalk.h\"
        ",
        );
    } else {
        builder = builder.header("TeamTalk.h");
    }

    let bindings = builder
        .clang_arg("-DIN=")
        .clang_arg("-DOUT=")
        .dynamic_library_name("TeamTalk5")
        .wrap_unsafe_ops(true)
        .rustified_enum("AudioFileFormat")
        .rustified_enum("AudioPreprocessorType")
        .rustified_enum("BanType")
        .rustified_enum("BitmapFormat")
        .rustified_enum("ChannelType")
        .rustified_enum("ClientError")
        .rustified_enum("ClientEvent")
        .rustified_enum("ClientFlag")
        .rustified_enum("Codec")
        .rustified_enum("DesktopKeyState")
        .rustified_enum("DesktopProtocol")
        .rustified_enum("FileTransferStatus")
        .rustified_enum("FourCC")
        .rustified_enum("MediaFileStatus")
        .rustified_enum("MixerControl")
        .rustified_enum("ServerLogEvent")
        .rustified_enum("SoundDeviceFeature")
        .rustified_enum("SoundLevel")
        .rustified_enum("SoundSystem")
        .rustified_enum("StreamType")
        .rustified_enum("Subscription")
        .rustified_enum("TTKeyTranslate")
        .rustified_enum("TTType")
        .rustified_enum("TextMsgType")
        .rustified_enum("UserRight")
        .rustified_enum("UserState")
        .rustified_enum("UserType")
        .default_macro_constant_type(bindgen::MacroTypeVariation::Signed)
        .derive_default(true)
        .generate()
        .expect("Unable to generate bindings");

    let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
    bindings
        .write_to_file(out_path.join("bindings.rs"))
        .expect("Couldn't write bindings!");
}