mirror of
https://github.com/chatmail/core.git
synced 2026-09-22 13:01:21 +03:00
46 lines
1.3 KiB
Nix
46 lines
1.3 KiB
Nix
{ pkgs, nixpkgs, arch2targets, naersk, fenixPkgs, system, rustSrc, version }:
|
|
arch: packageName:
|
|
let
|
|
crossTarget = arch2targets."${arch}";
|
|
pkgsCross = import nixpkgs {
|
|
system = system;
|
|
crossSystem.config = crossTarget;
|
|
};
|
|
rustTarget = pkgsCross.stdenv.hostPlatform.rust.rustcTarget;
|
|
toolchain = fenixPkgs.combine [
|
|
fenixPkgs.stable.rustc
|
|
fenixPkgs.stable.cargo
|
|
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
|
];
|
|
naersk-lib = pkgs.callPackage naersk {
|
|
cargo = toolchain;
|
|
rustc = toolchain;
|
|
};
|
|
targetCc = "${pkgsCross.stdenv.cc}/bin/${pkgsCross.stdenv.cc.targetPrefix}cc";
|
|
in
|
|
naersk-lib.buildPackage {
|
|
pname = packageName;
|
|
cargoBuildOptions = x: x ++ [ "--package" packageName ];
|
|
inherit version;
|
|
strictDeps = true;
|
|
src = rustSrc;
|
|
nativeBuildInputs = [
|
|
pkgs.perl # Needed to build vendored OpenSSL.
|
|
];
|
|
auditable = false; # Avoid cargo-auditable failures.
|
|
doCheck = false; # Disable test as it requires network access.
|
|
|
|
CARGO_TARGET_X86_64_APPLE_DARWIN_RUSTFLAGS = "-Clink-args=-L${pkgsCross.libiconv}/lib";
|
|
CARGO_TARGET_AARCH64_APPLE_DARWIN_RUSTFLAGS = "-Clink-args=-L${pkgsCross.libiconv}/lib";
|
|
|
|
CARGO_BUILD_TARGET = rustTarget;
|
|
TARGET_CC = "${targetCc}";
|
|
CARGO_BUILD_RUSTFLAGS = [
|
|
"-C"
|
|
"linker=${targetCc}"
|
|
];
|
|
|
|
CC = "${targetCc}";
|
|
LD = "${targetCc}";
|
|
}
|