]> err.no Git - util-linux/commitdiff
build-sys: use WORDS_BIGENDIAN to determine platform byte-order
authorFabian Groffen <grobian@gentoo.org>
Sat, 8 Jan 2011 18:49:38 +0000 (19:49 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 17 Jan 2011 14:34:45 +0000 (15:34 +0100)
Autoconf contains the right magic to determine the endianness on many
platforms next to Linux.  This reverses previous commits to move away
from WORDS_BIGENDIAN:
"use __BYTE_ORDER rather than AC specific WORDS_BIGENDIAN"

This is necessary to compile on non Linux platforms like Darwin and
Solaris.

Signed-off-by: Fabian Groffen <grobian@gentoo.org>
include/bitops.h
lib/md5.c
sys-utils/lscpu.c
tests/helpers/test_sysinfo.c

index e283b83555ac3db01421190bcbb8b665576bf1e2..80d6f6f074c93db647e82bdd31d6d7cef828871a 100644 (file)
@@ -2,7 +2,6 @@
 #define BITOPS_H
 
 #include <stdint.h>
-#include <endian.h>
 
 /*
  * Bit map related macros. Usually provided by libc.
 # define isclr(a,i)    (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
 #endif
 
-#if !defined __BYTE_ORDER || !(__BYTE_ORDER == __LITTLE_ENDIAN) && !(__BYTE_ORDER == __BIG_ENDIAN)
-#error missing __BYTE_ORDER
-#endif
-
 /*
  * Byte swab macros (based on linux/byteorder/swab.h)
  */
@@ -51,7 +46,7 @@
                (uint64_t)(((uint64_t)(x) & (uint64_t)0xff00000000000000ULL) >> 56) ))
 
 
-#if (__BYTE_ORDER == __BIG_ENDIAN)
+#ifdef WORDS_BIGENDIAN
 
 #define cpu_to_le16(x) swab16(x)
 #define cpu_to_le32(x) swab32(x)
@@ -67,7 +62,7 @@
 #define be32_to_cpu(x) (x)
 #define be64_to_cpu(x) (x)
 
-#else /* __BYTE_ORDER != __BIG_ENDIAN */
+#else /* !WORDS_BIGENDIAN */
 
 #define cpu_to_le16(x) (x)
 #define cpu_to_le32(x) (x)
@@ -83,7 +78,7 @@
 #define be32_to_cpu(x) swab32(x)
 #define be64_to_cpu(x) swab64(x)
 
-#endif /* __BYTE_ORDER */
+#endif /* WORDS_BIGENDIAN */
 
 #endif /* BITOPS_H */
 
index 6ad4b6845a20c2f30413fe68564645b2c5352851..071630f1954e3a2879ecf1bce931677a71875e14 100644 (file)
--- a/lib/md5.c
+++ b/lib/md5.c
  * needed on buffers full of bytes, and then call MD5Final, which
  * will fill a supplied 16-byte array with the digest.
  */
-#include <endian.h>
 #include <string.h>            /* for memcpy() */
 
 #include "md5.h"
 
-#if !defined __BYTE_ORDER || !(__BYTE_ORDER == __LITTLE_ENDIAN) && !(__BYTE_ORDER == __BIG_ENDIAN)
-#error missing __BYTE_ORDER
-#endif
-
-#if (__BYTE_ORDER == __LITTLE_ENDIAN)
+#if !defined(WORDS_BIGENDIAN)
 #define byteReverse(buf, len)  /* Nothing */
 #else
 void byteReverse(unsigned char *buf, unsigned longs);
index 224d5f99bf84918fc5f9120c9ff6324548b9a23d..16e6b9a1e583843d16c46027d3fbd9a75b3f6942 100644 (file)
@@ -818,12 +818,10 @@ print_readable(struct lscpu_desc *desc, int hex)
                *(p - 2) = '\0';
                print_s(_("CPU op-mode(s):"), buf);
        }
-#ifdef __BYTE_ORDER
-#if (__BYTE_ORDER == __LITTLE_ENDIAN)
+#if !defined(WORDS_BIGENDIAN)
        print_s(_("Byte Order:"), "Little Endian");
 #else
        print_s(_("Byte Order:"), "Big Endian");
-#endif
 #endif
        print_n(_("CPU(s):"), desc->ncpus);
 
index 9c841dbf83290bfa473caaf6a23d95b14ed5b0a7..cb7b66b1a0a09b6f0cc9786c0c76bee4bc0b4956 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <endian.h>
 #include <limits.h>
 
-#if !defined __BYTE_ORDER || !(__BYTE_ORDER == __LITTLE_ENDIAN) && !(__BYTE_ORDER == __BIG_ENDIAN)
-#error missing __BYTE_ORDER
-#endif
-
 typedef struct {
        const char      *name;
        int             (*fnc)(void);
@@ -40,7 +35,7 @@ hlp_wordsize(void)
 int
 hlp_endianness(void)
 {
-#if (__BYTE_ORDER == __LITTLE_ENDIAN)
+#if !defined(WORDS_BIGENDIAN)
        printf("LE\n");
 #else
        printf("BE\n");