diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-04-05 17:00:59 +0300 |
|---|---|---|
| committer | Can Celik <ogulcancelik@gmail.com> | 2026-04-05 17:00:59 +0300 |
| commit | 8fd1bc56cec7a8a45198518184ae80521e969e32 (patch) | |
| tree | 7fdc422ba695c6f0b087364404d8f2e9d0bfa150 /build.rs | |
| parent | b2e6929aa8199574565fd4adf1e631c68d479e6c (diff) | |
ci: build and cache vendored libghostty-vt in release workflow
Diffstat (limited to 'build.rs')
| -rw-r--r-- | build.rs | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -2,6 +2,18 @@ use std::env; use std::path::PathBuf; use std::process::Command; +fn zig_target(target: &str) -> &str { + match target { + "x86_64-unknown-linux-gnu" => "x86_64-linux-gnu", + "aarch64-unknown-linux-gnu" => "aarch64-linux-gnu", + "x86_64-unknown-linux-musl" => "x86_64-linux-musl", + "aarch64-unknown-linux-musl" => "aarch64-linux-musl", + "x86_64-apple-darwin" => "x86_64-macos", + "aarch64-apple-darwin" => "aarch64-macos", + other => panic!("unsupported target for libghostty-vt build: {other}"), + } +} + fn main() { println!("cargo:rerun-if-changed=build.rs"); println!("cargo:rerun-if-changed=vendor/libghostty-vt.vendor.json"); @@ -13,11 +25,14 @@ fn main() { 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 target = env::var("TARGET").expect("TARGET"); + let zig_target = zig_target(&target); let status = Command::new("zig") .arg("build") .arg("-Demit-lib-vt") .arg(format!("-Doptimize={optimize}")) + .arg(format!("-Dtarget={zig_target}")) .current_dir(&vendored_dir) .status() .expect("failed to execute zig build for vendored libghostty-vt"); @@ -28,12 +43,10 @@ fn main() { 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"); + println!("cargo:rustc-link-lib=static=ghostty-vt"); if target.contains("linux") { - println!("cargo:rustc-link-arg=-Wl,-rpath,{}", lib_dir.display()); + println!("cargo:rustc-link-lib=dylib=stdc++"); } else if target.contains("apple-darwin") { - println!("cargo:rustc-link-arg=-Wl,-rpath,{}", lib_dir.display()); + println!("cargo:rustc-link-lib=dylib=c++"); } } |
