1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-19 11:21:39 +03:00
wezterm/deps/harfbuzz/build.rs

72 lines
2.0 KiB
Rust
Raw Normal View History

use std::env;
use std::path::{Path, PathBuf};
fn harfbuzz() {
use std::fs;
if !Path::new("harfbuzz/.git").exists() {
git_submodule_update();
}
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
let mut cfg = cc::Build::new();
cfg.warnings(false);
cfg.cpp(true);
cfg.flag_if_supported("-fno-rtti");
cfg.flag_if_supported("-fno-exceptions");
cfg.flag_if_supported("-fno-threadsafe-statics");
cfg.flag_if_supported("-std=c++11");
cfg.flag_if_supported("-fno-stack-check");
let build_dir = out_dir.join("harfbuzz-build");
fs::create_dir_all(&build_dir).unwrap();
cfg.out_dir(&build_dir);
let target = env::var("TARGET").unwrap();
cfg.file("harfbuzz/src/harfbuzz.cc");
2020-11-21 19:50:24 +03:00
cfg.define("HB_NO_MT", None);
if !target.contains("windows") {
cfg.define("HAVE_UNISTD_H", None);
cfg.define("HAVE_SYS_MMAN_H", None);
}
// We know that these are present in our vendored freetype
cfg.define("HAVE_FREETYPE", Some("1"));
cfg.define("HAVE_FT_GET_VAR_BLEND_COORDINATES", Some("1"));
cfg.define("HAVE_FT_SET_VAR_BLEND_COORDINATES", Some("1"));
cfg.define("HAVE_FT_DONE_MM_VAR", Some("1"));
cfg.define("HAVE_FT_GET_TRANSFORM", Some("1"));
// Import the include dirs exported from deps/freetype/build.rs
2021-03-25 20:05:34 +03:00
for inc in std::env::var("DEP_FREETYPE_INCLUDE").unwrap().split(';') {
cfg.include(inc);
}
println!(
"cargo:rustc-link-search={}",
std::env::var("DEP_FREETYPE_LIB").unwrap()
);
println!("cargo:rustc-link-lib=freetype");
println!("cargo:rustc-link-lib=png");
println!("cargo:rustc-link-lib=z");
cfg.compile("harfbuzz");
}
fn git_submodule_update() {
let _ = std::process::Command::new("git")
.args(&["submodule", "update", "--init"])
.status();
}
fn main() {
harfbuzz();
let out_dir = env::var("OUT_DIR").unwrap();
println!("cargo:outdir={}", out_dir);
println!("cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=10.9");
}