Skip to content

Commit

Permalink
Merge pull request #161162 from a-m-joseph/mips64-boost
Browse files Browse the repository at this point in the history
boost: support for cross-compiling to mips64el
  • Loading branch information
SuperSandro2000 authored Apr 13, 2022
2 parents e3e7e78 + 1c51548 commit 560c144
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions pkgs/development/libraries/boost/generic.nix
Original file line number Diff line number Diff line change
Expand Up @@ -84,15 +84,16 @@ let
# TODO: make this unconditional
] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"address-model=${toString stdenv.hostPlatform.parsed.cpu.bits}"
"architecture=${toString stdenv.hostPlatform.parsed.cpu.family}"
"architecture=${if stdenv.hostPlatform.isMips64 then "mips64" else toString stdenv.hostPlatform.parsed.cpu.family}"
"binary-format=${toString stdenv.hostPlatform.parsed.kernel.execFormat.name}"
"target-os=${toString stdenv.hostPlatform.parsed.kernel.name}"

# adapted from table in boost manual
# https://www.boost.org/doc/libs/1_66_0/libs/context/doc/html/context/architectures.html
"abi=${if stdenv.hostPlatform.parsed.cpu.family == "arm" then "aapcs"
else if stdenv.hostPlatform.isWindows then "ms"
else if stdenv.hostPlatform.isMips then "o32"
else if stdenv.hostPlatform.isMips32 then "o32"
else if stdenv.hostPlatform.isMips64n64 then "n64"
else "sysv"}"
] ++ optional (link != "static") "runtime-link=${runtime-link}"
++ optional (variant == "release") "debug-symbols=off"
Expand Down Expand Up @@ -133,6 +134,13 @@ stdenv.mkDerivation {
sha256 = "15d2a636hhsb1xdyp44x25dyqfcaws997vnp9kl1mhzvxjzz7hb0";
stripLen = 1;
})
++ optional (versionAtLeast version "1.65" && versionOlder version "1.70") (fetchpatch {
# support for Mips64n64 appeared in boost-context 1.70; this patch won't apply to pre-1.65 cleanly
url = "https://github.com/boostorg/context/commit/e3f744a1862164062d579d1972272d67bdaa9c39.patch";
sha256 = "sha256-qjQy1b4jDsIRrI+UYtcguhvChrMbGWO0UlEzEJHYzRI=";
stripLen = 1;
extraPrefix = "libs/context/";
})
++ optional (and (versionAtLeast version "1.70") (!versionAtLeast version "1.73")) ./cmake-paths.patch
++ optional (versionAtLeast version "1.73") ./cmake-paths-173.patch
++ optional (version == "1.77.0") (fetchpatch {
Expand All @@ -150,6 +158,14 @@ stdenv.mkDerivation {
++ optional ((versionOlder version "1.57") || version == "1.58") "x86_64-darwin"
++ optionals (versionOlder version "1.73") lib.platforms.riscv;
maintainers = with maintainers; [ hjones2199 ];

broken =
# boost-context lacks support for the N32 ABI on mips64. The build
# will succeed, but packages depending on boost-context will fail with
# a very cryptic error message.
stdenv.hostPlatform.isMips64n32 ||
# the patch above does not apply cleanly to pre-1.65 boost
(stdenv.hostPlatform.isMips64n64 && (versionOlder version "1.65"));
};

preConfigure = optionalString useMpi ''
Expand Down

0 comments on commit 560c144

Please sign in to comment.