buildRustCrate: fix target config environment variables on 32-bit ARM
This commit is contained in:
parent
b3f8642587
commit
f0fdecfbb4
3 changed files with 20 additions and 16 deletions
|
@ -1,4 +1,4 @@
|
|||
{ lib, stdenv, echo_colored, noisily, mkRustcDepArgs, mkRustcFeatureArgs }:
|
||||
{ lib, stdenv, rust, echo_colored, noisily, mkRustcDepArgs, mkRustcFeatureArgs }:
|
||||
{
|
||||
build
|
||||
, buildDependencies
|
||||
|
@ -17,7 +17,6 @@
|
|||
, libName
|
||||
, libPath
|
||||
, release
|
||||
, target_os
|
||||
, verbose
|
||||
, workspace_member }:
|
||||
let version_ = lib.splitString "-" crateVersion;
|
||||
|
@ -124,8 +123,8 @@ in ''
|
|||
export CARGO_PKG_AUTHORS="${authors}"
|
||||
export CARGO_PKG_DESCRIPTION="${crateDescription}"
|
||||
|
||||
export CARGO_CFG_TARGET_ARCH=${stdenv.hostPlatform.parsed.cpu.name}
|
||||
export CARGO_CFG_TARGET_OS=${target_os}
|
||||
export CARGO_CFG_TARGET_ARCH=${rust.toTargetArch stdenv.hostPlatform}
|
||||
export CARGO_CFG_TARGET_OS=${rust.toTargetOs stdenv.hostPlatform}
|
||||
export CARGO_CFG_TARGET_FAMILY="unix"
|
||||
export CARGO_CFG_UNIX=1
|
||||
export CARGO_CFG_TARGET_ENV="gnu"
|
||||
|
@ -136,8 +135,8 @@ in ''
|
|||
export CARGO_MANIFEST_DIR=$(pwd)
|
||||
export DEBUG="${toString (!release)}"
|
||||
export OPT_LEVEL="${toString optLevel}"
|
||||
export TARGET="${stdenv.hostPlatform.config}"
|
||||
export HOST="${stdenv.hostPlatform.config}"
|
||||
export TARGET="${rust.toRustTarget stdenv.hostPlatform}"
|
||||
export HOST="${rust.toRustTarget stdenv.buildPlatform}"
|
||||
export PROFILE=${if release then "release" else "debug"}
|
||||
export OUT_DIR=$(pwd)/target/build/${crateName}.out
|
||||
export CARGO_PKG_VERSION_MAJOR=${lib.elemAt version 0}
|
||||
|
|
|
@ -8,12 +8,6 @@
|
|||
, cargo, jq }:
|
||||
|
||||
let
|
||||
# This doesn't appear to be officially documented anywhere yet.
|
||||
# See https://github.com/rust-lang-nursery/rust-forge/issues/101.
|
||||
target_os = if stdenv.hostPlatform.isDarwin
|
||||
then "macos"
|
||||
else stdenv.hostPlatform.parsed.kernel.name;
|
||||
|
||||
# Create rustc arguments to link against the given list of dependencies
|
||||
# and renames.
|
||||
#
|
||||
|
@ -52,7 +46,7 @@ let
|
|||
inherit (import ./log.nix { inherit lib; }) noisily echo_colored;
|
||||
|
||||
configureCrate = import ./configure-crate.nix {
|
||||
inherit lib stdenv echo_colored noisily mkRustcDepArgs mkRustcFeatureArgs;
|
||||
inherit lib stdenv rust echo_colored noisily mkRustcDepArgs mkRustcFeatureArgs;
|
||||
};
|
||||
|
||||
buildCrate = import ./build-crate.nix {
|
||||
|
@ -284,7 +278,7 @@ stdenv.mkDerivation (rec {
|
|||
inherit crateName buildDependencies completeDeps completeBuildDeps crateDescription
|
||||
crateFeatures crateRenames libName build workspace_member release libPath crateVersion
|
||||
extraLinkFlags extraRustcOpts
|
||||
crateAuthors crateHomepage verbose colors target_os;
|
||||
crateAuthors crateHomepage verbose colors;
|
||||
};
|
||||
buildPhase = buildCrate {
|
||||
inherit crateName dependencies
|
||||
|
|
|
@ -13,12 +13,23 @@
|
|||
, llvmPackages_5
|
||||
, pkgsBuildTarget, pkgsBuildBuild
|
||||
}: rec {
|
||||
# https://doc.rust-lang.org/reference/conditional-compilation.html#target_arch
|
||||
toTargetArch = platform:
|
||||
if platform.isAarch32 then "arm"
|
||||
else platform.parsed.cpu.name;
|
||||
|
||||
# https://doc.rust-lang.org/reference/conditional-compilation.html#target_os
|
||||
toTargetOs = platform:
|
||||
if platform.isDarwin then "macos"
|
||||
else platform.parsed.kernel.name;
|
||||
|
||||
# Target triple. Rust has slightly different naming conventions than we use.
|
||||
toRustTarget = platform: with platform.parsed; let
|
||||
cpu_ = {
|
||||
cpu_ = platform.rustc.arch or {
|
||||
"armv7a" = "armv7";
|
||||
"armv7l" = "armv7";
|
||||
"armv6l" = "arm";
|
||||
}.${cpu.name} or platform.rustc.arch or cpu.name;
|
||||
}.${cpu.name} or cpu.name;
|
||||
in platform.rustc.config
|
||||
or "${cpu_}-${vendor.name}-${kernel.name}${lib.optionalString (abi.name != "unknown") "-${abi.name}"}";
|
||||
|
||||
|
|
Loading…
Reference in a new issue