Skip to content

Commit

Permalink
boost: if isMips use the "cross compile" codepath unconditionally
Browse files Browse the repository at this point in the history
boost-context changed its name for mips from "mips1" to "mips" in this
commit:

  boostorg/context@6edc818

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.
  • Loading branch information
Adam Joseph committed Jul 12, 2022
1 parent a3e6cd5 commit 61d9f20
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion pkgs/development/libraries/boost/generic.nix
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,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"
Expand Down

0 comments on commit 61d9f20

Please sign in to comment.