diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-04-04 19:22:04 +0300 |
|---|---|---|
| committer | Can Celik <ogulcancelik@gmail.com> | 2026-04-05 01:23:06 +0300 |
| commit | 41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch) | |
| tree | 3fc91815ca139ef2e0b281bba0abda4ef15175f4 /build.rs | |
| parent | 55c138263e190a1e79d4b997bfb9397306c0ec1f (diff) | |
feat: finish ghostty pane backend integration
Diffstat (limited to 'build.rs')
| -rw-r--r-- | build.rs | 43 |
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()); + } +} |
