>From c60287a8c5d3175b6df07757241cb59f3b94edb7 Mon Sep 17 00:00:00 2001 From: Patrick Welche Date: Tue, 12 Nov 2013 14:25:05 +0000 Subject: [PATCH] Portability fix: Use SND_LITTLE_ENDIAN / SND_BIG_ENDIAN instead of endian.h The header file which defines __BYTE_ORDER varies wildly between OSes, so give autoconf the job of detecting endianness. Use the answer by defining SND_LITTLE_ENDIAN / SND_BIG_ENDIAN and using them. (This may require teaching alsa-utilities expecting asoundlib.h to include endian.h for them to use SND_LITTLE_ENDIAN instead.) --- configure.in | 7 ++++++- include/asoundlib-head.h | 1 - include/local.h | 9 +++------ src/pcm/pcm_file.c | 3 +-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/configure.in b/configure.in index 35fd89f..679decd 100644 --- a/configure.in +++ b/configure.in @@ -61,6 +61,7 @@ dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_HEADER_TIME +AC_C_BIGENDIAN dnl Checks for library functions. AC_PROG_GCC_TRADITIONAL @@ -685,5 +686,9 @@ test "$build_seq" = "yes" && echo "#include " >> include/asoun test "$build_seq" = "yes" && echo "#include " >> include/asoundlib.h test "$build_seq" = "yes" && echo "#include " >> include/asoundlib.h test "$build_seq" = "yes" && echo "#include " >> include/asoundlib.h +echo "" >> include/asoundlib.h +test "$ac_cv_c_bigendian" = "yes" && echo "#define SND_BIG_ENDIAN" >> include/asoundlib.h +test "$ac_cv_c_bigendian" = "yes" && echo "#define SNDRV_BIG_ENDIAN" >> include/asoundlib.h +test "$ac_cv_c_bigendian" = "no" && echo "#define SND_LITTLE_ENDIAN" >> include/asoundlib.h +test "$ac_cv_c_bigendian" = "no" && echo "#define SNDRV_LITTLE_ENDIAN" >> include/asoundlib.h cat "$srcdir"/include/asoundlib-tail.h >> include/asoundlib.h - diff --git a/include/asoundlib-head.h b/include/asoundlib-head.h index 71b5c29..31408a4 100644 --- a/include/asoundlib-head.h +++ b/include/asoundlib-head.h @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include diff --git a/include/local.h b/include/local.h index 9464efa..1e7c0dc 100644 --- a/include/local.h +++ b/include/local.h @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -46,14 +45,12 @@ #define RTLD_NOW 0 #endif -#if __BYTE_ORDER == __LITTLE_ENDIAN -#define SND_LITTLE_ENDIAN -#define SNDRV_LITTLE_ENDIAN -#elif __BYTE_ORDER == __BIG_ENDIAN +#ifdef WORDS_BIGENDIAN #define SND_BIG_ENDIAN #define SNDRV_BIG_ENDIAN #else -#error "Unsupported endian..." +#define SND_LITTLE_ENDIAN +#define SNDRV_LITTLE_ENDIAN #endif #define _snd_config_iterator list_head diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c index 7123025..7ee5c37 100644 --- a/src/pcm/pcm_file.c +++ b/src/pcm/pcm_file.c @@ -26,7 +26,6 @@ * */ -#include #include #include #include @@ -90,7 +89,7 @@ typedef struct { size_t filelen; } snd_pcm_file_t; -#if __BYTE_ORDER == __LITTLE_ENDIAN +#ifdef SND_LITTLE_ENDIAN #define TO_LE32(x) (x) #define TO_LE16(x) (x) #else -- 1.8.5.2