ceremonyclient/crates/ferret/build.rs
Cassandra Heart 2a3a9bba47
cleanup
2025-03-23 22:17:18 -05:00

88 lines
3.0 KiB
Rust

// build.rs
use cc;
use std::env;
use std::path::PathBuf;
use std::process::Command;
fn main() {
let target = env::var("TARGET").expect("cargo should have set this");
if target == "aarch64-apple-darwin" {
cc::Build::new()
.cpp(true)
.flag_if_supported("-std=c++17")
.file("emp_bridge.cpp")
.flag("-I/usr/local/include/emp-tool/")
.flag("-I/usr/local/include/emp-ot/")
.flag("-I/opt/homebrew/Cellar/openssl@3/3.4.1/include")
.flag("-L/usr/local/lib/emp-tool/")
.flag("-L/opt/homebrew/Cellar/openssl@3/3.4.1/lib")
.warnings(false)
.compile("emp_bridge");
println!("cargo:rustc-link-search=native=/usr/local/lib");
println!("cargo:rustc-link-search=native=/opt/homebrew/lib");
println!("cargo:rustc-link-lib=static=emp-tool");
println!("cargo:rustc-link-lib=dylib=c++");
println!("cargo:rustc-link-lib=dylib=crypto");
println!("cargo:rustc-link-lib=dylib=ssl");
println!("cargo:rerun-if-changed=emp_bridge.cpp");
println!("cargo:rerun-if-changed=emp_bridge.h");
} else if target == "aarch64-unknown-linux-gnu" {
cc::Build::new()
.cpp(true)
.flag_if_supported("-std=c++17")
.flag_if_supported("-march=armv8-a+crypto")
.file("emp_bridge.cpp")
.flag("-I/usr/local/include/emp-tool/")
.flag("-I/usr/local/include/emp-ot/")
.flag("-I/usr/include/openssl/")
.flag("-L/usr/local/lib/")
.flag("-L/usr/local/lib/aarch64-linux-gnu/")
.flag("-L/usr/lib/aarch64-linux-gnu/openssl/")
.warnings(false)
.compile("emp_bridge");
println!("cargo:rustc-link-search=native=/usr/local/lib/aarch64-linux-gnu");
println!("cargo:rustc-link-search=native=/usr/local/lib/");
println!("cargo:rustc-link-lib=static=emp-tool");
println!("cargo:rustc-link-lib=dylib=stdc++");
println!("cargo:rustc-link-lib=dylib=crypto");
println!("cargo:rustc-link-lib=dylib=ssl");
println!("cargo:rerun-if-changed=emp_bridge.cpp");
println!("cargo:rerun-if-changed=emp_bridge.h");
} else if target == "x86_64-unknown-linux-gnu" {
cc::Build::new()
.cpp(true)
.flag_if_supported("-std=c++17")
.flag_if_supported("-maes")
.flag_if_supported("-msse4.1")
.file("emp_bridge.cpp")
.flag("-I/usr/local/include/emp-tool/")
.flag("-I/usr/local/include/emp-ot/")
.flag("-I/usr/include/openssl/")
.flag("-L/usr/local/lib/")
.flag("-L/usr/lib/openssl/")
.warnings(false)
.compile("emp_bridge");
println!("cargo:rustc-link-search=native=/usr/local/lib");
println!("cargo:rustc-link-lib=static=emp-tool");
println!("cargo:rustc-link-lib=dylib=stdc++");
println!("cargo:rustc-link-lib=dylib=crypto");
println!("cargo:rustc-link-lib=dylib=ssl");
println!("cargo:rerun-if-changed=emp_bridge.cpp");
println!("cargo:rerun-if-changed=emp_bridge.h");
} else {
panic!("unsupported target {target}");
}
uniffi::generate_scaffolding("src/lib.udl").expect("uniffi generation failed");
}