libctp-sys 0.1.0

Rust bindings to CTP API
Documentation
use std::env;
use std::path::PathBuf;

fn main() {
    let api_root = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("traderapi");

    let api_include_path = api_root.join("include");

    let cxx_file = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap())
        .join("cxx")
        .join("wrapper.cpp");

    let os = if cfg!(target_os = "windows") {
        "win"
    } else if cfg!(target_os = "linux") {
        "linux"
    } else {
        panic!("can not build on this platform.")
    };
    let arch = if cfg!(target_arch = "x86_64") {
        "64"
    } else if cfg!(target_arch = "x86") {
        "32"
    } else {
        panic!("can not build on this platform.")
    };

    cc::Build::new()
        .cpp(true)
        .include(api_include_path.to_str().unwrap())
        .file(cxx_file.to_str().unwrap())
        .flag_if_supported("-std=c++17")
        .flag_if_supported("-w")
        .compile("wrapper");

    println!(
        "cargo:rustc-link-search={}",
        api_root
            .join("lib")
            .join(format!("{}{}", os, arch))
            .display()
    );

    println!("cargo:rustc-link-lib=dylib=thostmduserapi_se");
    println!("cargo:rustc-link-lib=dylib=thosttraderapi_se");
}