aboutsummaryrefslogtreecommitdiff
path: root/build.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /build.rs
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'build.rs')
-rw-r--r--build.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/build.rs b/build.rs
new file mode 100644
index 00000000..faab7f06
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,43 @@
+use std::env;
+use std::path::PathBuf;
+use std::process::Command;
+
+fn main() {
+ println!("cargo:rerun-if-changed=build.rs");
+ println!("cargo:rerun-if-changed=vendor/libghostty-vt.vendor.json");
+ println!("cargo:rerun-if-changed=vendor/libghostty-vt/build.zig");
+ 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");
+
+ if env::var_os("CARGO_FEATURE_GHOSTTY_VT").is_none() {
+ return;
+ }
+
+ 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 status = Command::new("zig")
+ .arg("build")
+ .arg("-Demit-lib-vt")
+ .arg(format!("-Doptimize={optimize}"))
+ .current_dir(&vendored_dir)
+ .status()
+ .expect("failed to execute zig build for vendored libghostty-vt");
+ assert!(
+ status.success(),
+ "zig build for vendored libghostty-vt failed: {status}"
+ );
+
+ let lib_dir = vendored_dir.join("zig-out/lib");
+ println!("cargo:rustc-link-search=native={}", lib_dir.display());
+ println!("cargo:rustc-link-lib=dylib=ghostty-vt");
+
+ let target = env::var("TARGET").expect("TARGET");
+ if target.contains("linux") {
+ println!("cargo:rustc-link-arg=-Wl,-rpath,{}", lib_dir.display());
+ } else if target.contains("apple-darwin") {
+ println!("cargo:rustc-link-arg=-Wl,-rpath,{}", lib_dir.display());
+ }
+}