1{
2 lib,
3 stdenv,
4 buildPackages,
5 extraMakeFlags ? [ ],
6}:
7# Absolute paths for compilers avoid any PATH-clobbering issues.
8[
9 #
10 # We use the unwrapped compiler, because the clang-wrapper doesn't like -target.
11 "CC=${lib.getExe stdenv.cc.cc}"
12 # The wrapper for ld.lld breaks linking the kernel. We use the unwrapped linker as workaround. See:
13 # https://github.com/NixOS/nixpkgs/issues/321667
14 "LD=${lib.getExe' stdenv.cc.bintools.bintools "${stdenv.cc.targetPrefix}ld"}"
15 "AR=${lib.getExe' stdenv.cc "${stdenv.cc.targetPrefix}ar"}"
16 "NM=${lib.getExe' stdenv.cc "${stdenv.cc.targetPrefix}nm"}"
17 "STRIP=${lib.getExe' stdenv.cc.bintools.bintools "${stdenv.cc.targetPrefix}strip"}"
18 "OBJCOPY=${lib.getExe' stdenv.cc "${stdenv.cc.targetPrefix}objcopy"}"
19 "OBJDUMP=${lib.getExe' stdenv.cc "${stdenv.cc.targetPrefix}objdump"}"
20 "READELF=${lib.getExe' stdenv.cc "${stdenv.cc.targetPrefix}readelf"}"
21 "HOSTCC=${lib.getExe' buildPackages.stdenv.cc "${buildPackages.stdenv.cc.targetPrefix}cc"}"
22 "HOSTCXX=${lib.getExe' buildPackages.stdenv.cc "${buildPackages.stdenv.cc.targetPrefix}c++"}"
23 "HOSTAR=${lib.getExe' buildPackages.stdenv.cc.bintools "${buildPackages.stdenv.cc.targetPrefix}ar"}"
24 "HOSTLD=${lib.getExe' buildPackages.stdenv.cc.bintools "${buildPackages.stdenv.cc.targetPrefix}ld"}"
25 "ARCH=${stdenv.hostPlatform.linuxArch}"
26 "CROSS_COMPILE=${stdenv.cc.targetPrefix}"
27]
28# Add the built in headers the kernel needs
29++ lib.optionals (stdenv.cc.isClang) (
30 let
31 clangLib = lib.getLib stdenv.cc.cc;
32 majorVer = lib.versions.major clangLib.version;
33 in
34 [
35 "CFLAGS_MODULE=-I${clangLib}/lib/clang/${majorVer}/include"
36 "CFLAGS_KERNEL=-I${clangLib}/lib/clang/${majorVer}/include"
37 ]
38)
39++ (stdenv.hostPlatform.linux-kernel.makeFlags or [ ])
40++ extraMakeFlags