test "x$prefix" = xNONE && prefix=$ac_default_prefix
-eval dir="$datadir"
-case "$dir" in
-/*) ;;
-*) dir="$prefix/share"
-esac
-AC_DEFINE_UNQUOTED(DATADIR, "$dir", [directory containing ALSA configuration database])
+dnl ALSA configuration directory
+AC_ARG_WITH(configdir,
+ AS_HELP_STRING([--with-configdir=dir],
+ [path where ALSA config files are stored]),
+ confdir="$withval", confdir="")
+if test -z "$confdir"; then
+ eval dir="$datadir"
+ case "$dir" in
+ /*) ;;
+ *) dir="$prefix/share"
+ esac
+ confdir="$dir/alsa"
+fi
+ALSA_CONFIG_DIR="$confdir"
+AC_DEFINE_UNQUOTED(ALSA_CONFIG_DIR, "$confdir", [directory containing ALSA configuration database])
+AC_SUBST(ALSA_CONFIG_DIR)
+dnl ALSA plugin directory
test "x$exec_prefix" = xNONE && exec_prefix=$prefix
-eval dir="$libdir"
-case "$dir" in
-/*) ;;
-*) dir="$dir"
-esac
-AC_DEFINE_UNQUOTED(PKGLIBDIR, "$dir/$PACKAGE", [directory containing ALSA add-on modules])
+AC_ARG_WITH(plugindir,
+ AS_HELP_STRING([--with-plugindir=dir],
+ [path where ALSA plugin files are stored]),
+ plugindir="$withval", plugindir="")
+if test -z "$plugindir"; then
+ eval dir="$libdir"
+ case "$dir" in
+ /*) ;;
+ *) dir="$dir"
+ esac
+ plugindir="$dir/$PACKAGE"
+fi
+AC_DEFINE_UNQUOTED(ALSA_PLUGIN_DIR, "plugindir", [directory containing ALSA add-on modules])
+ALSA_PLUGIN_DIR="$plugindir"
+AC_SUBST(ALSA_PLUGIN_DIR)
dnl Check for versioned symbols
AC_MSG_CHECKING(for versioned symbols)
-pkglibdir = $(libdir)/@PACKAGE@/smixer
+pkglibdir = @ALSA_PLUGIN_DIR@/smixer
AM_CFLAGS = -g -O2 -W -Wall
#include "mixer_abst.h"
#include "sbase.h"
-#define SO_PATH PKGLIBDIR "/smixer"
+#define SO_PATH ALSA_PLUGIN_DIR "/smixer"
int mixer_simple_basic_dlopen(snd_mixer_class_t *class,
bclass_base_ops_t **ops)
}
if (!strcmp(p1->value.s, "data")) {
delete_tree(instance, p1);
- return new_string(instance, DATADIR);
+ return new_string(instance, ALSA_CONFIG_DIR);
}
delete_tree(instance, p1);
return &alsa_lisp_nil;
if (err < 0)
return err;
if (!strncmp(str, "confdir:", 8)) {
- char *tmp = malloc(strlen(DATADIR "/alsa") + 1 + strlen(str + 8) + 1);
+ char *tmp = malloc(strlen(ALSA_CONFIG_DIR) + 1 + strlen(str + 8) + 1);
if (tmp == NULL) {
free(str);
return -ENOMEM;
}
- sprintf(tmp, DATADIR "/alsa/%s", str + 8);
+ sprintf(tmp, ALSA_CONFIG_DIR "/%s", str + 8);
free(str);
str = tmp;
}
#define ALSA_CONFIG_PATH_VAR "ALSA_CONFIG_PATH"
/** The name of the default files used by #snd_config_update. */
-#define ALSA_CONFIG_PATH_DEFAULT DATADIR "/alsa/alsa.conf"
+#define ALSA_CONFIG_PATH_DEFAULT ALSA_CONFIG_DIR "/alsa.conf"
/**
* \ingroup Config
EXTRA_DIST = $(cfg_files)
-alsadir = $(datadir)/alsa
+alsadir = @ALSA_CONFIG_DIR@
alsa_DATA = $(cfg_files)
-alsadir = $(datadir)/alsa/cards
+alsadir = @ALSA_CONFIG_DIR@/cards
cfg_files = aliases.conf \
AACI.conf \
ATIIXP.conf \
alsa_DATA = $(cfg_files)
if BUILD_ALISP
-SI7018dir = $(datadir)/alsa/cards/SI7018
+SI7018dir = @ALSA_CONFIG_DIR@/cards/SI7018
SI7018_files = \
SI7018/sndoc-mixer.alisp \
SI7018/sndop-mixer.alisp
EXTRA_DIST = $(cfg_files)
-alsadir = $(datadir)/alsa/pcm
+alsadir = @ALSA_CONFIG_DIR@/pcm
alsa_DATA = $(cfg_files)
err = snd_config_get_id(src, &id);
if (err < 0)
return err;
- return snd_config_imake_string(dst, id, DATADIR "/alsa");
+ return snd_config_imake_string(dst, id, ALSA_CONFIG_DIR);
}
#ifndef DOC_HIDDEN
SND_DLSYM_BUILD_VERSION(snd_func_datadir, SND_CONFIG_DLSYM_VERSION_EVALUATE);
build_in++;
}
if (*build_in == NULL) {
- buf1 = malloc(strlen(str) + sizeof(PKGLIBDIR) + 32);
+ buf1 = malloc(strlen(str) + sizeof(ALSA_PLUGIN_DIR) + 32);
if (buf1 == NULL) {
err = -ENOMEM;
goto _err;
}
lib = buf1;
- sprintf(buf1, "%s/libasound_module_ctl_%s.so", PKGLIBDIR, str);
+ sprintf(buf1, "%s/libasound_module_ctl_%s.so", ALSA_PLUGIN_DIR, str);
}
}
#ifndef PIC
#ifndef DOC_HIDDEN
-#define SO_PATH PKGLIBDIR "/smixer"
+#define SO_PATH ALSA_PLUGIN_DIR "/smixer"
typedef struct _class_priv {
char *device;
goto __error;
file = getenv("ALSA_MIXER_SIMPLE");
if (!file)
- file = DATADIR "/alsa/smixer.conf";
+ file = ALSA_CONFIG_DIR "/smixer.conf";
err = snd_config_top(&top);
if (err >= 0) {
err = snd_input_stdio_open(&input, file, "r");
libpcm_la_SOURCES += pcm_generic.c pcm_plugin.c
endif
if BUILD_PCM_PLUGIN_COPY
-libpcm_la_SOURCES += pcm_copy.c
+libpcm_la_SOURCES += pcm_copy.c pcm_demux.c
endif
if BUILD_PCM_PLUGIN_LINEAR
libpcm_la_SOURCES += pcm_linear.c
build_in++;
}
if (*build_in == NULL) {
- buf1 = malloc(strlen(str) + sizeof(PKGLIBDIR) + 32);
+ buf1 = malloc(strlen(str) + sizeof(ALSA_PLUGIN_DIR) + 32);
if (buf1 == NULL) {
err = -ENOMEM;
goto _err;
}
lib = buf1;
- sprintf(buf1, "%s/libasound_module_pcm_%s.so", PKGLIBDIR, str);
+ sprintf(buf1, "%s/libasound_module_pcm_%s.so", ALSA_PLUGIN_DIR, str);
}
}
#ifndef PIC
char lib_name[128], *lib = NULL;
if (!is_builtin_plugin(type)) {
snprintf(lib_name, sizeof(lib_name),
- "%s/libasound_module_rate_%s.so", PKGLIBDIR, type);
+ "%s/libasound_module_rate_%s.so", ALSA_PLUGIN_DIR, type);
lib = lib_name;
}
h = snd_dlopen(lib, RTLD_NOW);