diff --git a/build.rs b/build.rs index 78c4cc3495edb76052cb8b86747ebc192b08b0bd..91234c05be3358e150b1d306592dbab8fa09854a 100644 --- a/build.rs +++ b/build.rs @@ -170,16 +170,15 @@ fn build_http(build_root: &Path) { } fn build_tarantool(build_root: &Path) { - let build_dir = build_root.join("tarantool-sys"); - let build_dir_str = build_dir.display().to_string(); - - let tarantool_prefix = "tarantool-prefix/src/tarantool-build"; + let tarantool_sys = build_root.join("tarantool-sys"); + let tarantool_build = tarantool_sys.join("tarantool-prefix/src/tarantool-build"); - if !build_dir.join(tarantool_prefix).exists() { + if !tarantool_build.exists() { // Build from scratch Command::new("cmake") .args(["-S", "tarantool-sys/static-build"]) - .args(["-B", &build_dir_str]) + .arg("-B") + .arg(&tarantool_sys) .arg(concat!( "-DCMAKE_TARANTOOL_ARGS=", "-DCMAKE_BUILD_TYPE=RelWithDebInfo;", @@ -188,7 +187,8 @@ fn build_tarantool(build_root: &Path) { )) .run(); Command::new("cmake") - .args(["--build", &build_dir_str]) + .arg("--build") + .arg(&tarantool_sys) .arg("-j") .run(); } else { @@ -196,15 +196,15 @@ fn build_tarantool(build_root: &Path) { // module, which doesn't rebuild subprojects if their contents changed, // therefore we dive into `tarantool-prefix/src/tarantool-build` // directly and try to rebuild it individually. - let build_dir = build_dir.join(tarantool_prefix); - let build_dir_str = build_dir.display().to_string(); Command::new("cmake") - .args(["--build", &build_dir_str]) + .arg("--build") + .arg(&tarantool_build) .arg("-j") .run(); } - let b = build_dir_str; // rename for shortness + let tarantool_sys = tarantool_sys.display(); + let tarantool_build = tarantool_build.display(); // Don't build a shared object in case it's the default for the compiler rustc::link_arg("-no-pie"); @@ -228,20 +228,20 @@ fn build_tarantool(build_root: &Path) { "salad", "tzcode", ] { - rustc::link_search(format!("{b}/{tarantool_prefix}/src/lib/{l}")); + rustc::link_search(format!("{tarantool_build}/src/lib/{l}")); rustc::link_lib_static(l); } - rustc::link_search(format!("{b}/{tarantool_prefix}/src/lib/crypto")); + rustc::link_search(format!("{tarantool_build}/src/lib/crypto")); rustc::link_lib_static("tcrypto"); - rustc::link_search(format!("{b}/{tarantool_prefix}")); - rustc::link_search(format!("{b}/{tarantool_prefix}/src")); - rustc::link_search(format!("{b}/{tarantool_prefix}/src/box")); - rustc::link_search(format!("{b}/{tarantool_prefix}/third_party/luajit/src")); - rustc::link_search(format!("{b}/{tarantool_prefix}/third_party/libyaml")); - rustc::link_search(format!("{b}/{tarantool_prefix}/third_party/c-dt/build")); - rustc::link_search(format!("{b}/{tarantool_prefix}/build/nghttp2/dest/lib")); + rustc::link_search(format!("{tarantool_build}")); + rustc::link_search(format!("{tarantool_build}/src")); + rustc::link_search(format!("{tarantool_build}/src/box")); + rustc::link_search(format!("{tarantool_build}/third_party/luajit/src")); + rustc::link_search(format!("{tarantool_build}/third_party/libyaml")); + rustc::link_search(format!("{tarantool_build}/third_party/c-dt/build")); + rustc::link_search(format!("{tarantool_build}/build/nghttp2/dest/lib")); rustc::link_lib_static("tarantool"); rustc::link_lib_static("ev"); @@ -277,40 +277,40 @@ fn build_tarantool(build_root: &Path) { // These two must be linked as positional arguments, because they define // duplicate symbols which is not allowed (by default) when linking with // via -l... option - let lib_dir = format!("{b}/{tarantool_prefix}/third_party/libunwind/src/.libs"); + let lib_dir = format!("{tarantool_build}/third_party/libunwind/src/.libs"); rustc::link_arg(format!("{lib_dir}/libunwind-x86_64.a")); rustc::link_arg(format!("{lib_dir}/libunwind.a")); } rustc::link_arg("-lc"); - rustc::link_search(format!("{b}/readline-prefix/lib")); + rustc::link_search(format!("{tarantool_sys}/readline-prefix/lib")); rustc::link_lib_static("readline"); - rustc::link_search(format!("{b}/icu-prefix/lib")); + rustc::link_search(format!("{tarantool_sys}/icu-prefix/lib")); rustc::link_lib_static("icudata"); rustc::link_lib_static("icui18n"); rustc::link_lib_static("icuio"); rustc::link_lib_static("icutu"); rustc::link_lib_static("icuuc"); - rustc::link_search(format!("{b}/zlib-prefix/lib")); + rustc::link_search(format!("{tarantool_sys}/zlib-prefix/lib")); rustc::link_lib_static("z"); - rustc::link_search(format!("{b}/{tarantool_prefix}/build/curl/dest/lib")); + rustc::link_search(format!("{tarantool_build}/build/curl/dest/lib")); rustc::link_lib_static("curl"); - rustc::link_search(format!("{b}/{tarantool_prefix}/build/ares/dest/lib")); + rustc::link_search(format!("{tarantool_build}/build/ares/dest/lib")); rustc::link_lib_static("cares"); - rustc::link_search(format!("{b}/openssl-prefix/lib")); + rustc::link_search(format!("{tarantool_sys}/openssl-prefix/lib")); rustc::link_lib_static("ssl"); rustc::link_lib_static("crypto"); - rustc::link_search(format!("{b}/ncurses-prefix/lib")); + rustc::link_search(format!("{tarantool_sys}/ncurses-prefix/lib")); rustc::link_lib_static("tinfo"); - rustc::link_search(format!("{b}/iconv-prefix/lib")); + rustc::link_search(format!("{tarantool_sys}/iconv-prefix/lib")); if cfg!(target_os = "macos") { // -lc++ instead of -lstdc++ on macos rustc::link_lib_dynamic("c++");