Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 03 May 2026 02:24:44 +0000
From:      Stephen J. Kiernan <stevek@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 01674e15dedb - main - bsd.endian.mk: Optimize the handling of big/little endian determination.
Message-ID:  <69f6b1ec.181e8.27d0b938@gitrepo.freebsd.org>

index | next in thread | raw e-mail

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"
+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}}
+.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


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f6b1ec.181e8.27d0b938>