mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
support building w/out System V shared memory
Some systems, like Android/Bionic, do not support SysV at all. Let the configure script detect if the header is available, and if not, automatically disable the pieces that require it. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
7e90867487
commit
561df6fda0
3 changed files with 34 additions and 3 deletions
13
configure.ac
13
configure.ac
|
|
@ -295,7 +295,7 @@ fi
|
|||
AC_SUBST(ALSA_DEPLIBS)
|
||||
|
||||
dnl Check for headers
|
||||
AC_CHECK_HEADERS([wordexp.h endian.h sys/endian.h])
|
||||
AC_CHECK_HEADERS([wordexp.h endian.h sys/endian.h sys/shm.h])
|
||||
|
||||
dnl Check for resmgr support...
|
||||
AC_MSG_CHECKING(for resmgr support)
|
||||
|
|
@ -508,6 +508,13 @@ if test "$gcc_have_atomics" != "yes"; then
|
|||
build_pcm_meter="no"
|
||||
fi
|
||||
|
||||
if test "$ac_cv_header_sys_shm_h" != "yes"; then
|
||||
build_pcm_dmix="no"
|
||||
build_pcm_dshare="no"
|
||||
build_pcm_dsnoop="no"
|
||||
build_pcm_shm="no"
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([BUILD_PCM_PLUGIN], [test x$build_pcm_plugin = xyes])
|
||||
AM_CONDITIONAL([BUILD_PCM_PLUGIN_COPY], [test x$build_pcm_copy = xyes])
|
||||
AM_CONDITIONAL([BUILD_PCM_PLUGIN_LINEAR], [test x$build_pcm_linear = xyes])
|
||||
|
|
@ -594,6 +601,10 @@ for p in $ctl_plugins; do
|
|||
done
|
||||
done
|
||||
|
||||
if test "$ac_cv_header_sys_shm_h" != "yes"; then
|
||||
build_ctl_shm="no"
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([BUILD_CTL_PLUGIN], [test x$build_ctl_plugin = xyes])
|
||||
AM_CONDITIONAL([BUILD_CTL_PLUGIN_SHM], [test x$build_ctl_shm = xyes])
|
||||
AM_CONDITIONAL([BUILD_CTL_PLUGIN_EXT], [test x$build_ctl_ext = xyes])
|
||||
|
|
|
|||
|
|
@ -17,13 +17,16 @@
|
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <malloc.h>
|
||||
#include <string.h>
|
||||
#include <sys/poll.h>
|
||||
#include <sys/mman.h>
|
||||
#ifdef HAVE_SYS_SHM_H
|
||||
#include <sys/shm.h>
|
||||
#endif
|
||||
#include "pcm_local.h"
|
||||
|
||||
void snd_pcm_mmap_appl_backward(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
|
||||
|
|
@ -341,6 +344,7 @@ int snd_pcm_mmap(snd_pcm_t *pcm)
|
|||
i->addr = ptr;
|
||||
break;
|
||||
case SND_PCM_AREA_SHM:
|
||||
#ifdef HAVE_SYS_SHM_H
|
||||
if (i->u.shm.shmid < 0) {
|
||||
int id;
|
||||
/* FIXME: safer permission? */
|
||||
|
|
@ -385,6 +389,10 @@ int snd_pcm_mmap(snd_pcm_t *pcm)
|
|||
}
|
||||
i->addr = ptr;
|
||||
break;
|
||||
#else
|
||||
SYSERR("shm support not available");
|
||||
return -ENOSYS;
|
||||
#endif
|
||||
case SND_PCM_AREA_LOCAL:
|
||||
ptr = malloc(size);
|
||||
if (ptr == NULL) {
|
||||
|
|
@ -466,6 +474,7 @@ int snd_pcm_munmap(snd_pcm_t *pcm)
|
|||
errno = 0;
|
||||
break;
|
||||
case SND_PCM_AREA_SHM:
|
||||
#ifdef HAVE_SYS_SHM_H
|
||||
if (i->u.shm.area) {
|
||||
snd_shm_area_destroy(i->u.shm.area);
|
||||
i->u.shm.area = NULL;
|
||||
|
|
@ -482,6 +491,10 @@ int snd_pcm_munmap(snd_pcm_t *pcm)
|
|||
}
|
||||
}
|
||||
break;
|
||||
#else
|
||||
SYSERR("shm support not available");
|
||||
return -ENOSYS;
|
||||
#endif
|
||||
case SND_PCM_AREA_LOCAL:
|
||||
free(i->addr);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,12 @@
|
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "config.h"
|
||||
|
||||
/* These funcs are only used by pcm_mmap when sys/shm.h is available. */
|
||||
#ifdef HAVE_SYS_SHM_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <malloc.h>
|
||||
#include <string.h>
|
||||
|
|
@ -106,3 +111,5 @@ void snd_shm_area_destructor(void)
|
|||
shmdt(area->ptr);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue