mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 05:29:10 +02:00
35 lines
1.5 KiB
Rust
35 lines
1.5 KiB
Rust
// This build script is only used for `make zjit-test` for building
|
|
// the test binary; ruby builds don't use this.
|
|
fn main() {
|
|
use std::env;
|
|
|
|
// option_env! automatically registers a rerun-if-env-changed
|
|
if let Some(ruby_build_dir) = option_env!("RUBY_BUILD_DIR") {
|
|
// Link against libminiruby
|
|
println!("cargo:rustc-link-search=native={ruby_build_dir}");
|
|
println!("cargo:rustc-link-lib=static:-bundle=miniruby");
|
|
|
|
// System libraries that libminiruby needs. Has to be
|
|
// ordered after -lminiruby above.
|
|
let link_flags = env::var("RUBY_LD_FLAGS").unwrap();
|
|
|
|
let mut split_iter = link_flags.split(" ");
|
|
while let Some(token) = split_iter.next() {
|
|
if token == "-framework" {
|
|
if let Some(framework) = split_iter.next() {
|
|
println!("cargo:rustc-link-lib=framework={framework}");
|
|
}
|
|
} else if let Some(lib_name) = token.strip_prefix("-l") {
|
|
println!("cargo:rustc-link-lib={lib_name}");
|
|
}
|
|
}
|
|
|
|
// When doing a combo build, there is a copy of ZJIT symbols in libruby.a
|
|
// and Cargo builds another copy for the test binary. Tell the linker to
|
|
// not complaint about duplicate symbols. For some reason, darwin doesn't
|
|
// suffer the same issue.
|
|
if env::var("TARGET").unwrap().contains("linux") {
|
|
println!("cargo:rustc-link-arg=-Wl,--allow-multiple-definition");
|
|
}
|
|
}
|
|
}
|