ocl-interop 0.1.6

Creates an OpenCL Context with OpenGL Interop enabled
Documentation
extern crate gl_generator;

use gl_generator::{Api, Fallbacks, Profile, Registry};
use std::env;
use std::fs::File;
use std::path::PathBuf;

fn main() {
    let target = env::var("TARGET").unwrap();
    let dest = PathBuf::from(&env::var("OUT_DIR").unwrap());

    if target.contains("darwin") {
        //macos
        //IDK if this line is needed..
        println!("warning=Mac support is untested! Use at your own risk, and please report any problems!");
        println!("cargo:rustc-link-lib=framework=OpenGL");
    } else if target.contains("windows") {
        //windows
        let mut file = File::create(&dest.join("wgl_bindings.rs")).unwrap();
        Registry::new(Api::Wgl, (1, 0), Profile::Core, Fallbacks::All, [])
            .write_bindings(gl_generator::StaticGenerator, &mut file)
            .unwrap();
        println!("cargo:rustc-link-lib=opengl32");
    } else if target.contains("linux") && !target.contains("android") {
        //linux
        let mut file = File::create(&dest.join("glx_bindings.rs")).unwrap();
        Registry::new(Api::Glx, (1, 4), Profile::Core, Fallbacks::All, [])
            .write_bindings(gl_generator::StaticGenerator, &mut file)
            .unwrap();
        println!("cargo:rustc-link-lib=GL");
    } else if target.contains("android") {
        //android
        let mut file = File::create(&dest.join("egl_bindings.rs")).unwrap();
        Registry::new(Api::Egl, (1, 4), Profile::Core, Fallbacks::All, [])
            .write_bindings(gl_generator::StaticGenerator, &mut file)
            .unwrap();
        println!("warning=Android support is untested! Use at your own risk, and please report any problems!");
    } else {
        println!("warning=Unknown Platform. Can't decide what platform specific library to use");
    }
}