This commit is contained in:
parent
1127239215
commit
e819e1a631
2 changed files with 43 additions and 14 deletions
|
@ -1,3 +1,3 @@
|
||||||
[target.x86_64-unknown-linux-gnu]
|
#[target.x86_64-unknown-linux-gnu]
|
||||||
linker = "clang"
|
#linker = "clang"
|
||||||
rustflags = ["-C", "link-arg=-fuse-ld=mold"]
|
#rustflags = ["-C", "link-arg=-fuse-ld=mold"]
|
||||||
|
|
|
@ -15,18 +15,34 @@
|
||||||
let
|
let
|
||||||
log = v: builtins.trace v v;
|
log = v: builtins.trace v v;
|
||||||
|
|
||||||
pkgs =
|
targetEnvMap = {
|
||||||
|
"armv6l-unknown-linux-musleabihf" = "ARMV6L_UNKNOWN_LINUX_MUSLEABIHF";
|
||||||
|
"aarch64-unknown-linux-musl" = "AARCH64_UNKNOWN_LINUX_MUSL";
|
||||||
|
"i686-unknown-linux-musl" = "I686_UNKNOWN_LINUX_MUSL";
|
||||||
|
"x86_64-unknown-linux-musl" = "X86_64_UNKNOWN_LINUX_MUSL";
|
||||||
|
};
|
||||||
|
|
||||||
|
pkgs = if target != null then
|
||||||
|
import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
crossSystem = {
|
||||||
|
config = target;
|
||||||
|
isStatic = true;
|
||||||
|
};
|
||||||
|
overlays = [ (import rust-overlay) ];
|
||||||
|
}
|
||||||
|
else
|
||||||
import nixpkgs {
|
import nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
overlays = [ (import rust-overlay) ];
|
overlays = [ (import rust-overlay) ];
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit (pkgs) lib;
|
inherit (pkgs) lib stdenv;
|
||||||
|
|
||||||
toolchain = pkgs.symlinkJoin {
|
toolchain = (p: p.symlinkJoin {
|
||||||
name = "garage-rust-toolchain-1.78";
|
name = "garage-rust-toolchain-1.78";
|
||||||
paths = [
|
paths = [
|
||||||
(pkgs.rust-bin.stable."1.78.0".default.override {
|
(p.rust-bin.stable."1.78.0".default.override {
|
||||||
targets = [
|
targets = [
|
||||||
"arm-unknown-linux-musleabihf"
|
"arm-unknown-linux-musleabihf"
|
||||||
"aarch64-unknown-linux-musl"
|
"aarch64-unknown-linux-musl"
|
||||||
|
@ -38,11 +54,12 @@ let
|
||||||
"rustfmt"
|
"rustfmt"
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
pkgs.clang
|
p.protobuf
|
||||||
pkgs.mold
|
] ++ lib.optionals (target == null) [
|
||||||
pkgs.protobuf
|
# p.clang
|
||||||
|
# p.mold
|
||||||
];
|
];
|
||||||
};
|
});
|
||||||
|
|
||||||
craneLib = (crane.mkLib pkgs).overrideToolchain toolchain;
|
craneLib = (crane.mkLib pkgs).overrideToolchain toolchain;
|
||||||
|
|
||||||
|
@ -100,7 +117,7 @@ let
|
||||||
target;
|
target;
|
||||||
|
|
||||||
codegenOpts = if target != null then codegenOptsMap.${target} else [
|
codegenOpts = if target != null then codegenOptsMap.${target} else [
|
||||||
"link-args=-fuse-ld=mold"
|
# "link-args=-fuse-ld=mold"
|
||||||
];
|
];
|
||||||
|
|
||||||
commonArgs =
|
commonArgs =
|
||||||
|
@ -112,6 +129,11 @@ let
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
cargoExtraArgs = "--features ${featuresStr}";
|
cargoExtraArgs = "--features ${featuresStr}";
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
pkg-config
|
||||||
|
stdenv.cc
|
||||||
|
];
|
||||||
|
|
||||||
GIT_VERSION = git_version;
|
GIT_VERSION = git_version;
|
||||||
|
|
||||||
CARGO_PROFILE = if release then "release" else "dev";
|
CARGO_PROFILE = if release then "release" else "dev";
|
||||||
|
@ -123,10 +145,17 @@ let
|
||||||
//
|
//
|
||||||
(if rustTarget != null then {
|
(if rustTarget != null then {
|
||||||
CARGO_BUILD_TARGET = rustTarget;
|
CARGO_BUILD_TARGET = rustTarget;
|
||||||
} else {});
|
|
||||||
|
"CARGO_TARGET_${targetEnvMap.${target}}_LINKER" = "${stdenv.cc.targetPrefix}cc";
|
||||||
|
|
||||||
|
HOST_CC = "${stdenv.cc.nativePrefix}cc";
|
||||||
|
TARGET_CC = "${stdenv.cc.targetPrefix}cc";
|
||||||
|
} else {
|
||||||
|
# CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER = "clang";
|
||||||
|
});
|
||||||
|
|
||||||
in rec {
|
in rec {
|
||||||
inherit toolchain;
|
toolchain = toolchain pkgs;
|
||||||
|
|
||||||
devShell = pkgs.mkShell {
|
devShell = pkgs.mkShell {
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|
Loading…
Add table
Reference in a new issue