Re: git: 01674e15dedb - main - bsd.endian.mk: Optimize the handling of big/little endian determination.
- Reply: Adrian Chadd : "Re: git: 01674e15dedb - main - bsd.endian.mk: Optimize the handling of big/little endian determination."
- In reply to: Stephen J. Kiernan : "git: 01674e15dedb - main - bsd.endian.mk: Optimize the handling of big/little endian determination."
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 03 May 2026 18:48:37 UTC
On 3 May 2026, at 03:24, Stephen J. Kiernan <stevek@freebsd.org> wrote:
>
> The branch main has been updated by stevek:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=01674e15dedb15f8ce498af0680c50bb075c5482
>
> commit 01674e15dedb15f8ce498af0680c50bb075c5482
> Author: Stephen J. Kiernan <stevek@FreeBSD.org>
> AuthorDate: 2024-04-03 23:25:19 +0000
> Commit: Stephen J. Kiernan <stevek@FreeBSD.org>
> CommitDate: 2026-05-03 02:21:56 +0000
>
> bsd.endian.mk: Optimize the handling of big/little endian determination.
>
> Add variables to contain lists of MACHINE_ARCH values to use
> to determine little or big endian.
>
> Only error out about not being able to determine endianess if
> TARGET_ENDIANNESS is empty and not cross-compiling.
>
> Reviewed by: sjg
> Obtained from: Hewlett Packard Enterprise Development LP
> Differential Revision: https://reviews.freebsd.org/D44629
> ---
> share/mk/bsd.endian.mk | 39 +++++++++++++++++++++++++++++----------
> 1 file changed, 29 insertions(+), 10 deletions(-)
>
> diff --git a/share/mk/bsd.endian.mk b/share/mk/bsd.endian.mk
> index 0c5ebb7aeba2..2a617a1d2794 100644
> --- a/share/mk/bsd.endian.mk
> +++ b/share/mk/bsd.endian.mk
> @@ -1,20 +1,35 @@
>
> -.if ${MACHINE_CPUARCH} == "aarch64" || \
> - ${MACHINE_CPUARCH} == "arm" || \
> - ${MACHINE_ARCH} == "amd64" || \
> - ${MACHINE_ARCH} == "i386" || \
> - ${MACHINE_ARCH} == "powerpc64le" || \
> - ${MACHINE_CPUARCH} == "riscv"
Losing MACHINE_CPUARCH makes me sad as a downstream that adds new
MACHINE_ARCH for aarch64 and riscv. For riscv at least it’s now riscv*
which I guess is close enough, but for aarch64 it’s not wildcarded.
Similarly arm though I don’t care about that personally.
> +MACHINE_ARCH_LIST.little = \
> + aarch64 \
> + amd64 \
> + armv7 \
> + i386 \
> + powerpc64le \
> + riscv*
> +
> +MACHINE_ARCH_LIST.big = \
> + powerpc \
> + powerpc64
> +
> +.for e in big little
> +N_$e:= ${MACHINE_ARCH_LIST.$e:${M_ListToSkip}}
Should we be worried about catching MACHINE(_ARCH) being empty?
Jessica
> +.endfor
> +
> +# For the host, we need to look at the host architecture
> +.if ${MACHINE:Nhost*} == ""
> +_ENDIAN_ARCH=${_HOST_ARCH}
> +.else
> +_ENDIAN_ARCH=${MACHINE_ARCH}
> +.endif
> +
> +.if ${_ENDIAN_ARCH:${N_little}} == ""
> TARGET_ENDIANNESS= 1234
> CAP_MKDB_ENDIAN= -l
> LOCALEDEF_ENDIAN= -l
> -.elif ${MACHINE_ARCH} == "powerpc" || \
> - ${MACHINE_ARCH} == "powerpc64"
> +.elif ${_ENDIAN_ARCH:${N_big}} == ""
> TARGET_ENDIANNESS= 4321
> CAP_MKDB_ENDIAN= -b
> LOCALEDEF_ENDIAN= -b
> -.elif ${.MAKE.OS} == "FreeBSD"
> -.error Don't know the endian of this architecture
> .else
> #
> # During bootstrapping on !FreeBSD OSes, we need to define some value. Short of
> @@ -33,3 +48,7 @@ TARGET_ENDIANNESS= 1234
> CAP_MKDB_ENDIAN= -B # Poisoned value, invalid flags for both cap_mkdb
> LOCALEDEF_ENDIAN= -B # and localedef.
> .endif
> +
> +.if empty(TARGET_ENDIANNESS) && ${.MAKE.OS} == "FreeBSD"
> +.error Don't know the endianness of this architecture
> +.endif
>