Unverified Commit 5a81fe36 authored by Ryan Burns's avatar Ryan Burns Committed by GitHub
Browse files

Merge pull request #196502 from r-burns/mips-darwin-cross

linuxHeaders: fix darwin -> linux-mips cross-compilation
parents 256b8388 b45cf446
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
{ 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"];
+1 −1
Original line number Diff line number Diff line
@@ -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 {