mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
Allow build without libdl and libpthread
Allow building alsa-lib without libdl and libpthread. Added new options to configure, --with-libdl and --with-pthread.
This commit is contained in:
parent
9a75eec664
commit
70e4ec9d08
21 changed files with 118 additions and 25 deletions
|
|
@ -1,4 +1,7 @@
|
||||||
SUBDIRS=doc include src modules
|
SUBDIRS=doc include src
|
||||||
|
if BUILD_MODULES
|
||||||
|
SUBDIRS += modules
|
||||||
|
endif
|
||||||
if BUILD_PCM_PLUGIN_SHM
|
if BUILD_PCM_PLUGIN_SHM
|
||||||
SUBDIRS += aserver
|
SUBDIRS += aserver
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
53
configure.in
53
configure.in
|
|
@ -149,6 +149,44 @@ else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ALSA_DEPLIBS=""
|
||||||
|
if test "$softfloat" != "yes"; then
|
||||||
|
ALSA_DEPLIBS="-lm"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Check for libdl
|
||||||
|
AC_MSG_CHECKING(for libdl)
|
||||||
|
AC_ARG_WITH(libdl,
|
||||||
|
[ --with-libdl Use libdl for plugins (default = yes)],
|
||||||
|
[ have_libdl="$withval" ], [ have_libdl="yes" ])
|
||||||
|
if test "$have_libdl" = "yes"; then
|
||||||
|
AC_CHECK_LIB([dl], [dlsym], [HAVE_LIBDL="yes"])
|
||||||
|
if test "$HAVE_LIBDL" = "yes" ; then
|
||||||
|
ALSA_DEPLIBS="$ALSA_DEPLIBS -ldl"
|
||||||
|
AC_DEFINE([HAVE_LIBDL], 1, [Have libdl])
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL(BUILD_MODULES, test "$HAVE_LIBDL"="yes")
|
||||||
|
|
||||||
|
dnl Check for pthread
|
||||||
|
AC_MSG_CHECKING(for pthread)
|
||||||
|
AC_ARG_WITH(pthread,
|
||||||
|
[ --with-pthread Use pthread (default = yes)],
|
||||||
|
[ have_pthread="$withval" ], [ have_pthread="yes" ])
|
||||||
|
if test "$have_pthread" = "yes"; then
|
||||||
|
AC_CHECK_LIB([pthread], [pthread_join], [HAVE_LIBPTHREAD="yes"])
|
||||||
|
if test "$HAVE_LIBPTHREAD" = "yes"; then
|
||||||
|
ALSA_DEPLIBS="$ALSA_DEPLIBS -lpthread"
|
||||||
|
AC_DEFINE([HAVE_LIBPTHREAD], 1, [Have libpthread])
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(ALSA_DEPLIBS)
|
||||||
|
|
||||||
dnl Check for architecture
|
dnl Check for architecture
|
||||||
AC_MSG_CHECKING(for architecture)
|
AC_MSG_CHECKING(for architecture)
|
||||||
case "$target" in
|
case "$target" in
|
||||||
|
|
@ -320,6 +358,21 @@ if test "$build_pcm_ioplug" = "yes"; then
|
||||||
build_pcm_extplug="yes"
|
build_pcm_extplug="yes"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$HAVE_LIBDL" != "yes"; then
|
||||||
|
build_pcm_meter="no"
|
||||||
|
build_pcm_ladspa="no"
|
||||||
|
build_pcm_pcm_ioplug="no"
|
||||||
|
build_pcm_pcm_extplug="no"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$HAVE_LIBPTHREAD" != "yes"; then
|
||||||
|
build_pcm_share="no"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$softfloat" != "yes"; then
|
||||||
|
build_pcm_lfloat="no"
|
||||||
|
fi
|
||||||
|
|
||||||
AM_CONDITIONAL(BUILD_PCM_PLUGIN, test x$build_pcm_plugin = xyes)
|
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_COPY, test x$build_pcm_copy = xyes)
|
||||||
AM_CONDITIONAL(BUILD_PCM_PLUGIN_LINEAR, test x$build_pcm_linear = xyes)
|
AM_CONDITIONAL(BUILD_PCM_PLUGIN_LINEAR, test x$build_pcm_linear = xyes)
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,11 @@
|
||||||
#ifdef SUPPORT_RESMGR
|
#ifdef SUPPORT_RESMGR
|
||||||
#include <resmgr.h>
|
#include <resmgr.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_LIBDL
|
||||||
|
#include <dlfcn.h>
|
||||||
|
#else
|
||||||
|
#define RTLD_NOW 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#define _snd_config_iterator list_head
|
#define _snd_config_iterator list_head
|
||||||
#define _snd_interval sndrv_interval
|
#define _snd_interval sndrv_interval
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ SUBDIRS += alisp
|
||||||
libasound_la_LIBADD += alisp/libalisp.la
|
libasound_la_LIBADD += alisp/libalisp.la
|
||||||
endif
|
endif
|
||||||
SUBDIRS += compat conf
|
SUBDIRS += compat conf
|
||||||
libasound_la_LIBADD += compat/libcompat.la -lm -ldl -lpthread
|
libasound_la_LIBADD += compat/libcompat.la @ALSA_DEPLIBS@
|
||||||
|
|
||||||
libasound_la_LDFLAGS = -version-info $(COMPATNUM) $(VSYMS)
|
libasound_la_LDFLAGS = -version-info $(COMPATNUM) $(VSYMS)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -151,9 +151,11 @@ int snd_async_del_handler(snd_async_handler_t *handler)
|
||||||
if (!list_empty(&handler->hlist))
|
if (!list_empty(&handler->hlist))
|
||||||
goto _end;
|
goto _end;
|
||||||
switch (handler->type) {
|
switch (handler->type) {
|
||||||
|
#ifdef BUILD_PCM
|
||||||
case SND_ASYNC_HANDLER_PCM:
|
case SND_ASYNC_HANDLER_PCM:
|
||||||
err = snd_pcm_async(handler->u.pcm, -1, 1);
|
err = snd_pcm_async(handler->u.pcm, -1, 1);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case SND_ASYNC_HANDLER_CTL:
|
case SND_ASYNC_HANDLER_CTL:
|
||||||
err = snd_ctl_async(handler->u.ctl, -1, 1);
|
err = snd_ctl_async(handler->u.ctl, -1, 1);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
16
src/conf.c
16
src/conf.c
|
|
@ -415,12 +415,13 @@ beginning:</P>
|
||||||
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <pthread.h>
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include "local.h"
|
#include "local.h"
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
|
#include <pthread.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef DOC_HIDDEN
|
#ifndef DOC_HIDDEN
|
||||||
|
|
||||||
|
|
@ -3080,7 +3081,9 @@ int snd_config_update_r(snd_config_t **_top, snd_config_update_t **_update, cons
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
static pthread_mutex_t snd_config_update_mutex = PTHREAD_MUTEX_INITIALIZER;
|
static pthread_mutex_t snd_config_update_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Updates #snd_config by rereading the global configuration files (if needed).
|
* \brief Updates #snd_config by rereading the global configuration files (if needed).
|
||||||
|
|
@ -3099,9 +3102,13 @@ int snd_config_update(void)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
pthread_mutex_lock(&snd_config_update_mutex);
|
pthread_mutex_lock(&snd_config_update_mutex);
|
||||||
|
#endif
|
||||||
err = snd_config_update_r(&snd_config, &snd_config_global_update, NULL);
|
err = snd_config_update_r(&snd_config, &snd_config_global_update, NULL);
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
pthread_mutex_unlock(&snd_config_update_mutex);
|
pthread_mutex_unlock(&snd_config_update_mutex);
|
||||||
|
#endif
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3128,15 +3135,18 @@ int snd_config_update_free(snd_config_update_t *update)
|
||||||
*/
|
*/
|
||||||
int snd_config_update_free_global(void)
|
int snd_config_update_free_global(void)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
pthread_mutex_lock(&snd_config_update_mutex);
|
pthread_mutex_lock(&snd_config_update_mutex);
|
||||||
|
#endif
|
||||||
if (snd_config)
|
if (snd_config)
|
||||||
snd_config_delete(snd_config);
|
snd_config_delete(snd_config);
|
||||||
snd_config = NULL;
|
snd_config = NULL;
|
||||||
if (snd_config_global_update)
|
if (snd_config_global_update)
|
||||||
snd_config_update_free(snd_config_global_update);
|
snd_config_update_free(snd_config_global_update);
|
||||||
snd_config_global_update = NULL;
|
snd_config_global_update = NULL;
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
pthread_mutex_unlock(&snd_config_update_mutex);
|
pthread_mutex_unlock(&snd_config_update_mutex);
|
||||||
|
#endif
|
||||||
/* FIXME: better to place this in another place... */
|
/* FIXME: better to place this in another place... */
|
||||||
snd_dlobj_cache_cleanup();
|
snd_dlobj_cache_cleanup();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -946,6 +946,8 @@ int snd_func_card_name(snd_config_t **dst, snd_config_t *root,
|
||||||
SND_DLSYM_BUILD_VERSION(snd_func_card_name, SND_CONFIG_DLSYM_VERSION_EVALUATE);
|
SND_DLSYM_BUILD_VERSION(snd_func_card_name, SND_CONFIG_DLSYM_VERSION_EVALUATE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BUILD_PCM
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Returns the pcm identification of a device.
|
* \brief Returns the pcm identification of a device.
|
||||||
* \param dst The function puts the handle to the result configuration node
|
* \param dst The function puts the handle to the result configuration node
|
||||||
|
|
@ -1199,6 +1201,8 @@ int snd_func_private_pcm_subdevice(snd_config_t **dst, snd_config_t *root ATTRIB
|
||||||
SND_DLSYM_BUILD_VERSION(snd_func_private_pcm_subdevice, SND_CONFIG_DLSYM_VERSION_EVALUATE);
|
SND_DLSYM_BUILD_VERSION(snd_func_private_pcm_subdevice, SND_CONFIG_DLSYM_VERSION_EVALUATE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif /* BUILD_PCM */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Copies the specified configuration node.
|
* \brief Copies the specified configuration node.
|
||||||
* \param dst The function puts the handle to the result configuration node
|
* \param dst The function puts the handle to the result configuration node
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,6 @@ and IEC958 structure.
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <sys/poll.h>
|
#include <sys/poll.h>
|
||||||
#include "control_local.h"
|
#include "control_local.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,11 +48,13 @@ to reduce overhead accessing the real controls in kernel drivers.
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <pthread.h>
|
|
||||||
#ifndef DOC_HIDDEN
|
#ifndef DOC_HIDDEN
|
||||||
#define __USE_GNU
|
#define __USE_GNU
|
||||||
#endif
|
#endif
|
||||||
#include "control_local.h"
|
#include "control_local.h"
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
|
#include <pthread.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef DOC_HIDDEN
|
#ifndef DOC_HIDDEN
|
||||||
#define NOT_FOUND 1000000000
|
#define NOT_FOUND 1000000000
|
||||||
|
|
@ -420,17 +422,22 @@ static int hctl_compare(const void *a, const void *b) {
|
||||||
static void snd_hctl_sort(snd_hctl_t *hctl)
|
static void snd_hctl_sort(snd_hctl_t *hctl)
|
||||||
{
|
{
|
||||||
unsigned int k;
|
unsigned int k;
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
static pthread_mutex_t sync_lock = PTHREAD_MUTEX_INITIALIZER;
|
static pthread_mutex_t sync_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
#endif
|
||||||
|
|
||||||
assert(hctl);
|
assert(hctl);
|
||||||
assert(hctl->compare);
|
assert(hctl->compare);
|
||||||
INIT_LIST_HEAD(&hctl->elems);
|
INIT_LIST_HEAD(&hctl->elems);
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
pthread_mutex_lock(&sync_lock);
|
pthread_mutex_lock(&sync_lock);
|
||||||
|
#endif
|
||||||
compare_hctl = hctl;
|
compare_hctl = hctl;
|
||||||
qsort(hctl->pelems, hctl->count, sizeof(*hctl->pelems), hctl_compare);
|
qsort(hctl->pelems, hctl->count, sizeof(*hctl->pelems), hctl_compare);
|
||||||
|
#ifdef HAVE_LIBPTHREAD
|
||||||
pthread_mutex_unlock(&sync_lock);
|
pthread_mutex_unlock(&sync_lock);
|
||||||
|
#endif
|
||||||
for (k = 0; k < hctl->count; k++)
|
for (k = 0; k < hctl->count; k++)
|
||||||
list_add_tail(&hctl->pelems[k]->list, &hctl->elems);
|
list_add_tail(&hctl->pelems[k]->list, &hctl->elems);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
27
src/dlmisc.c
27
src/dlmisc.c
|
|
@ -28,7 +28,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
#include <dlfcn.h>
|
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
#include "local.h"
|
#include "local.h"
|
||||||
|
|
||||||
|
|
@ -53,13 +52,19 @@ void *snd_dlopen(const char *name, int mode)
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
return &snd_dlsym_start;
|
return &snd_dlsym_start;
|
||||||
#else
|
#else
|
||||||
|
#ifdef HAVE_LIBDL
|
||||||
if (name == NULL) {
|
if (name == NULL) {
|
||||||
Dl_info dlinfo;
|
Dl_info dlinfo;
|
||||||
if (dladdr(snd_dlopen, &dlinfo) > 0)
|
if (dladdr(snd_dlopen, &dlinfo) > 0)
|
||||||
name = dlinfo.dli_fname;
|
name = dlinfo.dli_fname;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_LIBDL
|
||||||
return dlopen(name, mode);
|
return dlopen(name, mode);
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -76,7 +81,11 @@ int snd_dlclose(void *handle)
|
||||||
if (handle == &snd_dlsym_start)
|
if (handle == &snd_dlsym_start)
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_LIBDL
|
||||||
return dlclose(handle);
|
return dlclose(handle);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -91,6 +100,7 @@ int snd_dlclose(void *handle)
|
||||||
*/
|
*/
|
||||||
static int snd_dlsym_verify(void *handle, const char *name, const char *version)
|
static int snd_dlsym_verify(void *handle, const char *name, const char *version)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_LIBDL
|
||||||
int res;
|
int res;
|
||||||
char *vname;
|
char *vname;
|
||||||
|
|
||||||
|
|
@ -107,6 +117,9 @@ static int snd_dlsym_verify(void *handle, const char *name, const char *version)
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
SNDERR("unable to verify version for symbol %s", name);
|
SNDERR("unable to verify version for symbol %s", name);
|
||||||
return res;
|
return res;
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -139,10 +152,16 @@ void *snd_dlsym(void *handle, const char *name, const char *version)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
err = snd_dlsym_verify(handle, name, version);
|
#ifdef HAVE_LIBDL
|
||||||
if (err < 0)
|
if (version) {
|
||||||
return NULL;
|
err = snd_dlsym_verify(handle, name, version);
|
||||||
|
if (err < 0)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return dlsym(handle, name);
|
return dlsym(handle, name);
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include "hwdep_local.h"
|
#include "hwdep_local.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,14 +82,14 @@ static int try_open(snd_mixer_class_t *class, const char *lib)
|
||||||
free(xlib);
|
free(xlib);
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
}
|
}
|
||||||
event_func = dlsym(h, "alsa_mixer_simple_event");
|
event_func = snd_dlsym(h, "alsa_mixer_simple_event", NULL);
|
||||||
if (event_func == NULL) {
|
if (event_func == NULL) {
|
||||||
SNDERR("Symbol 'alsa_mixer_simple_event' was not found in '%s'", xlib);
|
SNDERR("Symbol 'alsa_mixer_simple_event' was not found in '%s'", xlib);
|
||||||
snd_dlclose(h);
|
snd_dlclose(h);
|
||||||
free(xlib);
|
free(xlib);
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
}
|
}
|
||||||
init_func = dlsym(h, "alsa_mixer_simple_init");
|
init_func = snd_dlsym(h, "alsa_mixer_simple_init", NULL);
|
||||||
if (init_func == NULL) {
|
if (init_func == NULL) {
|
||||||
SNDERR("Symbol 'alsa_mixer_simple_init' was not found in '%s'", xlib);
|
SNDERR("Symbol 'alsa_mixer_simple_init' was not found in '%s'", xlib);
|
||||||
snd_dlclose(h);
|
snd_dlclose(h);
|
||||||
|
|
|
||||||
|
|
@ -634,7 +634,6 @@ playback devices.
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <sys/poll.h>
|
#include <sys/poll.h>
|
||||||
#include <sys/shm.h>
|
#include <sys/shm.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <dlfcn.h>
|
|
||||||
#include "pcm_local.h"
|
#include "pcm_local.h"
|
||||||
#include "pcm_generic.h"
|
#include "pcm_generic.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "pcm_local.h"
|
#include "pcm_local.h"
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@
|
||||||
*/
|
*/
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <byteswap.h>
|
#include <byteswap.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
#include "pcm_local.h"
|
#include "pcm_local.h"
|
||||||
#include "pcm_plugin.h"
|
#include "pcm_plugin.h"
|
||||||
#include "pcm_rate.h"
|
#include "pcm_rate.h"
|
||||||
|
|
@ -1326,7 +1325,7 @@ int snd_pcm_rate_open(snd_pcm_t **pcmp, const char *name, snd_pcm_format_t sform
|
||||||
free(rate);
|
free(rate);
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
open_func = dlsym(h, open_name);
|
open_func = snd_dlsym(h, open_name, NULL);
|
||||||
if (! open_func) {
|
if (! open_func) {
|
||||||
SNDERR("Cannot find function %s", open_name);
|
SNDERR("Cannot find function %s", open_name);
|
||||||
snd_dlclose(h);
|
snd_dlclose(h);
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,6 @@ This example shows open and read/write rawmidi operations.
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
#include "rawmidi_local.h"
|
#include "rawmidi_local.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -777,7 +777,6 @@ void event_filter(snd_seq_t *seq, snd_seq_event_t *ev)
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <sys/poll.h>
|
#include <sys/poll.h>
|
||||||
#include "seq_local.h"
|
#include "seq_local.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,6 @@ This example shows opening a timer device and reading of timer events.
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include "timer_local.h"
|
#include "timer_local.h"
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include "timer_local.h"
|
#include "timer_local.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ Description: Advanced Linux Sound Architecture (ALSA) - Library
|
||||||
Version: @VERSION@
|
Version: @VERSION@
|
||||||
Requires:
|
Requires:
|
||||||
Libs: -L${libdir} -lasound
|
Libs: -L${libdir} -lasound
|
||||||
Libs.private: -lm -ldl -lpthread
|
Libs.private: @ALSA_DEPLIBS@
|
||||||
# -I${includedir}/alsa below is just for backward compatibility
|
# -I${includedir}/alsa below is just for backward compatibility
|
||||||
# (it was set so mistakely in the older version)
|
# (it was set so mistakely in the older version)
|
||||||
Cflags: -I${includedir} -I${includedir}/alsa
|
Cflags: -I${includedir} -I${includedir}/alsa
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue