#![deny(warnings)]
use std::env;use std::path::{self, Path, PathBuf};use std::process::Command;
fn main() { let mode = env::var("PROFILE").unwrap();
let out_dir = env::var_os("OUT_DIR").unwrap(); let out_dir = env::current_dir().unwrap().join(out_dir);
let gn_out_dir = match env::var_os("DENO_BUILD_PATH") { None => { let d = out_dir.parent().unwrap(); let d = d.parent().unwrap(); let d = d.parent().unwrap(); PathBuf::from(d) } Some(deno_build_path) => PathBuf::from(deno_build_path), };
println!("cargo:rustc-env=GN_OUT_DIR={}", normalize_path(&gn_out_dir)); println!( "cargo:rustc-link-search=native={}/obj", normalize_path(&gn_out_dir) ); println!("cargo:rustc-link-lib=static=deno_deps");
println!("cargo:rerun-if-env-changed=DENO_BUILD_PATH"); println!("cargo:rerun-if-env-changed=APPVEYOR_REPO_COMMIT");
let check_only = env::var_os("CARGO") .map(PathBuf::from) .as_ref() .and_then(|p| p.file_stem()) .and_then(|f| f.to_str()) .map(|s| s.starts_with("rls")) .unwrap_or(false);
let gn_target = if check_only { "cargo_check_deps" } else { "deno_deps" };
let status = Command::new("python") .env("DENO_BUILD_PATH", &gn_out_dir) .env("DENO_BUILD_MODE", &mode) .arg("./tools/setup.py") .status() .expect("setup.py failed"); assert!(status.success());
let status = Command::new("python") .env("DENO_BUILD_PATH", &gn_out_dir) .env("DENO_BUILD_MODE", &mode) .arg("./tools/build.py") .arg(gn_target) .arg("-v") .status() .expect("build.py failed"); assert!(status.success());}
fn normalize_path(path: &Path) -> String { path .to_str() .unwrap() .to_owned() .chars() .map(|c| if path::is_separator(c) { '/' } else { c }) .collect()}