Message ID | 20140221012704.GA15861@quantz (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Takashi Iwai |
Headers | show |
At Fri, 21 Feb 2014 01:27:04 +0000, Patrick Welche wrote: > > On Tue, Jan 14, 2014 at 02:23:01PM +0100, Takashi Iwai wrote: > > BTW, about your patch: I don't think it's good to embed the endianness > > in asoundlib.h. It makes the header file appearing differently, > > depending on the architecture, which is rather confusing. > > Is this more what you have in mind? (Less portable than autoconf, but > not set at configure time.) Yes, I supposed something like that. > > The four files which included endian.h were: > > - include/asoundlib-head.h > - include/local.h > - include/sound/type_compat.h > - src/pcm/pcm_file.c > > The endian.h line(s) in asoundlib.h is now generated by configure. Looks almost good, but I prefer seeing it just after #include <stdarg.h> instead of the middle in alsa/* inclusions. Other than that, all look good to me. Could you fix and resubmit with your sign-off? thanks, Takashi > local.h includes the appropriate endian.h vs sys/endian.h file & defines > the relevant macros. > > type_compat.h doesn't seem to be used anywhere? So I left it alone. > > pcm_file.c includes pcm_local.h which includes local.h, so I removed > the #include <endian.h> > > (Still far from being able to compile alsa-lib, but it's a start...) > > Cheers, > > Patrick > >From 5885d2e79dfd8f788177a95c70967d9a3c9a2cb6 Mon Sep 17 00:00:00 2001 > From: Patrick Welche <prlw1@cam.ac.uk> > Date: Fri, 21 Feb 2014 01:18:01 +0000 > Subject: [PATCH] Portability fix: look for sys/endian.h as well as endian.h > > - define __BYTE_ORDER and friends. > - adjust asoundlib.h accordingly. > --- > configure.in | 19 +++++++++++++++++-- > include/asoundlib-head.h | 1 - > include/local.h | 18 +++++++++++++++++- > src/pcm/pcm_file.c | 1 - > 4 files changed, 34 insertions(+), 5 deletions(-) > > diff --git a/configure.in b/configure.in > index bb56eb6..60d4ae1 100644 > --- a/configure.in > +++ b/configure.in > @@ -309,8 +309,8 @@ fi > > AC_SUBST(ALSA_DEPLIBS) > > -dnl Check for wordexp.h > -AC_CHECK_HEADERS([wordexp.h]) > +dnl Check for headers > +AC_CHECK_HEADERS([wordexp.h endian.h sys/endian.h]) > > dnl Check for resmgr support... > AC_MSG_CHECKING(for resmgr support) > @@ -660,6 +660,21 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ > dnl Create asoundlib.h dynamically according to configure options > echo "Creating asoundlib.h..." > cp "$srcdir"/include/asoundlib-head.h include/asoundlib.h > +test "$ac_cv_header_endian_h" = "yes" && echo "#include <endian.h>" >> include/asoundlib.h > +if test "$ac_cv_header_sys_endian_h" = "yes"; then > +cat >> include/asoundlib.h <<EOF > +#include <sys/endian.h> > +#ifndef __BYTE_ORDER > +#define __BYTE_ORDER BYTE_ORDER > +#endif > +#ifndef __LITTLE_ENDIAN > +#define __LITTLE_ENDIAN LITTLE_ENDIAN > +#endif > +#ifndef __BIG_ENDIAN > +#define __BIG_ENDIAN BIG_ENDIAN > +#endif > +EOF > +fi > test "$build_pcm" = "yes" && echo "#include <alsa/pcm.h>" >> include/asoundlib.h > test "$build_rawmidi" = "yes" && echo "#include <alsa/rawmidi.h>" >> include/asoundlib.h > test "$build_pcm" = "yes" && echo "#include <alsa/timer.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 <string.h> > #include <fcntl.h> > #include <assert.h> > -#include <endian.h> > #include <sys/poll.h> > #include <errno.h> > #include <stdarg.h> > diff --git a/include/local.h b/include/local.h > index 9464efa..2fe9a27 100644 > --- a/include/local.h > +++ b/include/local.h > @@ -22,13 +22,30 @@ > #ifndef __LOCAL_H > #define __LOCAL_H > > +#include "config.h" > + > #include <unistd.h> > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > #include <fcntl.h> > #include <assert.h> > +#ifdef HAVE_ENDIAN_H > #include <endian.h> > +#elif defined(HAVE_SYS_ENDIAN_H) > +#include <sys/endian.h> > +#ifndef __BYTE_ORDER > +#define __BYTE_ORDER BYTE_ORDER > +#endif > +#ifndef __LITTLE_ENDIAN > +#define __LITTLE_ENDIAN LITTLE_ENDIAN > +#endif > +#ifndef __BIG_ENDIAN > +#define __BIG_ENDIAN BIG_ENDIAN > +#endif > +#else > +#error Header defining endianness not defined > +#endif > #include <stdarg.h> > #include <sys/poll.h> > #include <sys/types.h> > @@ -36,7 +53,6 @@ > #include <linux/types.h> > #include <linux/ioctl.h> > > -#include "config.h" > #ifdef SUPPORT_RESMGR > #include <resmgr.h> > #endif > diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c > index 7123025..b1f2330 100644 > --- a/src/pcm/pcm_file.c > +++ b/src/pcm/pcm_file.c > @@ -26,7 +26,6 @@ > * > */ > > -#include <endian.h> > #include <byteswap.h> > #include <ctype.h> > #include <string.h> > -- > 1.8.5.4 >
diff --git a/configure.in b/configure.in index bb56eb6..60d4ae1 100644 --- a/configure.in +++ b/configure.in @@ -309,8 +309,8 @@ fi AC_SUBST(ALSA_DEPLIBS) -dnl Check for wordexp.h -AC_CHECK_HEADERS([wordexp.h]) +dnl Check for headers +AC_CHECK_HEADERS([wordexp.h endian.h sys/endian.h]) dnl Check for resmgr support... AC_MSG_CHECKING(for resmgr support) @@ -660,6 +660,21 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ dnl Create asoundlib.h dynamically according to configure options echo "Creating asoundlib.h..." cp "$srcdir"/include/asoundlib-head.h include/asoundlib.h +test "$ac_cv_header_endian_h" = "yes" && echo "#include <endian.h>" >> include/asoundlib.h +if test "$ac_cv_header_sys_endian_h" = "yes"; then +cat >> include/asoundlib.h <<EOF +#include <sys/endian.h> +#ifndef __BYTE_ORDER +#define __BYTE_ORDER BYTE_ORDER +#endif +#ifndef __LITTLE_ENDIAN +#define __LITTLE_ENDIAN LITTLE_ENDIAN +#endif +#ifndef __BIG_ENDIAN +#define __BIG_ENDIAN BIG_ENDIAN +#endif +EOF +fi test "$build_pcm" = "yes" && echo "#include <alsa/pcm.h>" >> include/asoundlib.h test "$build_rawmidi" = "yes" && echo "#include <alsa/rawmidi.h>" >> include/asoundlib.h test "$build_pcm" = "yes" && echo "#include <alsa/timer.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 <string.h> #include <fcntl.h> #include <assert.h> -#include <endian.h> #include <sys/poll.h> #include <errno.h> #include <stdarg.h> diff --git a/include/local.h b/include/local.h index 9464efa..2fe9a27 100644 --- a/include/local.h +++ b/include/local.h @@ -22,13 +22,30 @@ #ifndef __LOCAL_H #define __LOCAL_H +#include "config.h" + #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <assert.h> +#ifdef HAVE_ENDIAN_H #include <endian.h> +#elif defined(HAVE_SYS_ENDIAN_H) +#include <sys/endian.h> +#ifndef __BYTE_ORDER +#define __BYTE_ORDER BYTE_ORDER +#endif +#ifndef __LITTLE_ENDIAN +#define __LITTLE_ENDIAN LITTLE_ENDIAN +#endif +#ifndef __BIG_ENDIAN +#define __BIG_ENDIAN BIG_ENDIAN +#endif +#else +#error Header defining endianness not defined +#endif #include <stdarg.h> #include <sys/poll.h> #include <sys/types.h> @@ -36,7 +53,6 @@ #include <linux/types.h> #include <linux/ioctl.h> -#include "config.h" #ifdef SUPPORT_RESMGR #include <resmgr.h> #endif diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c index 7123025..b1f2330 100644 --- a/src/pcm/pcm_file.c +++ b/src/pcm/pcm_file.c @@ -26,7 +26,6 @@ * */ -#include <endian.h> #include <byteswap.h> #include <ctype.h> #include <string.h>