alsa on non-linux
diff mbox

Message ID 20140221012704.GA15861@quantz
State Accepted
Delegated to: Takashi Iwai
Headers show

Commit Message

Patrick Welche Feb. 21, 2014, 1:27 a.m. UTC
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.)

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.

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(-)

Comments

Takashi Iwai Feb. 21, 2014, 11:04 a.m. UTC | #1
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
>

Patch
diff mbox

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>