diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2025-09-07 16:07:32 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2025-09-07 16:07:46 +0000 |
| commit | 4341f92251ae00c3f82904623bfd561bb8ea49fb (patch) | |
| tree | 2ee5a984347004fca63501cdd44b3024406483ee | |
| parent | ac2f284258e4c6d5867aa6a411bd44df349fe416 (diff) | |
share/mk: Fix a heuristic in bsd.cpu.mk
When cross-building from MacOS we have MACHINE=arm64 MACHINE_ARCH=arm,
so bsd.cpu.mk infers that sizeof(long) == 4, but of course it isn't.
This breaks the bootstrap build of openssl, which tests
MACHINE_ABI:Mlong64 to decide whether to build ecp_nistp224.c. It
doesn't, and crypto/openssl/freebsd/include/openssl/configuration.h
undefines OPENSSL_NO_EC_NISTP_64_GCC_128, so we end up with a link
error.
Reviewed by: ngie, emaste
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D52340
| -rw-r--r-- | share/mk/bsd.cpu.mk | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/share/mk/bsd.cpu.mk b/share/mk/bsd.cpu.mk index f6599a0ad802..1225d690e908 100644 --- a/share/mk/bsd.cpu.mk +++ b/share/mk/bsd.cpu.mk @@ -391,8 +391,11 @@ MACHINE_ABI+= soft-float .else MACHINE_ABI+= hard-float .endif -# Currently all 64-bit architectures include 64 in their name (see arch(7)). -.if ${MACHINE_ARCH:M*64*} +# Currently all 64-bit FreeBSD architectures include 64 in their name +# (see arch(7)). We need a special case for cross-building from macOS +# (which uses arm64/arm). +.if ${MACHINE_ARCH:M*64*} || \ + (defined(BOOTSTRAPPING) && ${.MAKE.OS} == "Darwin" && ${MACHINE} == "arm64") MACHINE_ABI+= long64 .else MACHINE_ABI+= long32 |
