boost: if isMips use the "cross compile" codepath unconditionally

boost-context changed its name for mips from "mips1" to "mips" in this
commit:

  https://github.com/boostorg/context/commit/6edc8184a7136de4603a6f903d9b9b864ca9cf57

however the native-build code to detect the local architecture still
reports "mips1":

  https://github.com/boostorg/boost/blob/67c074b249538cf441724f9bbb3929d0f6b4f333/boostcpp.jam#L637

Therefore native builds of boost-context on mips must specify
architecture= explicitly; without this you will get link failures
"undefined reference to `jump_fcontext`" in code that uses
boost-context.

Currently the "cross compile" codepath, which provides explicit
architecture/abi/address-model/binary-format/os parameters, is
prefixed by this comment:

```
  # TODO: make this unconditional
```

This commit does so, at least if `isMips`.

This commit is needed in order for native builds of nix to succeed on
mips.
This commit is contained in:
Adam Joseph
2022-10-19 20:22:45 +02:00
committed by Rick van Schijndel
parent 5e838fa9ac
commit ac92b409b3
+3 -1
View File
@@ -81,7 +81,9 @@ let
"-sEXPAT_LIBPATH=${expat.out}/lib"
# TODO: make this unconditional
] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform ||
# required; see this line's `git blame` for an explanation
(stdenv.hostPlatform.isMips && versionAtLeast version "1.79")) [
"address-model=${toString stdenv.hostPlatform.parsed.cpu.bits}"
"architecture=${if stdenv.hostPlatform.isMips64
then if versionOlder version "1.78" then "mips1" else "mips"