nix-cachyos-kernel/helpers.nix

59 lines
1.6 KiB
Nix

{
pkgs,
lib,
...
}:
rec {
# https://github.com/NixOS/nixpkgs/pull/129806
# https://github.com/lovesegfault/nix-config/blob/master/nix/overlays/linux-lto.nix
noBintools = {
bootBintools = null;
bootBintoolsNoLibc = null;
};
hostLLVM = pkgs.pkgsBuildHost.llvmPackages.override noBintools;
buildLLVM = pkgs.pkgsBuildBuild.llvmPackages.override noBintools;
ltoMakeflags = [
"LLVM=1"
"LLVM_IAS=1"
"CC=${buildLLVM.clangUseLLVM}/bin/clang"
"LD=${buildLLVM.lld}/bin/ld.lld"
"HOSTLD=${hostLLVM.lld}/bin/ld.lld"
"AR=${buildLLVM.llvm}/bin/llvm-ar"
"HOSTAR=${hostLLVM.llvm}/bin/llvm-ar"
"NM=${buildLLVM.llvm}/bin/llvm-nm"
"STRIP=${buildLLVM.llvm}/bin/llvm-strip"
"OBJCOPY=${buildLLVM.llvm}/bin/llvm-objcopy"
"OBJDUMP=${buildLLVM.llvm}/bin/llvm-objdump"
"READELF=${buildLLVM.llvm}/bin/llvm-readelf"
"HOSTCC=${hostLLVM.clangUseLLVM}/bin/clang"
"HOSTCXX=${hostLLVM.clangUseLLVM}/bin/clang++"
# Mute nixpkgs CC wrapper warnings for Clang+LTO
"NIX_CC_WRAPPER_SUPPRESS_TARGET_WARNING=1"
];
stdenvLLVM =
let
mkLLVMPlatform =
platform:
platform
// {
linux-kernel = platform.linux-kernel // {
makeFlags = (platform.linux-kernel.makeFlags or [ ]) ++ ltoMakeflags;
};
};
stdenv' = pkgs.overrideCC hostLLVM.stdenv hostLLVM.clangUseLLVM;
in
stdenv'.override (old: {
hostPlatform = mkLLVMPlatform stdenv'.hostPlatform;
buildPlatform = mkLLVMPlatform stdenv'.buildPlatform;
extraNativeBuildInputs = [
hostLLVM.lld
pkgs.patchelf
];
});
}