mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 05:25:40 +09:00
feat(desktop): build macOS as a universal binary (#1603)
This commit is contained in:
1 parent
3588090f22
commit
6e4c055ebd
5 files changed
+83
-68
No files matched your search
@@ -3,6 +3,7 @@
|
||||
use crate::common::{
|
||||
CommandSpec, command_succeeds, output_text, remove_file_if_exists, run_command,
|
||||
};
|
||||
use crate::desktop::MACOS_UNIVERSAL_ARCH;
|
||||
use anyhow::{Context, Result, anyhow, bail, ensure};
|
||||
use clap::Args;
|
||||
use sha2::{Digest, Sha256};
|
||||
@@ -358,9 +359,23 @@ fn ensure_pkg_config(requirement: &PkgConfigRequirement) -> Result<()> {
|
||||
fn build_rust_node_addon(addon_root: &Path, addon: &DesktopNativeAddon) -> Result<BuiltNodeAddon> {
|
||||
let platform = current_platform();
|
||||
let arch = electron_arch();
|
||||
let tag = platform_tag(&platform, &arch)?;
|
||||
let target = rust_target_for_platform(&platform, &arch)?;
|
||||
let target_root = cargo_target_root_for_build(addon_root, &platform)?;
|
||||
if platform == "darwin" && arch == MACOS_UNIVERSAL_ARCH {
|
||||
let arm64 = build_rust_node_addon_for_arch(addon_root, addon, &platform, "arm64")?;
|
||||
build_rust_node_addon_for_arch(addon_root, addon, &platform, "x64")?;
|
||||
return Ok(arm64);
|
||||
}
|
||||
build_rust_node_addon_for_arch(addon_root, addon, &platform, &arch)
|
||||
}
|
||||
|
||||
fn build_rust_node_addon_for_arch(
|
||||
addon_root: &Path,
|
||||
addon: &DesktopNativeAddon,
|
||||
platform: &str,
|
||||
arch: &str,
|
||||
) -> Result<BuiltNodeAddon> {
|
||||
let tag = platform_tag(platform, arch)?;
|
||||
let target = rust_target_for_platform(platform, arch)?;
|
||||
let target_root = cargo_target_root_for_build(addon_root, platform)?;
|
||||
let mut args = vec![
|
||||
OsString::from("build"),
|
||||
OsString::from("--release"),
|
||||
@@ -396,10 +411,7 @@ fn build_rust_node_addon(addon_root: &Path, addon: &DesktopNativeAddon) -> Resul
|
||||
let source = target_root
|
||||
.join(&target)
|
||||
.join("release")
|
||||
.join(cargo_dynamic_library_file_name(
|
||||
addon.crate_name,
|
||||
&platform,
|
||||
)?);
|
||||
.join(cargo_dynamic_library_file_name(addon.crate_name, platform)?);
|
||||
let out_file = addon_root.join(format!("{}.{}.node", addon.node_file_stem, tag));
|
||||
ensure!(
|
||||
source.exists(),
|
||||
@@ -418,8 +430,8 @@ fn build_rust_node_addon(addon_root: &Path, addon: &DesktopNativeAddon) -> Resul
|
||||
"expected {} to exist after copy",
|
||||
out_file.display()
|
||||
);
|
||||
sign_macos_node_addon(&out_file, &platform)?;
|
||||
assert_no_redistributable_runtime_imports(&out_file, &platform)?;
|
||||
sign_macos_node_addon(&out_file, platform)?;
|
||||
assert_no_redistributable_runtime_imports(&out_file, platform)?;
|
||||
Ok(BuiltNodeAddon {
|
||||
out_file,
|
||||
source,
|
||||
|
||||
Reference in new issue
Block a user