zlib-src-sys 0.1.2

Rust build helpers for zlib. Licensed as GPL2 or FreeType License
Documentation
extern crate cmake;

use std::process::Command;
use std::env;
use std::fs;
use std::path::Path;


fn build_unix() {
	let zlib_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
	let zlib_native_dir = Path::new(&zlib_dir).join("zlib-1.2.8");
	let out_dir = env::var("OUT_DIR").unwrap();
	let build_dir = Path::new(&out_dir).join("build");
	fs::remove_dir_all(&build_dir).is_ok();
	fs::create_dir(&build_dir).is_ok();
	Command::new("cmake")
		.arg(zlib_native_dir)
		.current_dir(&build_dir)
		.status().unwrap();
	Command::new("make")
		.current_dir(&build_dir)
		.status().unwrap();
	let out_dir = env::var("OUT_DIR").unwrap();
	let dest_path = Path::new(&out_dir).join("libz.a");
	fs::copy(build_dir.join("libz.a"),dest_path).unwrap();
	println!("cargo:rustc-link-lib=static=z");
	println!("cargo:rustc-link-search=native={}",out_dir);
}


fn build_emscripten() {
	let zlib_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
	let zlib_native_dir = Path::new(&zlib_dir).join("zlib-1.2.8");
	let out_dir = env::var("OUT_DIR").unwrap();
	let build_dir = Path::new(&out_dir).join("build");
	fs::remove_dir_all(&build_dir).is_ok();
	fs::create_dir(&build_dir).is_ok();
	Command::new("emcmake")
		.arg("cmake")
		.arg(zlib_native_dir)
		.current_dir(&build_dir)
		.status().unwrap();
	Command::new("emmake")
		.arg("make")
		.current_dir(&build_dir)
		.status().unwrap();
	let dest_path = Path::new(&out_dir).join("libz.a");
	fs::copy(build_dir.join("libz.a"),dest_path).unwrap();
	println!("cargo:rustc-link-lib=static=z");
	println!("cargo:rustc-link-search=native={}",out_dir);
}

fn build_windows() {
	let dst = cmake::build("zlib-1.2.8");
	let lib_dir = dst.join("lib");
	println!("cargo:rustc-link-search=native={}", lib_dir.display());

	#[cfg(debug_assertions)]
	println!("cargo:rustc-link-lib=static=zlibstaticd");

	#[cfg(not(debug_assertions))]
	println!("cargo:rustc-link-lib=static=zlibstatic");
}

fn main(){
	let target_triple = env::var("TARGET").unwrap();
	if target_triple.contains("linux") {
		build_unix()
	}else if target_triple.contains("darwin") {
		build_unix()
	}else if target_triple.contains("windows") {
		build_windows()
	}else if target_triple.contains("emscripten") {
		build_emscripten()
	}else if target_triple.contains("wasm32"){
		build_emscripten()
	}else{
		panic!("target OS {} not suported yet", target_triple);
	}
}