aboutsummaryrefslogtreecommitdiff
path: root/build.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-06 00:50:41 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-06 00:50:41 +0300
commitdbbe1f66ba02ecbceac8cad8d79a3ae664a8159a (patch)
treedc8c19b41f0ea4386d840c35ae23da9f7e34d5f5 /build.rs
parentc113f5713fc759c128a4dc07149140956362cece (diff)
build: add libghostty simd toggle for ci
Diffstat (limited to 'build.rs')
-rw-r--r--build.rs21
1 files changed, 19 insertions, 2 deletions
diff --git a/build.rs b/build.rs
index da921cfc..dc4031c5 100644
--- a/build.rs
+++ b/build.rs
@@ -15,6 +15,18 @@ fn zig_target(target: &str) -> &str {
}
}
+fn env_bool(name: &str) -> Option<bool> {
+ match env::var(name) {
+ Ok(value) => match value.to_ascii_lowercase().as_str() {
+ "1" | "true" | "yes" | "on" => Some(true),
+ "0" | "false" | "no" | "off" => Some(false),
+ other => panic!("invalid boolean value for {name}: {other}"),
+ },
+ Err(env::VarError::NotPresent) => None,
+ Err(err) => panic!("failed to read {name}: {err}"),
+ }
+}
+
fn main() {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=vendor/libghostty-vt.vendor.json");
@@ -22,10 +34,12 @@ fn main() {
println!("cargo:rerun-if-changed=vendor/libghostty-vt/build.zig.zon");
println!("cargo:rerun-if-changed=vendor/libghostty-vt/VERSION");
println!("cargo:rerun-if-env-changed=LIBGHOSTTY_VT_OPTIMIZE");
+ println!("cargo:rerun-if-env-changed=LIBGHOSTTY_VT_SIMD");
let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR"));
let vendored_dir = manifest_dir.join("vendor/libghostty-vt");
let optimize = env::var("LIBGHOSTTY_VT_OPTIMIZE").unwrap_or_else(|_| "ReleaseFast".into());
+ let simd = env_bool("LIBGHOSTTY_VT_SIMD").unwrap_or(true);
let target = env::var("TARGET").expect("TARGET");
let zig_target = zig_target(&target);
let version_string = fs::read_to_string(vendored_dir.join("VERSION"))
@@ -37,6 +51,7 @@ fn main() {
.arg("build")
.arg("-Demit-lib-vt")
.arg(format!("-Doptimize={optimize}"))
+ .arg(format!("-Dsimd={simd}"))
.arg(format!("-Dtarget={zig_target}"))
.arg(format!("-Dversion-string={version_string}"))
.current_dir(&vendored_dir)
@@ -52,10 +67,12 @@ fn main() {
if target.contains("apple-darwin") {
let static_lib = lib_dir.join("libghostty-vt.a");
println!("cargo:rustc-link-arg={}", static_lib.display());
- println!("cargo:rustc-link-lib=dylib=c++");
+ if simd {
+ println!("cargo:rustc-link-lib=dylib=c++");
+ }
} else {
println!("cargo:rustc-link-lib=static=ghostty-vt");
- if target.contains("linux") {
+ if target.contains("linux") && simd {
println!("cargo:rustc-link-lib=dylib=stdc++");
}
}