| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | # $NetBSD: endian.mk,v 1.10 2014/05/21 01:43:50 obache Exp $ | | 1 | # $NetBSD: endian.mk,v 1.11 2024/01/26 03:16:58 riastradh Exp $ |
2 | # | | 2 | # |
3 | # Determine the endianness of the platform by checking header files. | | 3 | # Determine the endianness of the platform by checking header files. |
4 | # | | 4 | # |
5 | # This file is used as follows: | | 5 | # This file is used as follows: |
6 | # | | 6 | # |
7 | # .include "../../mk/endian.mk" | | 7 | # .include "../../mk/endian.mk" |
8 | # | | 8 | # |
9 | # .if ${MACHINE_ENDIAN} == "big" | | 9 | # .if ${MACHINE_ENDIAN} == "big" |
10 | # # ...big endian stuff... | | 10 | # # ...big endian stuff... |
11 | # .elif ${MACHINE_ENDIAN} == "little" | | 11 | # .elif ${MACHINE_ENDIAN} == "little" |
12 | # # ...little endian stuff... | | 12 | # # ...little endian stuff... |
13 | # .else | | 13 | # .else |
14 | # BROKEN= "Unknown endianness" | | 14 | # BROKEN= "Unknown endianness" |
| @@ -17,36 +17,41 @@ | | | @@ -17,36 +17,41 @@ |
17 | .include "../../mk/bsd.prefs.mk" | | 17 | .include "../../mk/bsd.prefs.mk" |
18 | | | 18 | |
19 | .include "../../mk/compiler.mk" | | 19 | .include "../../mk/compiler.mk" |
20 | | | 20 | |
21 | .if !defined(MACHINE_ENDIAN) | | 21 | .if !defined(MACHINE_ENDIAN) |
22 | BUILTIN_FIND_HEADERS_VAR:= _ENDIAN_H | | 22 | BUILTIN_FIND_HEADERS_VAR:= _ENDIAN_H |
23 | BUILTIN_FIND_HEADERS._ENDIAN_H= endian.h sys/endian.h machine/endian.h \ | | 23 | BUILTIN_FIND_HEADERS._ENDIAN_H= endian.h sys/endian.h machine/endian.h \ |
24 | sys/byteorder.h | | 24 | sys/byteorder.h |
25 | .include "../../mk/buildlink3/find-headers.mk" | | 25 | .include "../../mk/buildlink3/find-headers.mk" |
26 | . if !empty(_ENDIAN_H:M__nonexistent__) | | 26 | . if !empty(_ENDIAN_H:M__nonexistent__) |
27 | _ENDIAN_H= /dev/null | | 27 | _ENDIAN_H= /dev/null |
28 | . endif | | 28 | . endif |
29 | | | 29 | |
| | | 30 | _MACHINE_ENDIAN_CPP= ${CCPATH:U${CC}} -E - |
| | | 31 | .if ${TOOLS_USE_CROSS_COMPILE:tl} == "yes" |
| | | 32 | _MACHINE_ENDIAN_CPP+= --sysroot=${TOOLS_CROSS_DESTDIR:Q} |
| | | 33 | .endif |
| | | 34 | |
30 | MACHINE_ENDIAN!= \ | | 35 | MACHINE_ENDIAN!= \ |
31 | { ${ECHO} "\#if defined(__sgi)"; \ | | 36 | { ${ECHO} "\#if defined(__sgi)"; \ |
32 | ${ECHO} "\# include <standards.h>"; \ | | 37 | ${ECHO} "\# include <standards.h>"; \ |
33 | ${ECHO} "\#endif"; \ | | 38 | ${ECHO} "\#endif"; \ |
34 | ${ECHO} "\#include <${_ENDIAN_H}>"; \ | | 39 | ${ECHO} "\#include <${_ENDIAN_H}>"; \ |
35 | ${ECHO} "\#ifndef BYTE_ORDER"; \ | | 40 | ${ECHO} "\#ifndef BYTE_ORDER"; \ |
36 | ${ECHO} "\#ifdef _BIG_ENDIAN"; \ | | 41 | ${ECHO} "\#ifdef _BIG_ENDIAN"; \ |
37 | ${ECHO} "\#define BYTE_ORDER 4321"; \ | | 42 | ${ECHO} "\#define BYTE_ORDER 4321"; \ |
38 | ${ECHO} "\#else"; \ | | 43 | ${ECHO} "\#else"; \ |
39 | ${ECHO} "\#define BYTE_ORDER 1234"; \ | | 44 | ${ECHO} "\#define BYTE_ORDER 1234"; \ |
40 | ${ECHO} "\#endif"; \ | | 45 | ${ECHO} "\#endif"; \ |
41 | ${ECHO} "\#endif"; \ | | 46 | ${ECHO} "\#endif"; \ |
42 | ${ECHO} "BYTE_ORDER"; } | ${CCPATH:U${CC}} -E - | \ | | 47 | ${ECHO} "BYTE_ORDER"; } | ${_MACHINE_ENDIAN_CPP} | \ |
43 | { while read line; do \ | | 48 | { while read line; do \ |
44 | case $$line in \ | | 49 | case $$line in \ |
45 | 1234) ${ECHO} "little"; exit 0 ;; \ | | 50 | 1234) ${ECHO} "little"; exit 0 ;; \ |
46 | 4321) ${ECHO} "big"; exit 0 ;; \ | | 51 | 4321) ${ECHO} "big"; exit 0 ;; \ |
47 | esac; \ | | 52 | esac; \ |
48 | done; \ | | 53 | done; \ |
49 | ${ECHO} "unknown"; } | | 54 | ${ECHO} "unknown"; } |
50 | | | 55 | |
51 | MAKEFLAGS+= MACHINE_ENDIAN=${MACHINE_ENDIAN:Q} | | 56 | MAKEFLAGS+= MACHINE_ENDIAN=${MACHINE_ENDIAN:Q} |
52 | .endif | | 57 | .endif |