#![allow(unused_imports, dead_code, unused_variables)]
extern crate cmake;
use std::{
env,
path::{Path, PathBuf},
process::Command,
};
fn main() {
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
let target_os = env::var("CARGO_CFG_TARGET_OS");
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=cfltk/cfl.h");
println!("cargo:rerun-if-changed=cfltk/cfl_widget.h");
println!("cargo:rerun-if-changed=cfltk/cfl_group.h");
println!("cargo:rerun-if-changed=cfltk/cfl_window.h");
println!("cargo:rerun-if-changed=cfltk/cfl_button.h");
println!("cargo:rerun-if-changed=cfltk/cfl_box.h");
println!("cargo:rerun-if-changed=cfltk/cfl_menu.h");
println!("cargo:rerun-if-changed=cfltk/cfl_dialog.h");
println!("cargo:rerun-if-changed=cfltk/cfl_valuator.h");
println!("cargo:rerun-if-changed=cfltk/cfl_browser.h");
println!("cargo:rerun-if-changed=cfltk/cfl_image.h");
println!("cargo:rerun-if-changed=cfltk/global.h");
println!("cargo:rerun-if-changed=cfltk/CMakeLists.txt");
Command::new("git")
.args(&["submodule", "update", "--init"])
.current_dir(manifest_dir.clone())
.status()
.unwrap();
Command::new("git")
.args(&["checkout", "master"])
.current_dir(manifest_dir.join("cfltk").join("fltk"))
.status()
.unwrap();
let dst = cmake::Config::new("cfltk")
.profile("RELEASE")
.define("OpenGL_GL_PREFERENCE", "GLVND")
.define("OPTION_BUILD_EXAMPLES", "OFF")
.define("OPTION_LARGE_FILE", "ON")
.define("OPTION_USE_SYSTEM_ZLIB", "OFF")
.define("OPTION_USE_SYSTEM_LIBPNG", "OFF")
.define("OPTION_USE_SYSTEM_LIBJPEG", "OFF")
.define("OPTION_BUILD_HTML_DOCUMENTATION", "OFF")
.define("OPTION_BUILD_PDF_DOCUMENTATION", "OFF")
.build();
println!(
"cargo:rustc-link-search=native={}",
dst.join("build").display()
);
println!(
"cargo:rustc-link-search=native={}",
dst.join("lib").display()
);
println!(
"cargo:rustc-link-search=native={}",
dst.join("lib").join("Release").display()
);
println!("cargo:rustc-link-lib=static=cfltk");
println!("cargo:rustc-link-lib=static=fltk");
println!("cargo:rustc-link-lib=static=fltk_images");
println!("cargo:rustc-link-lib=static=fltk_jpeg");
println!("cargo:rustc-link-lib=static=fltk_png");
println!("cargo:rustc-link-lib=static=fltk_z");
match target_os.unwrap().as_str() {
"macos" => {
println!("cargo:rustc-link-lib=dylib=c++");
println!("cargo:rustc-link-lib=framework=Carbon");
println!("cargo:rustc-link-lib=framework=Cocoa");
println!("cargo:rustc-link-lib=framework=ApplicationServices");
println!("cargo:rustc-link-lib=dylib=z");
}
"windows" => {
if cfg!(target_env = "gnu") {
println!("cargo:rustc-link-lib=dylib=stdc++");
}
println!("cargo:rustc-link-lib=dylib=ws2_32");
println!("cargo:rustc-link-lib=dylib=comctl32");
println!("cargo:rustc-link-lib=dylib=gdi32");
println!("cargo:rustc-link-lib=dylib=oleaut32");
println!("cargo:rustc-link-lib=dylib=ole32");
println!("cargo:rustc-link-lib=dylib=uuid");
println!("cargo:rustc-link-lib=dylib=shell32");
println!("cargo:rustc-link-lib=dylib=advapi32");
println!("cargo:rustc-link-lib=dylib=comdlg32");
println!("cargo:rustc-link-lib=dylib=winspool");
println!("cargo:rustc-link-lib=dylib=user32");
println!("cargo:rustc-link-lib=dylib=kernel32");
println!("cargo:rustc-link-lib=dylib=odbc32");
println!("cargo:rustc-link-lib=dylib=odbccp32");
}
_ => {
println!("cargo:rustc-link-lib=dylib=stdc++");
println!("cargo:rustc-link-lib=dylib=X11");
println!("cargo:rustc-link-lib=dylib=Xext");
println!("cargo:rustc-link-lib=dylib=Xinerama");
println!("cargo:rustc-link-lib=dylib=Xcursor");
println!("cargo:rustc-link-lib=dylib=Xrender");
println!("cargo:rustc-link-lib=dylib=Xfixes");
println!("cargo:rustc-link-lib=dylib=Xft");
println!("cargo:rustc-link-lib=dylib=fontconfig");
}
}
}