Fri Jan 26 03:16:58 2024 UTC (118d)
mk/endian.mk: Make this work for cross-builds.


(riastradh)
diff -r1.10 -r1.11 pkgsrc/mk/endian.mk

cvs diff -r1.10 -r1.11 pkgsrc/mk/endian.mk (expand / switch to unified diff)

--- pkgsrc/mk/endian.mk 2014/05/21 01:43:50 1.10
+++ pkgsrc/mk/endian.mk 2024/01/26 03:16:58 1.11
@@ -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)
22BUILTIN_FIND_HEADERS_VAR:= _ENDIAN_H 22BUILTIN_FIND_HEADERS_VAR:= _ENDIAN_H
23BUILTIN_FIND_HEADERS._ENDIAN_H= endian.h sys/endian.h machine/endian.h \ 23BUILTIN_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
30MACHINE_ENDIAN!= \ 35MACHINE_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
51MAKEFLAGS+= MACHINE_ENDIAN=${MACHINE_ENDIAN:Q} 56MAKEFLAGS+= MACHINE_ENDIAN=${MACHINE_ENDIAN:Q}
52.endif 57.endif