mirror of
https://github.com/ankitects/anki.git
synced 2025-09-20 23:12:21 -04:00
53 lines
2 KiB
Rust
53 lines
2 KiB
Rust
// Copyright: Ankitects Pty Ltd and contributors
|
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
use std::process::Command;
|
|
|
|
use anki_process::CommandExt;
|
|
use camino::Utf8Path;
|
|
use camino::Utf8PathBuf;
|
|
|
|
use super::artifacts::macos_deployment_target;
|
|
use crate::run::run_command;
|
|
|
|
pub fn build_bundle_binary() {
|
|
let mut features = String::from("build-mode-prebuilt-artifacts");
|
|
if cfg!(target_os = "linux") || cfg!(target_os = "macos") {
|
|
features.push_str(",global-allocator-jemalloc,allocator-jemalloc");
|
|
}
|
|
|
|
let mut command = Command::new("cargo");
|
|
command
|
|
.args([
|
|
"build",
|
|
"--manifest-path=qt/bundle/Cargo.toml",
|
|
"--target-dir=out/bundle/rust",
|
|
"--release",
|
|
"--no-default-features",
|
|
])
|
|
.arg(format!("--features={features}"))
|
|
.env(
|
|
"DEFAULT_PYTHON_CONFIG_RS",
|
|
// included in main.rs, so relative to qt/bundle/src
|
|
"../../../out/bundle/artifacts/",
|
|
)
|
|
.env(
|
|
"PYO3_CONFIG_FILE",
|
|
Utf8Path::new("out/bundle/artifacts/pyo3-build-config-file.txt")
|
|
.canonicalize_utf8()
|
|
.unwrap(),
|
|
)
|
|
.env("MACOSX_DEPLOYMENT_TARGET", macos_deployment_target())
|
|
.env("SDKROOT", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk")
|
|
.env("CARGO_BUILD_TARGET", env!("TARGET"));
|
|
if env!("TARGET") == "x86_64-apple-darwin" {
|
|
let xcode_path = Command::run_with_output(["xcode-select", "-p"]).unwrap();
|
|
let ld_classic = Utf8PathBuf::from(xcode_path.stdout.trim())
|
|
.join("Toolchains/XcodeDefault.xctoolchain/usr/bin/ld-classic");
|
|
if ld_classic.exists() {
|
|
// work around XCode 15's default linker not supporting macOS 10.15-12.
|
|
command.env("RUSTFLAGS", format!("-Clink-arg=-fuse-ld={ld_classic}"));
|
|
}
|
|
}
|
|
run_command(&mut command);
|
|
}
|