slint/sixtyfps_runtime/rendering_backends/gl/build.rs
Olivier Goffart 0553ab8b1a Use env::var_os instead of env::var
For the unliekly case in which the git repository is checked out in a directory
that cannot be represented with unicode
2020-06-05 13:45:37 +02:00

37 lines
1.2 KiB
Rust

extern crate cbindgen;
use std::env;
use std::path::PathBuf;
fn main() {
let config = cbindgen::Config {
pragma_once: true,
include_version: true,
namespaces: Some(vec!["sixtyfps".into(), "internal".into()]),
line_length: 100,
tab_width: 4,
// Note: we might need to switch to C if we need to generate bindings for language that needs C headers
language: cbindgen::Language::Cxx,
cpp_compat: true,
documentation: true,
export: cbindgen::ExportConfig { ..Default::default() },
..Default::default()
};
let mut include_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());
include_dir.pop();
include_dir.pop();
include_dir.pop(); // target/{debug|release}/build/package/out/ -> target/{debug|release}
include_dir.push("include");
std::fs::create_dir_all(include_dir.clone()).unwrap();
let crate_dir = env::var_os("CARGO_MANIFEST_DIR").unwrap();
cbindgen::Builder::new()
.with_config(config)
.with_crate(crate_dir)
.with_header("#include <sixtyfps_internal.h>")
.generate()
.expect("Unable to generate bindings")
.write_to_file(include_dir.join("sixtyfps_gl_internal.h"));
}