From 969bb6917eba04229dc00269940960d6d616176a Mon Sep 17 00:00:00 2001 From: SilentVoid13 <51264226+SilentVoid13@users.noreply.github.com> Date: Sun, 30 Jun 2024 13:24:12 +0200 Subject: [PATCH 1/6] feat: adding pkgs support for cross-compilation --- lib/craneMultiBuild.nix | 42 +++++++++++++++++++-------------- lib/mkFenixToolchain.nix | 3 ++- lib/mkStdToolchains.nix | 51 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 75 insertions(+), 21 deletions(-) diff --git a/lib/craneMultiBuild.nix b/lib/craneMultiBuild.nix index 7f0a55b..03f059c 100644 --- a/lib/craneMultiBuild.nix +++ b/lib/craneMultiBuild.nix @@ -1,19 +1,25 @@ -{ mkFenixToolchain -, craneLib -, mapWithToolchains -, mkTarget -, mkStdToolchains -, lib -}: -let craneLib' = craneLib; in -{ toolchains ? mkStdToolchains { } -, profiles ? [ "dev" "ci" "release" ] -, craneLib ? craneLib' -}: outputsFn: -let - profilesFn = craneLib: craneLib.mapWithProfiles outputsFn profiles; +{ + mkFenixToolchain, + craneLib, + mapWithToolchains, + mkTarget, + mkStdToolchains, + lib, +}: let + craneLib' = craneLib; in -(mapWithToolchains outputsFn { default = toolchains.default; }).default // -(mapWithToolchains profilesFn { default = toolchains.default; }).default // -(mapWithToolchains profilesFn toolchains) - + { + buildInputs ? pkgs: [], + nativeBuildInputs ? pkgs: [], + profiles ? ["dev" "ci" "release"], + craneLib ? craneLib', + toolchains ? null, + }: let + argToolchains = if toolchains != null then toolchains else (mkStdToolchains {inherit buildInputs nativeBuildInputs;}); + in + outputsFn: let + profilesFn = craneLib: craneLib.mapWithProfiles outputsFn profiles; + in + (mapWithToolchains outputsFn {default = argToolchains.default;}).default + // (mapWithToolchains profilesFn {default = argToolchains.default;}).default + // (mapWithToolchains profilesFn argToolchains) diff --git a/lib/mkFenixToolchain.nix b/lib/mkFenixToolchain.nix index aae7818..f1f073d 100644 --- a/lib/mkFenixToolchain.nix +++ b/lib/mkFenixToolchain.nix @@ -30,6 +30,7 @@ in , clang-unwrapped ? defaultClangUnwrapped , stdenv ? defaultStdenv , isLintShell ? false +, craneArgs ? { } }: let mergeTargets = targetFn: prev: @@ -71,7 +72,7 @@ let } else { }; # this can't be a method on `craneLib` because it basically constructs the `craneLib` - craneLib = (enhanceCrane ((crane.mkLib pkgs).overrideToolchain toolchain)).overrideArgs ((mergeArgs commonArgs buildArgs) // { inherit stdenv; }); + craneLib = (enhanceCrane ((crane.mkLib pkgs).overrideToolchain toolchain)).overrideArgs ((mergeArgs ((mergeArgs commonArgs buildArgs) // { inherit stdenv; }) craneArgs)); in { inherit toolchain; diff --git a/lib/mkStdToolchains.nix b/lib/mkStdToolchains.nix index 0c29c58..9c15f83 100644 --- a/lib/mkStdToolchains.nix +++ b/lib/mkStdToolchains.nix @@ -14,16 +14,23 @@ , libclang ? defaultLibClang , clang-unwrapped ? defaultClangUnwrapped , stdenv ? defaultStdenv +, buildInputs ? pkgs: [] +, nativeBuildInputs ? pkgs: [] , ... -}@args: +}@oldArgs: let - stdTargets = mkStdTargets { }; +stdTargets = mkStdTargets { }; +args = removeAttrs oldArgs [ "buildInputs" "nativeBuildInputs" ]; in { default = mkFenixToolchain (args // { targets = { default = stdTargets.default; }; + craneArgs = { + buildInputs = buildInputs pkgs; + nativeBuildInputs = nativeBuildInputs pkgs; + }; }); nightly = mkFenixToolchain (args // { @@ -31,6 +38,10 @@ in default = stdTargets.default; }; channel = "complete"; + craneArgs = { + buildInputs = buildInputs pkgs; + nativeBuildInputs = nativeBuildInputs pkgs; + }; }); } // lib.optionalAttrs pkgs.stdenv.isLinux { @@ -39,24 +50,40 @@ in targets = { default = stdTargets.aarch64-linux; }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.aarch64-multiplatform; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-multiplatform; + }; }); x86_64-linux = mkFenixToolchain (args // { defaultTarget = "x86_64-unknown-linux-gnu"; targets = { x86_64-linux = stdTargets.x86_64-linux; }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.gnu64; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.gnu64; + }; }); i686-linux = mkFenixToolchain (args // { defaultTarget = "i686-unknown-linux-gnu"; targets = { i686-linux = stdTargets.i686-linux; }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.gnu32; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.gnu32; + }; }); riscv64-linux = mkFenixToolchain (args // { defaultTarget = "riscv64gc-unknown-linux-gnu"; targets = { riscv64-linux = stdTargets.riscv64-linux; }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.riscv64; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.riscv64; + }; }); } // { @@ -65,6 +92,10 @@ in targets = { wasm32-unknown = stdTargets.wasm32-unknown; }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.wasi32; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.wasi32; + }; }); } // lib.optionalAttrs ((args ? androidSdk) || (builtins.hasAttr system android-nixpkgs.sdk)) { @@ -74,24 +105,36 @@ in targets = { aarch64-android = stdTargets.aarch64-android; }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.aarch64-android-prebuilt; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-android-prebuilt; + }; }; x86_64-android = mkFenixToolchain { defaultTarget = "x86_64-linux-android"; targets = { x86_64-android = stdTargets.x86_64-android; }; + # no crossPkgs available + craneArgs = {}; }; i686-android = mkFenixToolchain { defaultTarget = "i686-linux-android"; targets = { i686-android = stdTargets.i686-android; }; + # no crossPkgs available + craneArgs = {}; }; armv7-android = mkFenixToolchain { defaultTarget = "armv7-linux-androideabi"; targets = { armv7-android = stdTargets.armv7-android; }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.armv7-android-prebuilt; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.armv7-android-prebuilt; + }; }; } // lib.optionalAttrs (pkgs.stdenv.buildPlatform.config == "aarch64-apple-darwin") { @@ -100,6 +143,8 @@ in targets = { aarch64-darwin = stdTargets.aarch64-darwin; }; + # cross compilation is broken for apple-darwin + craneArgs = {}; }); } // lib.optionalAttrs (pkgs.stdenv.buildPlatform.config == "x86_64-apple-darwin") { @@ -108,5 +153,7 @@ in targets = { x86_64-darwin = stdTargets.x86_64-darwin; }; + # cross compilation is broken for apple-darwin + craneArgs = {}; }); } From 3f19715aa0dbd4248f69037cff981c485432f424 Mon Sep 17 00:00:00 2001 From: SilentVoid13 <51264226+SilentVoid13@users.noreply.github.com> Date: Sun, 30 Jun 2024 16:27:00 +0200 Subject: [PATCH 2/6] feat: adding musl variant for linux targets --- lib/mkStdTargets.nix | 51 +++++++++++++++++++++++++++++++++++++++++ lib/mkStdToolchains.nix | 30 ++++++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/lib/mkStdTargets.nix b/lib/mkStdTargets.nix index e8677e7..e353a09 100644 --- a/lib/mkStdTargets.nix +++ b/lib/mkStdTargets.nix @@ -34,6 +34,23 @@ }; }; + aarch64-linux-musl = mkClangTarget { + target = "aarch64-unknown-linux-musl"; + clang = pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang; + binPrefix = "aarch64-unknown-linux-musl-"; + llvmConfigPkg = targetLlvmConfigWrapper { + clangPkg = pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped; + libClangPkg = pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib; + }; + + args = { + CFLAGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CPPFLAGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CXXFLAGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + }; + }; + x86_64-linux = mkClangTarget { target = "x86_64-unknown-linux-gnu"; clang = pkgs.pkgsCross.gnu64.buildPackages.llvmPackages.clang; @@ -53,6 +70,23 @@ }; }; + x86_64-linux-musl = mkClangTarget { + target = "x86_64-unknown-linux-musl"; + clang = pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang; + binPrefix = "x86_64-unknown-linux-musl-"; + llvmConfigPkg = targetLlvmConfigWrapper { + clangPkg = pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped; + libClangPkg = pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib; + }; + + args = { + CFLAGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CPPFLAGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CXXFLAGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + }; + }; + i686-linux = mkClangTarget { target = "i686-unknown-linux-gnu"; clang = pkgs.pkgsCross.gnu32.buildPackages.llvmPackages.clang; @@ -70,6 +104,23 @@ }; }; + i686-linux-musl = mkClangTarget { + target = "i686-unknown-linux-musl"; + clang = pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang; + binPrefix = "i686-unknown-linux-musl-"; + llvmConfigPkg = targetLlvmConfigWrapper { + clangPkg = pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped; + libClangPkg = pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib; + }; + + args = { + CFLAGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CPPFLAGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CXXFLAGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + BINDGEN_EXTRA_CLANG_ARGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + }; + }; + riscv64-linux = mkClangTarget { target = "riscv64gc-unknown-linux-gnu"; clang = pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang; diff --git a/lib/mkStdToolchains.nix b/lib/mkStdToolchains.nix index 9c15f83..081f04d 100644 --- a/lib/mkStdToolchains.nix +++ b/lib/mkStdToolchains.nix @@ -55,6 +55,16 @@ in nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-multiplatform; }; }); + aarch64-linux-musl = mkFenixToolchain (args // { + defaultTarget = "aarch64-unknown-linux-musl"; + targets = { + default = stdTargets.aarch64-linux-musl; + }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.aarch64-multiplatform-musl; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-multiplatform-musl; + }; + }); x86_64-linux = mkFenixToolchain (args // { defaultTarget = "x86_64-unknown-linux-gnu"; targets = { @@ -65,6 +75,16 @@ in nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.gnu64; }; }); + x86_64-linux-musl = mkFenixToolchain (args // { + defaultTarget = "x86_64-unknown-linux-musl"; + targets = { + x86_64-linux-musl = stdTargets.x86_64-linux-musl; + }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.musl64; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.musl64; + }; + }); i686-linux = mkFenixToolchain (args // { defaultTarget = "i686-unknown-linux-gnu"; targets = { @@ -75,6 +95,16 @@ in nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.gnu32; }; }); + i686-linux-musl = mkFenixToolchain (args // { + defaultTarget = "i686-unknown-linux-musl"; + targets = { + i686-linux = stdTargets.i686-linux-musl; + }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.musl32; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.musl32; + }; + }); riscv64-linux = mkFenixToolchain (args // { defaultTarget = "riscv64gc-unknown-linux-gnu"; targets = { From e202a4e1b09f1ae9277910631d1389babcd91817 Mon Sep 17 00:00:00 2001 From: SilentVoid13 <51264226+SilentVoid13@users.noreply.github.com> Date: Sun, 30 Jun 2024 23:33:34 +0200 Subject: [PATCH 3/6] feat: adding windows64 mingw target --- lib/mkStdTargets.nix | 19 +++++++++++++++++++ lib/mkStdToolchains.nix | 14 ++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/lib/mkStdTargets.nix b/lib/mkStdTargets.nix index e353a09..37ccefe 100644 --- a/lib/mkStdTargets.nix +++ b/lib/mkStdTargets.nix @@ -137,6 +137,25 @@ BINDGEN_EXTRA_CLANG_ARGS_riscv64gc_unknown_linux_gnu = "-I ${pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; }; }; + + windows64 = mkClangTarget rec { + target = "x86_64-pc-windows-gnu"; + clang = pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang; + binPrefix = "x86_64-w64-mingw32-"; + llvmConfigPkg = targetLlvmConfigWrapper { + clangPkg = pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped; + libClangPkg = pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib; + }; + + args = { + CFLAGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CPPFLAGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CXXFLAGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + BINDGEN_EXTRA_CLANG_ARGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + # compressed debug section support only when building on Linux + CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-C link-arg=-fuse-ld=${clang}/bin/${binPrefix}ld -C link-arg=-Wl"; + }; + }; } // { wasm32-unknown = { extraRustFlags, ... }@args: mkTarget { diff --git a/lib/mkStdToolchains.nix b/lib/mkStdToolchains.nix index 081f04d..80f82e8 100644 --- a/lib/mkStdToolchains.nix +++ b/lib/mkStdToolchains.nix @@ -115,6 +115,20 @@ in nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.riscv64; }; }); + windows64 = mkFenixToolchain (args // { + defaultTarget = "x86_64-pc-windows-gnu"; + targets = { + windows64 = stdTargets.windows64; + }; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.mingwW64; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.mingwW64; + depsBuildBuild = [ + pkgs.pkgsCross.mingwW64.stdenv.cc + pkgs.pkgsCross.mingwW64.windows.pthreads + ]; + }; + }); } // { wasm32-unknown = mkFenixToolchain (args // { From 00b81757da05418317faf75e86e921689686ca07 Mon Sep 17 00:00:00 2001 From: SilentVoid13 <51264226+SilentVoid13@users.noreply.github.com> Date: Mon, 1 Jul 2024 00:24:58 +0200 Subject: [PATCH 4/6] fix: adding craneArgs for darwin targets --- lib/mkStdToolchains.nix | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/mkStdToolchains.nix b/lib/mkStdToolchains.nix index 80f82e8..4d3f5b0 100644 --- a/lib/mkStdToolchains.nix +++ b/lib/mkStdToolchains.nix @@ -187,8 +187,10 @@ in targets = { aarch64-darwin = stdTargets.aarch64-darwin; }; - # cross compilation is broken for apple-darwin - craneArgs = {}; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.aarch64-darwin; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-darwin; + }; }); } // lib.optionalAttrs (pkgs.stdenv.buildPlatform.config == "x86_64-apple-darwin") { @@ -197,7 +199,9 @@ in targets = { x86_64-darwin = stdTargets.x86_64-darwin; }; - # cross compilation is broken for apple-darwin - craneArgs = {}; + craneArgs = { + buildInputs = buildInputs pkgs.pkgsCross.x86_64-darwin; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.x86_64-darwin; + }; }); } From 25dfcb7e1595c1490a937dff16a5ede6b79b2d56 Mon Sep 17 00:00:00 2001 From: SilentVoid13 <51264226+SilentVoid13@users.noreply.github.com> Date: Tue, 2 Jul 2024 09:28:20 +0200 Subject: [PATCH 5/6] refactor: formatting, renaming to mingw64 --- lib/craneMultiBuild.nix | 49 +++++++++++++----------- lib/mkStdTargets.nix | 2 +- lib/mkStdToolchains.nix | 84 ++++++++++++++++++++--------------------- 3 files changed, 69 insertions(+), 66 deletions(-) diff --git a/lib/craneMultiBuild.nix b/lib/craneMultiBuild.nix index 03f059c..7e9481c 100644 --- a/lib/craneMultiBuild.nix +++ b/lib/craneMultiBuild.nix @@ -1,25 +1,28 @@ -{ - mkFenixToolchain, - craneLib, - mapWithToolchains, - mkTarget, - mkStdToolchains, - lib, -}: let +{ mkFenixToolchain +, craneLib +, mapWithToolchains +, mkTarget +, mkStdToolchains +, lib +, +}: +let craneLib' = craneLib; in - { - buildInputs ? pkgs: [], - nativeBuildInputs ? pkgs: [], - profiles ? ["dev" "ci" "release"], - craneLib ? craneLib', - toolchains ? null, - }: let - argToolchains = if toolchains != null then toolchains else (mkStdToolchains {inherit buildInputs nativeBuildInputs;}); - in - outputsFn: let - profilesFn = craneLib: craneLib.mapWithProfiles outputsFn profiles; - in - (mapWithToolchains outputsFn {default = argToolchains.default;}).default - // (mapWithToolchains profilesFn {default = argToolchains.default;}).default - // (mapWithToolchains profilesFn argToolchains) +{ buildInputs ? pkgs: [ ] +, nativeBuildInputs ? pkgs: [ ] +, profiles ? [ "dev" "ci" "release" ] +, craneLib ? craneLib' +, toolchains ? null +, +}: +let + argToolchains = if toolchains != null then toolchains else (mkStdToolchains { inherit buildInputs nativeBuildInputs; }); +in +outputsFn: +let + profilesFn = craneLib: craneLib.mapWithProfiles outputsFn profiles; +in +(mapWithToolchains outputsFn { default = argToolchains.default; }).default +// (mapWithToolchains profilesFn { default = argToolchains.default; }).default + // (mapWithToolchains profilesFn argToolchains) diff --git a/lib/mkStdTargets.nix b/lib/mkStdTargets.nix index 37ccefe..79a7919 100644 --- a/lib/mkStdTargets.nix +++ b/lib/mkStdTargets.nix @@ -138,7 +138,7 @@ }; }; - windows64 = mkClangTarget rec { + mingw64 = mkClangTarget rec { target = "x86_64-pc-windows-gnu"; clang = pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang; binPrefix = "x86_64-w64-mingw32-"; diff --git a/lib/mkStdToolchains.nix b/lib/mkStdToolchains.nix index 4d3f5b0..5797caf 100644 --- a/lib/mkStdToolchains.nix +++ b/lib/mkStdToolchains.nix @@ -14,13 +14,13 @@ , libclang ? defaultLibClang , clang-unwrapped ? defaultClangUnwrapped , stdenv ? defaultStdenv -, buildInputs ? pkgs: [] -, nativeBuildInputs ? pkgs: [] +, buildInputs ? pkgs: [ ] +, nativeBuildInputs ? pkgs: [ ] , ... }@oldArgs: let -stdTargets = mkStdTargets { }; -args = removeAttrs oldArgs [ "buildInputs" "nativeBuildInputs" ]; + stdTargets = mkStdTargets { }; + args = removeAttrs oldArgs [ "buildInputs" "nativeBuildInputs" ]; in { default = mkFenixToolchain (args // { @@ -28,8 +28,8 @@ in default = stdTargets.default; }; craneArgs = { - buildInputs = buildInputs pkgs; - nativeBuildInputs = nativeBuildInputs pkgs; + buildInputs = buildInputs pkgs; + nativeBuildInputs = nativeBuildInputs pkgs; }; }); @@ -39,8 +39,8 @@ in }; channel = "complete"; craneArgs = { - buildInputs = buildInputs pkgs; - nativeBuildInputs = nativeBuildInputs pkgs; + buildInputs = buildInputs pkgs; + nativeBuildInputs = nativeBuildInputs pkgs; }; }); @@ -51,8 +51,8 @@ in default = stdTargets.aarch64-linux; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.aarch64-multiplatform; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-multiplatform; + buildInputs = buildInputs pkgs.pkgsCross.aarch64-multiplatform; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-multiplatform; }; }); aarch64-linux-musl = mkFenixToolchain (args // { @@ -61,8 +61,8 @@ in default = stdTargets.aarch64-linux-musl; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.aarch64-multiplatform-musl; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-multiplatform-musl; + buildInputs = buildInputs pkgs.pkgsCross.aarch64-multiplatform-musl; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-multiplatform-musl; }; }); x86_64-linux = mkFenixToolchain (args // { @@ -71,8 +71,8 @@ in x86_64-linux = stdTargets.x86_64-linux; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.gnu64; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.gnu64; + buildInputs = buildInputs pkgs.pkgsCross.gnu64; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.gnu64; }; }); x86_64-linux-musl = mkFenixToolchain (args // { @@ -81,8 +81,8 @@ in x86_64-linux-musl = stdTargets.x86_64-linux-musl; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.musl64; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.musl64; + buildInputs = buildInputs pkgs.pkgsCross.musl64; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.musl64; }; }); i686-linux = mkFenixToolchain (args // { @@ -91,8 +91,8 @@ in i686-linux = stdTargets.i686-linux; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.gnu32; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.gnu32; + buildInputs = buildInputs pkgs.pkgsCross.gnu32; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.gnu32; }; }); i686-linux-musl = mkFenixToolchain (args // { @@ -101,8 +101,8 @@ in i686-linux = stdTargets.i686-linux-musl; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.musl32; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.musl32; + buildInputs = buildInputs pkgs.pkgsCross.musl32; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.musl32; }; }); riscv64-linux = mkFenixToolchain (args // { @@ -111,22 +111,22 @@ in riscv64-linux = stdTargets.riscv64-linux; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.riscv64; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.riscv64; + buildInputs = buildInputs pkgs.pkgsCross.riscv64; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.riscv64; }; }); - windows64 = mkFenixToolchain (args // { + mingw64 = mkFenixToolchain (args // { defaultTarget = "x86_64-pc-windows-gnu"; targets = { - windows64 = stdTargets.windows64; + mingw64 = stdTargets.mingw64; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.mingwW64; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.mingwW64; - depsBuildBuild = [ - pkgs.pkgsCross.mingwW64.stdenv.cc - pkgs.pkgsCross.mingwW64.windows.pthreads - ]; + buildInputs = buildInputs pkgs.pkgsCross.mingwW64; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.mingwW64; + depsBuildBuild = [ + pkgs.pkgsCross.mingwW64.stdenv.cc + pkgs.pkgsCross.mingwW64.windows.pthreads + ]; }; }); } // { @@ -137,8 +137,8 @@ in wasm32-unknown = stdTargets.wasm32-unknown; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.wasi32; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.wasi32; + buildInputs = buildInputs pkgs.pkgsCross.wasi32; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.wasi32; }; }); @@ -150,8 +150,8 @@ in aarch64-android = stdTargets.aarch64-android; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.aarch64-android-prebuilt; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-android-prebuilt; + buildInputs = buildInputs pkgs.pkgsCross.aarch64-android-prebuilt; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-android-prebuilt; }; }; x86_64-android = mkFenixToolchain { @@ -160,7 +160,7 @@ in x86_64-android = stdTargets.x86_64-android; }; # no crossPkgs available - craneArgs = {}; + craneArgs = { }; }; i686-android = mkFenixToolchain { defaultTarget = "i686-linux-android"; @@ -168,7 +168,7 @@ in i686-android = stdTargets.i686-android; }; # no crossPkgs available - craneArgs = {}; + craneArgs = { }; }; armv7-android = mkFenixToolchain { defaultTarget = "armv7-linux-androideabi"; @@ -176,8 +176,8 @@ in armv7-android = stdTargets.armv7-android; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.armv7-android-prebuilt; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.armv7-android-prebuilt; + buildInputs = buildInputs pkgs.pkgsCross.armv7-android-prebuilt; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.armv7-android-prebuilt; }; }; @@ -188,8 +188,8 @@ in aarch64-darwin = stdTargets.aarch64-darwin; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.aarch64-darwin; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-darwin; + buildInputs = buildInputs pkgs.pkgsCross.aarch64-darwin; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-darwin; }; }); @@ -200,8 +200,8 @@ in x86_64-darwin = stdTargets.x86_64-darwin; }; craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.x86_64-darwin; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.x86_64-darwin; + buildInputs = buildInputs pkgs.pkgsCross.x86_64-darwin; + nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.x86_64-darwin; }; }); } From d45c5f4bd81c3ec1eb9884d1843caa83ca05c2f5 Mon Sep 17 00:00:00 2001 From: silentvoid13 <51264226+SilentVoid13@users.noreply.github.com> Date: Fri, 23 Aug 2024 15:16:35 +0200 Subject: [PATCH 6/6] test: adding workspace-cross-compile tests, switching to clang version 17 --- checks/workspace-cross-compile/default.nix | 22 +++--- lib/mkStdTargets.nix | 80 +++++++++++----------- lib/mkStdToolchains.nix | 29 +++++--- 3 files changed, 74 insertions(+), 57 deletions(-) diff --git a/checks/workspace-cross-compile/default.nix b/checks/workspace-cross-compile/default.nix index ffa0cd0..c788f88 100644 --- a/checks/workspace-cross-compile/default.nix +++ b/checks/workspace-cross-compile/default.nix @@ -22,8 +22,16 @@ let "scripts" ]; + buildInputs = pkgs: [ + pkgs.openssl + ]; + + nativeBuildInputs = pkgs: [ + pkgs.pkgsBuildTarget.pkg-config + ]; + multiOutput = - (flakeboxLib.craneMultiBuild { }) + (flakeboxLib.craneMultiBuild { inherit buildInputs; inherit nativeBuildInputs; }) (craneLib': let src = flakeboxLib.filterSubPaths { @@ -35,14 +43,6 @@ let pname = "workspace-cross-compile"; version = "0.0.1"; inherit src; - - buildInputs = [ - pkgs.openssl - ]; - - nativeBuildInputs = [ - pkgs.pkg-config - ]; }).overrideArgsDepsOnly { cargoVendorDir = craneLib'.vendorCargoDeps { inherit src; @@ -119,9 +119,13 @@ pkgs.linkFarmFromDrvs "workspace-non-rust" ( ] ++ lib.optionals (full && pkgs.stdenv.isLinux) [ multiOutput.aarch64-linux.ci.workspaceBuild + multiOutput.aarch64-linux-musl.ci.workspaceBuild multiOutput.x86_64-linux.ci.workspaceBuild + multiOutput.x86_64-linux-musl.ci.workspaceBuild multiOutput.i686-linux.ci.workspaceBuild + multiOutput.i686-linux-musl.ci.workspaceBuild multiOutput.riscv64-linux.ci.workspaceBuild + multiOutput.mingw64.ci.workspaceBuild ] ++ # in full mode, when supported, test all android targets lib.optionals (full && multiOutput ? aarch64-android) [ diff --git a/lib/mkStdTargets.nix b/lib/mkStdTargets.nix index 79a7919..ef6ff4c 100644 --- a/lib/mkStdTargets.nix +++ b/lib/mkStdTargets.nix @@ -27,10 +27,10 @@ }; args = { - CFLAGS_aarch64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.aarch64-multiplatform.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_aarch64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.aarch64-multiplatform.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_aarch64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.aarch64-multiplatform.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.aarch64-multiplatform.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_aarch64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.aarch64-multiplatform.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_aarch64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.aarch64-multiplatform.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_aarch64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.aarch64-multiplatform.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.aarch64-multiplatform.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; }; }; @@ -44,10 +44,10 @@ }; args = { - CFLAGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_linux_musl = "-I ${pkgs.pkgsCross.aarch64-multiplatform-musl.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; }; }; @@ -63,10 +63,10 @@ }; args = { - CFLAGS_x86_64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_x86_64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_x86_64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_x86_64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_x86_64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_x86_64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; }; }; @@ -80,10 +80,10 @@ }; args = { - CFLAGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; }; }; @@ -97,10 +97,10 @@ }; args = { - CFLAGS_i686_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_i686_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_i686_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_i686_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_i686_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_i686_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_i686_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_i686_unknown_linux_gnu = "-I ${pkgs.pkgsCross.gnu32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; }; }; @@ -114,10 +114,10 @@ }; args = { - CFLAGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_i686_unknown_linux_musl = "-I ${pkgs.pkgsCross.musl32.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; }; }; @@ -131,10 +131,10 @@ }; args = { - CFLAGS_riscv64gc_unknown_linux_gnu = "-I ${pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_riscv64gc_unknown_linux_gnu = "-I ${pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_riscv64gc_unknown_linux_gnu = "-I ${pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_riscv64gc_unknown_linux_gnu = "-I ${pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_riscv64gc_unknown_linux_gnu = "-I ${pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_riscv64gc_unknown_linux_gnu = "-I ${pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_riscv64gc_unknown_linux_gnu = "-I ${pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_riscv64gc_unknown_linux_gnu = "-I ${pkgs.pkgsCross.riscv64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; }; }; @@ -148,10 +148,10 @@ }; args = { - CFLAGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_x86_64_pc_windows_gnu = "-I ${pkgs.pkgsCross.mingwW64.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; # compressed debug section support only when building on Linux CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-C link-arg=-fuse-ld=${clang}/bin/${binPrefix}ld -C link-arg=-Wl"; }; @@ -219,10 +219,10 @@ }; args = { - CFLAGS_aarch64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.aarch64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_aarch64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.aarch64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_aarch64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.aarch64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.aarch64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_aarch64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.aarch64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_aarch64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.aarch64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_aarch64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.aarch64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.aarch64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; }; }; @@ -237,10 +237,10 @@ }; args = { - CFLAGS_x86_64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.x86_64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CPPFLAGS_x86_64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.x86_64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - CXXFLAGS_x86_64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.x86_64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; - BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.x86_64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/16/include/"; + CFLAGS_x86_64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.x86_64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CPPFLAGS_x86_64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.x86_64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + CXXFLAGS_x86_64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.x86_64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; + BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_darwin_gnu = "-I ${pkgs.pkgsCross.x86_64-darwin.buildPackages.llvmPackages.clang-unwrapped.lib}/lib/clang/17/include/"; }; }; } // lib.optionalAttrs (pkgs.stdenv.isDarwin) { diff --git a/lib/mkStdToolchains.nix b/lib/mkStdToolchains.nix index 5797caf..04f221d 100644 --- a/lib/mkStdToolchains.nix +++ b/lib/mkStdToolchains.nix @@ -149,9 +149,12 @@ in targets = { aarch64-android = stdTargets.aarch64-android; }; + # FIXME: crossPkgs for aarch64-android-prebuilt are broken for certain packages (e.g. openssl) + # https://github.com/NixOS/nixpkgs/issues/319863 + # we use native pkgs as a fallback craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.aarch64-android-prebuilt; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.aarch64-android-prebuilt; + buildInputs = buildInputs pkgs; + nativeBuildInputs = nativeBuildInputs pkgs; }; }; x86_64-android = mkFenixToolchain { @@ -159,25 +162,35 @@ in targets = { x86_64-android = stdTargets.x86_64-android; }; - # no crossPkgs available - craneArgs = { }; + # FIXME: no crossPkgs available + # we use native pkgs as a fallback + craneArgs = { + buildInputs = buildInputs pkgs; + nativeBuildInputs = nativeBuildInputs pkgs; + }; }; i686-android = mkFenixToolchain { defaultTarget = "i686-linux-android"; targets = { i686-android = stdTargets.i686-android; }; - # no crossPkgs available - craneArgs = { }; + # FIXME: no crossPkgs available, use native pkgs as a fallback + craneArgs = { + buildInputs = buildInputs pkgs; + nativeBuildInputs = nativeBuildInputs pkgs; + }; }; armv7-android = mkFenixToolchain { defaultTarget = "armv7-linux-androideabi"; targets = { armv7-android = stdTargets.armv7-android; }; + # FIXME: crossPkgs for armv7a-android-prebuilt are broken for certain packages (e.g. openssl) + # https://github.com/NixOS/nixpkgs/issues/319863 + # we use native pkgs as a fallback craneArgs = { - buildInputs = buildInputs pkgs.pkgsCross.armv7-android-prebuilt; - nativeBuildInputs = nativeBuildInputs pkgs.pkgsCross.armv7-android-prebuilt; + buildInputs = buildInputs pkgs; + nativeBuildInputs = nativeBuildInputs pkgs; }; };