Merge pull request #196502 from r-burns/mips-darwin-cross
linuxHeaders: fix darwin -> linux-mips cross-compilation
This commit is contained in:
commit
5a81fe3684
2 changed files with 31 additions and 1 deletions
|
@ -1,11 +1,37 @@
|
|||
{ stdenvNoCC, lib, buildPackages, fetchurl, perl, elf-header
|
||||
, bison ? null, flex ? null, python ? null, rsync ? null
|
||||
, writeTextFile
|
||||
}:
|
||||
|
||||
assert stdenvNoCC.hostPlatform.isAndroid ->
|
||||
(flex != null && bison != null && python != null && rsync != null);
|
||||
|
||||
let
|
||||
|
||||
# As part of building a hostPlatform=mips kernel, Linux creates and runs a
|
||||
# tiny utility `arch/mips/boot/tools/relocs_main.c` for the buildPlatform.
|
||||
# This utility references a glibc-specific header `byteswap.h`. There is a
|
||||
# compatibility header in gnulib for most BSDs, but not for Darwin, so we
|
||||
# synthesize one here.
|
||||
darwin-endian-h = writeTextFile {
|
||||
name = "endian-h";
|
||||
text = ''
|
||||
#include <byteswap.h>
|
||||
'';
|
||||
destination = "/include/endian.h";
|
||||
};
|
||||
darwin-byteswap-h = writeTextFile {
|
||||
name = "byteswap-h";
|
||||
text = ''
|
||||
#pragma once
|
||||
#include <libkern/OSByteOrder.h>
|
||||
#define bswap_16 OSSwapInt16
|
||||
#define bswap_32 OSSwapInt32
|
||||
#define bswap_64 OSSwapInt64
|
||||
'';
|
||||
destination = "/include/byteswap.h";
|
||||
};
|
||||
|
||||
makeLinuxHeaders = { src, version, patches ? [] }: stdenvNoCC.mkDerivation {
|
||||
inherit src;
|
||||
|
||||
|
@ -25,6 +51,10 @@ let
|
|||
perl elf-header
|
||||
] ++ lib.optionals stdenvNoCC.hostPlatform.isAndroid [
|
||||
flex bison python rsync
|
||||
] ++ lib.optionals (stdenvNoCC.buildPlatform.isDarwin &&
|
||||
stdenvNoCC.hostPlatform.isMips) [
|
||||
darwin-endian-h
|
||||
darwin-byteswap-h
|
||||
];
|
||||
|
||||
extraIncludeDirs = lib.optionals (with stdenvNoCC.hostPlatform; isPower && is32bit && isBigEndian) ["ppc"];
|
||||
|
|
|
@ -25126,7 +25126,7 @@ with pkgs;
|
|||
lkl = callPackage ../applications/virtualization/lkl { };
|
||||
lklWithFirewall = callPackage ../applications/virtualization/lkl { firewallSupport = true; };
|
||||
|
||||
inherit (callPackages ../os-specific/linux/kernel-headers { })
|
||||
inherit (callPackages ../os-specific/linux/kernel-headers { inherit (pkgsBuildBuild) elf-header; })
|
||||
linuxHeaders makeLinuxHeaders;
|
||||
|
||||
linuxHeaders_5_19 = linuxHeaders.overrideAttrs (_: rec {
|
||||
|
|
Loading…
Reference in a new issue