Skip to content

Commit d5595ce

Browse files
authored
crosscompiler (#21)
1 parent 1c45302 commit d5595ce

1 file changed

Lines changed: 44 additions & 2 deletions

File tree

flake.nix

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,34 @@
8787
"rust-analyzer"
8888
"llvm-tools"
8989
];
90+
91+
devToolchain =
92+
if pkgs.stdenv.isLinux
93+
then
94+
fenixPkgs.combine [
95+
fenixPkgs.stable.cargo
96+
fenixPkgs.stable.clippy
97+
fenixPkgs.stable.rustc
98+
fenixPkgs.stable.rustfmt
99+
fenixPkgs.stable.rust-src
100+
fenixPkgs.stable.rust-analyzer
101+
fenixPkgs.stable.llvm-tools
102+
fenixPkgs.targets."x86_64-unknown-linux-musl".stable.rust-std
103+
fenixPkgs.targets."aarch64-unknown-linux-musl".stable.rust-std
104+
]
105+
else if pkgs.stdenv.isDarwin && pkgs.stdenv.isAarch64
106+
then
107+
fenixPkgs.combine [
108+
fenixPkgs.stable.cargo
109+
fenixPkgs.stable.clippy
110+
fenixPkgs.stable.rustc
111+
fenixPkgs.stable.rustfmt
112+
fenixPkgs.stable.rust-src
113+
fenixPkgs.stable.rust-analyzer
114+
fenixPkgs.stable.llvm-tools
115+
fenixPkgs.targets."x86_64-apple-darwin".stable.rust-std
116+
]
117+
else toolchain;
90118
in {
91119
packages = {
92120
inherit pkg cargoArtifacts;
@@ -128,7 +156,7 @@
128156
devShells.default = pkgs.mkShell {
129157
packages =
130158
[
131-
toolchain
159+
devToolchain
132160
pkgs.cargo-nextest
133161
pkgs.cargo-llvm-cov
134162
pkgs.cargo-deny
@@ -142,6 +170,8 @@
142170
++ pkgs.lib.optionals pkgs.stdenv.isLinux [
143171
pkgs.pkg-config
144172
pkgs.openssl
173+
pkgs.pkgsCross.musl64.stdenv.cc
174+
pkgs.pkgsCross.aarch64-multiplatform-musl.stdenv.cc
145175
]
146176
++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
147177
pkgs.apple-sdk_26
@@ -150,11 +180,23 @@
150180
env =
151181
{
152182
RUST_BACKTRACE = "1";
153-
RUST_SRC_PATH = "${toolchain}/lib/rustlib/src/rust/library";
183+
RUST_SRC_PATH = "${devToolchain}/lib/rustlib/src/rust/library";
154184
ORT_DYLIB_PATH = "${pkgs.onnxruntime}/lib/libonnxruntime${pkgs.stdenv.hostPlatform.extensions.sharedLibrary}";
155185
}
156186
// pkgs.lib.optionalAttrs pkgs.stdenv.isLinux {
157187
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [pkgs.openssl pkgs.stdenv.cc.cc.lib];
188+
CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER = "${pkgs.pkgsCross.musl64.stdenv.cc}/bin/${pkgs.pkgsCross.musl64.stdenv.cc.targetPrefix}cc";
189+
CC_x86_64_unknown_linux_musl = "${pkgs.pkgsCross.musl64.stdenv.cc}/bin/${pkgs.pkgsCross.musl64.stdenv.cc.targetPrefix}cc";
190+
CFLAGS_x86_64_unknown_linux_musl = "-U_FORTIFY_SOURCE";
191+
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER = "${pkgs.pkgsCross.aarch64-multiplatform-musl.stdenv.cc}/bin/${pkgs.pkgsCross.aarch64-multiplatform-musl.stdenv.cc.targetPrefix}cc";
192+
CC_aarch64_unknown_linux_musl = "${pkgs.pkgsCross.aarch64-multiplatform-musl.stdenv.cc}/bin/${pkgs.pkgsCross.aarch64-multiplatform-musl.stdenv.cc.targetPrefix}cc";
193+
CFLAGS_aarch64_unknown_linux_musl = "-U_FORTIFY_SOURCE";
194+
X86_64_UNKNOWN_LINUX_MUSL_OPENSSL_STATIC = "1";
195+
X86_64_UNKNOWN_LINUX_MUSL_OPENSSL_LIB_DIR = "${pkgs.pkgsCross.musl64.openssl.out}/lib";
196+
X86_64_UNKNOWN_LINUX_MUSL_OPENSSL_INCLUDE_DIR = "${pkgs.pkgsCross.musl64.openssl.dev}/include";
197+
AARCH64_UNKNOWN_LINUX_MUSL_OPENSSL_STATIC = "1";
198+
AARCH64_UNKNOWN_LINUX_MUSL_OPENSSL_LIB_DIR = "${pkgs.pkgsCross.aarch64-multiplatform-musl.openssl.out}/lib";
199+
AARCH64_UNKNOWN_LINUX_MUSL_OPENSSL_INCLUDE_DIR = "${pkgs.pkgsCross.aarch64-multiplatform-musl.openssl.dev}/include";
158200
};
159201
};
160202
});

0 commit comments

Comments
 (0)