conf: Move UCM profile snippets into components subdirectory
[alsa-lib.git] / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 AC_PREREQ(2.59)
3 AC_INIT(alsa-lib, 1.1.7)
4
5 AC_CONFIG_SRCDIR([src/control/control.c])
6 AC_CONFIG_MACRO_DIR([m4])
7
8 dnl *************************************************
9 dnl current:revision:age
10 dnl change (without API) = c:r+1:a
11 dnl change API = c+1:0:a
12 dnl add API = c+1:0:a+1
13 dnl remove API = c+1:0:0
14 dnl *************************************************
15 AC_CANONICAL_HOST
16 AM_INIT_AUTOMAKE
17 eval LIBTOOL_VERSION_INFO="2:0:0"
18 dnl *************************************************
19 AM_CONDITIONAL([INSTALL_M4], [test -n "${ACLOCAL}"])
20
21 AM_MAINTAINER_MODE([enable])
22
23 # Test for new silent rules and enable only if they are available
24 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
25
26 AC_PREFIX_DEFAULT(/usr)
27
28 dnl Checks for programs.
29
30 AC_PROG_CC
31 AC_PROG_CPP
32 AC_USE_SYSTEM_EXTENSIONS
33 AC_PROG_INSTALL
34 AC_PROG_LN_S 
35 AC_DISABLE_STATIC
36 AC_LIBTOOL_DLOPEN
37 AM_PROG_LIBTOOL
38
39 CC_NOUNDEFINED
40
41 dnl Checks for header files.
42 AC_HEADER_STDC
43 AC_CONFIG_HEADERS(include/config.h)
44
45 dnl Checks for typedefs, structures, and compiler characteristics.
46 AC_C_CONST
47 AC_C_INLINE
48 AC_HEADER_TIME
49
50 dnl Checks for library functions.
51 AC_PROG_GCC_TRADITIONAL
52 AC_CHECK_FUNCS([uselocale])
53
54 SAVE_LIBRARY_VERSION
55 AC_SUBST(LIBTOOL_VERSION_INFO)
56
57 test "x$prefix" = xNONE && prefix=$ac_default_prefix
58
59 dnl Do not build static and shared libraries together
60 if test "$enable_static" = "$enable_shared" -a "$enable_static" = "yes"; then
61 cat <<EOF
62   Please, do not try to compile static and shared libraries together.
63   See INSTALL file for more details (do not use --enable-shared=yes with
64   --enable-static=yes).
65 EOF
66   exit 1
67 fi
68
69 dnl ALSA configuration directory
70 AC_ARG_WITH(configdir,
71     AS_HELP_STRING([--with-configdir=dir],
72         [path where ALSA config files are stored]),
73     confdir="$withval", confdir="")
74 if test -z "$confdir"; then
75     eval dir="$datadir"
76     case "$dir" in
77     /*) ;;
78     *) dir="$prefix/share"
79     esac
80     confdir="$dir/alsa"
81 fi
82 ALSA_CONFIG_DIR="$confdir"
83 AC_DEFINE_UNQUOTED(ALSA_CONFIG_DIR, "$confdir", [directory containing ALSA configuration database])
84 AC_SUBST(ALSA_CONFIG_DIR)
85
86 dnl ALSA plugin directory
87 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
88
89 AC_ARG_WITH(plugindir,
90     AS_HELP_STRING([--with-plugindir=dir],
91         [path where ALSA plugin files are stored]),
92     plugindir="$withval", plugindir="")
93 if test -z "$plugindir"; then
94     eval dir="$libdir"
95     case "$dir" in
96     /*) ;;
97     *) dir="$dir"
98     esac
99     plugindir="$dir/$PACKAGE"
100 fi
101 AC_DEFINE_UNQUOTED(ALSA_PLUGIN_DIR, "$plugindir", [directory containing ALSA add-on modules])
102 ALSA_PLUGIN_DIR="$plugindir"
103 AC_SUBST(ALSA_PLUGIN_DIR)
104
105 AC_ARG_WITH(pkgconfdir,
106     AS_HELP_STRING([--with-pkgconfdir=dir],
107         [path where pkgconfig files are stored]),
108     pkgconfdir="$withval", pkgconfdir="")
109 if test -z "$pkgconfdir"; then
110     eval dir="$libdir"
111     case "$dir" in
112     /*) ;;
113     *) dir="$dir"
114     esac
115     pkgconfdir="$dir/pkgconfig"
116 fi
117 AC_DEFINE_UNQUOTED(ALSA_PKGCONF_DIR, "$pkgconfdir", [directory containing pkgconfig files])
118 ALSA_PKGCONF_DIR="$pkgconfdir"
119 AC_SUBST(ALSA_PKGCONF_DIR)
120
121 dnl Check for versioned symbols
122 AC_MSG_CHECKING(for versioned symbols)
123 AC_ARG_WITH(versioned,
124   AS_HELP_STRING([--with-versioned],
125     [shared library will be compiled with versioned symbols (default = yes)]),
126   versioned="$withval", versioned="yes")
127 if test "$versioned" = "yes"; then
128   # it seems that GNU ld versions since 2.10 are not broken
129   xres=`grep '^VERSION=' ${srcdir}/ltmain.sh | cut -d = -f 2 | cut -d \" -f 2`
130   major=`echo $xres | cut -d . -f 1`
131   minor=`echo $xres | cut -d . -f 2`
132   pass=0
133   if test $major -eq 1 && test $minor -gt 3; then
134     pass=1
135   else
136     if test $major -gt 1; then
137       pass=1
138     fi
139   fi
140   if test $pass -eq 1; then
141     AC_DEFINE(VERSIONED_SYMBOLS,,[compiled with versioned symbols])
142     AC_MSG_RESULT(yes)
143   else
144     AC_MSG_RESULT(broken libtool - use libtool v1.4+; no versions)
145   fi
146 else
147   AC_MSG_RESULT(no)
148 fi
149 AM_CONDITIONAL([VERSIONED_SYMBOLS], [test x$versioned = xyes])
150
151 dnl Check for symbolic-functions
152 AC_MSG_CHECKING(for symbolic-functions)
153 AC_ARG_ENABLE(symbolic-functions,
154   AS_HELP_STRING([--enable-symbolic-functions],
155     [use -Bsymbolic-functions option if available (optmization for size and speed)]),
156   symfuncs="$enableval", symfuncs="no")
157 if test "$symfuncs" = "yes"; then
158   if ld --help | grep -q -- '-Bsymbolic-functions'; then
159     AC_MSG_RESULT(yes)
160   else
161     AC_MSG_RESULT(not supported by ld)
162     symfuncs="no"
163   fi
164 else
165   AC_MSG_RESULT(no)
166 fi
167 AM_CONDITIONAL([SYMBOLIC_FUNCTIONS], [test x"$symfuncs" = xyes])
168
169 dnl See if toolchain has a custom prefix for symbols ...
170 AC_MSG_CHECKING(for custom symbol prefixes)
171 SYMBOL_PREFIX=` \
172         echo "PREFIX=__USER_LABEL_PREFIX__" \
173                 | ${CPP-${CC-gcc} -E} - 2>&1 \
174                 | ${EGREP-grep} "^PREFIX=" \
175                 | ${SED-sed} "s:^PREFIX=::"`
176 AC_DEFINE_UNQUOTED([__SYMBOL_PREFIX], "$SYMBOL_PREFIX", [Toolchain Symbol Prefix])
177 AC_SUBST(SYMBOL_PREFIX)
178 AC_MSG_RESULT($SYMBOL_PREFIX)
179
180 dnl Check for debug...
181 AC_MSG_CHECKING(for debug)
182 AC_ARG_WITH(debug,
183   AS_HELP_STRING([--with-debug],
184     [library will be compiled with asserts (default = yes)]),
185   debug="$withval", debug="yes")
186 if test "$debug" = "yes"; then
187   AC_MSG_RESULT(yes)
188 else
189   AC_DEFINE(NDEBUG,,[No assert debug])
190   AC_MSG_RESULT(no)
191 fi
192
193 if test "$debug" = "yes"; then
194   AC_MSG_CHECKING(for debug assert)
195   AC_ARG_ENABLE(debug-assert,
196     AS_HELP_STRING([--enable-debug],
197       [enable assert call at the default error message handler]),
198     debug_assert="$enableval", debug_assert="no")
199   if test "$debug_assert" = "yes"; then
200     AC_MSG_RESULT(yes)
201     AC_DEFINE(ALSA_DEBUG_ASSERT,,[Enable assert at error message handler])
202   else
203     AC_MSG_RESULT(no)
204   fi
205 fi
206
207 dnl Temporary directory
208 AC_MSG_CHECKING(for tmpdir)
209 AC_ARG_WITH(tmpdir,
210   AS_HELP_STRING([--with-tmpdir=directory],
211     [directory to put tmp socket files (/tmp)]),
212   tmpdir="$withval", tmpdir="/tmp")
213 AC_MSG_RESULT($tmpdir)
214 AC_DEFINE_UNQUOTED(TMPDIR, "$tmpdir", [directory to put tmp socket files])
215
216 dnl Check for softfloat...
217 AC_MSG_CHECKING(for softfloat)
218 AC_ARG_WITH(softfloat,
219   AS_HELP_STRING([--with-softfloat],
220     [do you have floating point unit on this machine? (optional)]),
221   [case "$withval" in
222         y|yes) softfloat=yes ;;
223         *) softfloat=no ;;
224    esac],)
225 if test "$softfloat" = "yes" ; then
226   AC_DEFINE(HAVE_SOFT_FLOAT, "1", [Avoid calculation in float])
227   AC_MSG_RESULT(yes)
228 else
229   AC_MSG_RESULT(no)
230 fi
231
232 ALSA_DEPLIBS=""
233 if test "$softfloat" != "yes"; then
234   ALSA_DEPLIBS="-lm"
235 fi
236
237 dnl Check for libdl
238 AC_MSG_CHECKING(for libdl)
239 AC_ARG_WITH(libdl,
240   AS_HELP_STRING([--with-libdl], [Use libdl for plugins (default = yes)]),
241   [ have_libdl="$withval" ], [ have_libdl="yes" ])
242 HAVE_LIBDL=
243 if test "$have_libdl" = "yes"; then
244   AC_CHECK_LIB([dl], [dlsym], [HAVE_LIBDL="yes"])
245   if test "$HAVE_LIBDL" = "yes" ; then
246     ALSA_DEPLIBS="$ALSA_DEPLIBS -ldl"
247     AC_DEFINE([HAVE_LIBDL], 1, [Have libdl])
248   fi
249 else
250   AC_MSG_RESULT(no)
251 fi
252 AM_CONDITIONAL([BUILD_MODULES], [test "$HAVE_LIBDL" = "yes"])
253
254 dnl Check for pthread
255 AC_MSG_CHECKING(for pthread)
256 AC_ARG_WITH(pthread,
257   AS_HELP_STRING([--with-pthread], [Use pthread (default = yes)]),
258   [ have_pthread="$withval" ], [ have_pthread="yes" ])
259 if test "$have_pthread" = "yes"; then
260   AC_CHECK_LIB([pthread], [pthread_join], [HAVE_LIBPTHREAD="yes"])
261   if test "$HAVE_LIBPTHREAD" = "yes"; then
262     ALSA_DEPLIBS="$ALSA_DEPLIBS -lpthread"
263     AC_DEFINE([HAVE_LIBPTHREAD], 1, [Have libpthread])
264   fi
265 else
266   AC_MSG_RESULT(no)
267 fi
268
269 dnl Check for pthread
270 if test "$HAVE_LIBPTHREAD" = "yes"; then
271   AC_CHECK_DECL(PTHREAD_MUTEX_RECURSIVE,
272     AC_DEFINE(HAVE_PTHREAD_MUTEX_RECURSIVE, [],
273       [Define if your pthreads implementation have PTHREAD_MUTEX_RECURSIVE]),
274     ,
275     [#include <pthread.h>])
276 fi
277
278 dnl Check for __thread
279 AC_MSG_CHECKING([for __thread])
280 AC_LINK_IFELSE([AC_LANG_PROGRAM([#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && ((__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || (__GNUC__ == 4 && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ < 2))
281 #error gcc has this bug: http://gcc.gnu.org/ml/gcc-bugs/2006-09/msg02275.html
282 #endif], [static __thread int p = 0])],
283 [AC_DEFINE(HAVE___THREAD, 1,
284 Define to 1 if compiler supports __thread)
285 AC_MSG_RESULT([yes])],
286 [AC_MSG_RESULT([no])])
287
288 dnl Check for librt
289 AC_MSG_CHECKING(for librt)
290 AC_ARG_WITH(librt,
291   AS_HELP_STRING([--with-librt], [Use librt for monotonic clock (default = yes)]),
292   [ have_librt="$withval" ], [ have_librt="yes" ])
293 if test "$have_librt" = "yes"; then
294   AC_CHECK_LIB([rt], [clock_gettime], [HAVE_LIBRT="yes"])
295   if test "$HAVE_LIBRT" = "yes" ; then
296     ALSA_DEPLIBS="$ALSA_DEPLIBS -lrt"
297     AC_DEFINE([HAVE_LIBRT], 1, [Have librt])
298     AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Have clock gettime])
299   fi
300 else
301   AC_MSG_RESULT(no)
302 fi
303
304 AC_SUBST(ALSA_DEPLIBS)
305
306 dnl Check for use of wordexp...
307 AC_MSG_CHECKING(for use of wordexp)
308 AC_ARG_WITH(wordexp,
309   AS_HELP_STRING([--with-wordexp],
310     [Use wordexp when expanding configs (default = no)]),
311   [case "$withval" in
312         y|yes) wordexp=yes ;;
313         *) wordexp=no ;;
314    esac],)
315 if test "$wordexp" = "yes" ; then
316   AC_DEFINE(HAVE_WORDEXP, "1", [Enable use of wordexp])
317   AC_MSG_RESULT(yes)
318   AC_CHECK_HEADER([wordexp.h],[], [AC_MSG_ERROR([Couldn't find wordexp.h])])
319 else
320   AC_MSG_RESULT(no)
321 fi
322
323 dnl Check for headers
324 AC_CHECK_HEADERS([endian.h sys/endian.h sys/shm.h])
325
326 dnl Check for resmgr support...
327 AC_MSG_CHECKING(for resmgr support)
328 AC_ARG_ENABLE(resmgr,
329   AS_HELP_STRING([--enable-resmgr], [support resmgr (optional)]),
330   resmgr="$enableval", resmgr="no")
331 AC_MSG_RESULT($resmgr)
332 if test "$resmgr" = "yes"; then
333   AC_CHECK_LIB(resmgr, rsm_open_device,,
334     AC_ERROR([Cannot find libresmgr]))
335   AC_DEFINE(SUPPORT_RESMGR, "1", [Support resmgr with alsa-lib])
336 fi
337
338 dnl Check for aload* support...
339 AC_MSG_CHECKING(for aload* support)
340 AC_ARG_ENABLE(aload,
341   AS_HELP_STRING([--disable-aload], [disable reading /dev/aload*]),
342   aload="$enableval", aload="yes")
343 AC_MSG_RESULT($aload)
344 if test "$aload" = "yes"; then
345   AC_DEFINE(SUPPORT_ALOAD, "1", [Support /dev/aload* access for auto-loading])
346 fi
347
348 dnl Check for non-standard /dev directory
349 AC_MSG_CHECKING([for ALSA device file directory])
350 AC_ARG_WITH(alsa-devdir,
351   AS_HELP_STRING([--with-alsa-devdir=dir],
352     [directory with ALSA device files (default /dev/snd)]),
353   [alsa_dev_dir="$withval"],
354   [alsa_dev_dir="/dev/snd"])
355 dnl make sure it has a trailing slash
356 if echo "$alsa_dev_dir" | grep -v '/$' > /dev/null; then
357   alsa_dev_dir="$alsa_dev_dir/"
358 fi
359 AC_DEFINE_UNQUOTED(ALSA_DEVICE_DIRECTORY, "$alsa_dev_dir", [Directory with ALSA device files])
360 AC_MSG_RESULT([$alsa_dev_dir])
361
362 AC_MSG_CHECKING([for aload* device file directory])
363 AC_ARG_WITH(aload-devdir,
364   AS_HELP_STRING([--with-aload-devdir=dir],
365     [directory with aload* device files (default /dev)]),
366   [aload_dev_dir="$withval"],
367   [aload_dev_dir="/dev"])
368 if echo "$aload_dev_dir" | grep -v '/$' > /dev/null; then
369   aload_dev_dir="$aload_dev_dir/"
370 fi
371 AC_DEFINE_UNQUOTED(ALOAD_DEVICE_DIRECTORY, "$aload_dev_dir", [Directory with aload* device files])
372 AC_MSG_RESULT([$aload_dev_dir])
373
374 dnl Build conditions
375 AC_ARG_ENABLE(mixer,
376   AS_HELP_STRING([--disable-mixer], [disable the mixer component]),
377   [build_mixer="$enableval"], [build_mixer="yes"])
378 AC_ARG_ENABLE(pcm,
379   AS_HELP_STRING([--disable-pcm], [disable the PCM component]),
380   [build_pcm="$enableval"], [build_pcm="yes"])
381 AC_ARG_ENABLE(rawmidi,
382   AS_HELP_STRING([--disable-rawmidi], [disable the raw MIDI component]),
383   [build_rawmidi="$enableval"], [build_rawmidi="yes"])
384 AC_ARG_ENABLE(hwdep,
385   AS_HELP_STRING([--disable-hwdep], [disable the hwdep component]),
386   [build_hwdep="$enableval"], [build_hwdep="yes"])
387 AC_ARG_ENABLE(seq,
388   AS_HELP_STRING([--disable-seq], [disable the sequencer component]),
389   [build_seq="$enableval"], [build_seq="yes"])
390 AC_ARG_ENABLE(ucm,
391   AS_HELP_STRING([--disable-ucm], [disable the use-case-manager component]),
392   [build_ucm="$enableval"], [build_ucm="yes"])
393 AC_ARG_ENABLE(topology,
394   AS_HELP_STRING([--disable-topology], [disable the DSP topology component]),
395   [build_topology="$enableval"], [build_topology="yes"])
396 AC_ARG_ENABLE(alisp,
397   AS_HELP_STRING([--enable-alisp], [enable the alisp component]),
398   [build_alisp="$enableval"], [build_alisp="no"])
399 test "$softfloat" = "yes" && build_alisp="no"
400 AC_ARG_ENABLE(old-symbols,
401   AS_HELP_STRING([--disable-old-symbols], [disable old obsoleted symbols]),
402   [keep_old_symbols="$enableval"], [keep_old_symbols="yes"])
403 AM_CONDITIONAL([KEEP_OLD_SYMBOLS], [test x$keep_old_symbols = xyes])
404
405 AC_ARG_ENABLE(mixer-modules,
406   AS_HELP_STRING([--enable-mixer-modules], [enable the additional mixer modules (experimental)]),
407   [build_mixer_modules="$enableval"], [build_mixer_modules="no"])
408
409 AC_ARG_ENABLE(mixer-pymods,
410   AS_HELP_STRING([--enable-mixer-pymods], [enable the mixer python modules (experimental)]),
411   [build_mixer_pymodules="$enableval"], [build_mixer_pymodules="no"])
412
413 AC_ARG_ENABLE(python,
414   AS_HELP_STRING([--disable-python], [disable the python components]),
415   [build_python="$enableval"], [build_python="yes"])
416
417 AC_ARG_ENABLE(python2,
418   AS_HELP_STRING([--enable-python2], [prefer python2]),
419   [build_python2="$enableval"], [build_python2="no"])
420 PYTHON_LIBS=""
421 PYTHON_INCLUDES=""
422 if test "$build_python" = "yes" -a "$build_mixer_pymodules" = "yes"; then
423   pythonlibs0=
424   pythoninc0=
425   if test "$build_python2" != "yes"; then
426     pythonlibs0=$(python3-config --libs)
427     pythoninc0=$(python3-config --includes)
428   fi
429   if test -z "$pythonlibs0"; then
430     pythonlibs0=$(python-config --libs)
431     pythoninc0=$(python-config --includes)
432   fi
433   AC_ARG_WITH(pythonlibs,
434     AS_HELP_STRING([--with-pythonlibs=ldflags],
435       [specify python libraries (-lpthread -lm -ldl -lpython2.4)]),
436     pythonlibs="$withval", pythonlibs=$pythonlibs0)
437   AC_ARG_WITH(pythonincludes,
438     AS_HELP_STRING([--with-pythonincludes=Cflags],
439       [specify python C header files (-I/usr/include/python)]),
440     pythonincludes="$withval", pythonincludes=$pythoninc0)
441   if test -z "$pythonlibs"; then
442     echo "Unable to determine python libraries! Probably python-config is not"
443     echo "available on this system. Please, use --with-pythonlibs and"
444     echo "--with-pythonincludes options. Python components are disabled in this build."
445     build_python="no"
446   else
447     PYTHON_LIBS="$pythonlibs"
448     PYTHON_INCLUDES="$pythonincludes"
449   fi
450 fi
451 if test "$build_python" != "yes"; then
452   build_mixer_pymodules=
453 fi
454 AC_SUBST(PYTHON_LIBS)
455 AC_SUBST(PYTHON_INCLUDES)
456
457 AM_CONDITIONAL([BUILD_MIXER], [test x$build_mixer = xyes])
458 AM_CONDITIONAL([BUILD_PCM], [test x$build_pcm = xyes])
459 AM_CONDITIONAL([BUILD_RAWMIDI], [test x$build_rawmidi = xyes])
460 AM_CONDITIONAL([BUILD_HWDEP], [test x$build_hwdep = xyes])
461 AM_CONDITIONAL([BUILD_SEQ], [test x$build_seq = xyes])
462 AM_CONDITIONAL([BUILD_UCM], [test x$build_ucm = xyes])
463 AM_CONDITIONAL([BUILD_TOPOLOGY], [test x$build_topology = xyes])
464 AM_CONDITIONAL([BUILD_ALISP], [test x$build_alisp = xyes])
465 AM_CONDITIONAL([BUILD_MIXER_MODULES], [test x$build_mixer_modules = xyes])
466 AM_CONDITIONAL([BUILD_MIXER_PYMODULES], [test x$build_mixer_pymodules = xyes])
467
468 if test "$build_mixer" = "yes"; then
469   AC_DEFINE([BUILD_MIXER], "1", [Build mixer component])
470 fi
471 if test "$build_pcm" = "yes"; then
472   AC_DEFINE([BUILD_PCM], "1", [Build PCM component])
473 fi
474 if test "$build_rawmidi" = "yes"; then
475   AC_DEFINE([BUILD_RAWMIDI], "1", [Build raw MIDI component])
476 fi
477 if test "$build_hwdep" = "yes"; then
478   AC_DEFINE([BUILD_HWDEP], "1", [Build hwdep component])
479 fi
480 if test "$build_seq" = "yes"; then
481   AC_DEFINE([BUILD_SEQ], "1", [Build sequencer component])
482 fi
483 if test "$build_ucm" = "yes"; then
484   AC_DEFINE([BUILD_UCM], "1", [Build UCM component])
485 fi
486 if test "$build_topology" = "yes"; then
487   AC_DEFINE([BUILD_TOPOLOGY], "1", [Build DSP Topology component])
488 fi
489
490 dnl PCM Plugins
491
492 if test "$build_pcm" = "yes"; then
493 AC_ARG_WITH(pcm-plugins,
494   AS_HELP_STRING([--with-pcm-plugins=<list>],
495     [build PCM plugins (default = all)]),
496   [pcm_plugins="$withval"], [pcm_plugins="all"])
497 else
498 pcm_plugins=""
499 fi
500
501 dnl check atomics for pcm_meter
502
503 AC_MSG_CHECKING([whether GCC supports builtin atomic intrinsics])
504 if test -z "$gcc_have_atomics"; then
505   gcc_have_atomics=no
506   AC_TRY_LINK([],
507     [int i;
508      __atomic_load_n(&i, __ATOMIC_SEQ_CST);
509      __atomic_add_fetch(&i, 0, __ATOMIC_SEQ_CST);
510     ],
511     [gcc_have_atomics=yes],
512     [gcc_have_atomics=no])
513 fi
514 AC_MSG_RESULT($gcc_have_atomics)
515
516 PCM_PLUGIN_LIST="copy linear route mulaw alaw adpcm rate plug multi shm file null empty share meter hooks lfloat ladspa dmix dshare dsnoop asym iec958 softvol extplug ioplug mmap_emul"
517
518 build_pcm_plugin="no"
519 for t in $PCM_PLUGIN_LIST; do
520   eval build_pcm_$t="no"
521 done
522
523 pcm_plugins=`echo $pcm_plugins | sed 's/,/ /g'`
524 for p in $pcm_plugins; do
525   for t in $PCM_PLUGIN_LIST; do
526     if test "$p" = "$t" -o "$p" = "all"; then
527       eval build_pcm_$t="yes"
528       build_pcm_plugin="yes"
529     fi
530   done
531 done
532
533 dnl special dependencies
534 if test "$build_pcm_plug" = "yes"; then
535   build_pcm_linear="yes"
536   build_pcm_copy="yes"
537 fi
538
539 if test "$build_pcm_ioplug" = "yes"; then
540   build_pcm_extplug="yes"
541 fi
542
543 if test "$HAVE_LIBDL" != "yes"; then
544   build_pcm_meter="no"
545   build_pcm_ladspa="no"
546   build_pcm_pcm_ioplug="no"
547   build_pcm_pcm_extplug="no"
548 fi
549
550 if test "$HAVE_LIBPTHREAD" != "yes"; then
551   build_pcm_share="no"
552 fi
553
554 if test "$softfloat" = "yes"; then
555   build_pcm_lfloat="no"
556   build_pcm_ladspa="no"
557 fi
558
559 if test "$gcc_have_atomics" != "yes"; then
560   build_pcm_meter="no"
561 fi
562
563 if test "$ac_cv_header_sys_shm_h" != "yes"; then
564   build_pcm_dmix="no"
565   build_pcm_dshare="no"
566   build_pcm_dsnoop="no"
567   build_pcm_shm="no"
568 fi
569
570 AM_CONDITIONAL([BUILD_PCM_PLUGIN], [test x$build_pcm_plugin = xyes])
571 AM_CONDITIONAL([BUILD_PCM_PLUGIN_COPY], [test x$build_pcm_copy = xyes])
572 AM_CONDITIONAL([BUILD_PCM_PLUGIN_LINEAR], [test x$build_pcm_linear = xyes])
573 AM_CONDITIONAL([BUILD_PCM_PLUGIN_ROUTE], [test x$build_pcm_route = xyes])
574 AM_CONDITIONAL([BUILD_PCM_PLUGIN_MULAW], [test x$build_pcm_mulaw = xyes])
575 AM_CONDITIONAL([BUILD_PCM_PLUGIN_ALAW], [test x$build_pcm_alaw = xyes])
576 AM_CONDITIONAL([BUILD_PCM_PLUGIN_ADPCM], [test x$build_pcm_adpcm = xyes])
577 AM_CONDITIONAL([BUILD_PCM_PLUGIN_RATE], [test x$build_pcm_rate = xyes])
578 AM_CONDITIONAL([BUILD_PCM_PLUGIN_PLUG], [test x$build_pcm_plug = xyes])
579 AM_CONDITIONAL([BUILD_PCM_PLUGIN_MULTI], [test x$build_pcm_multi = xyes])
580 AM_CONDITIONAL([BUILD_PCM_PLUGIN_SHM], [test x$build_pcm_shm = xyes])
581 AM_CONDITIONAL([BUILD_PCM_PLUGIN_FILE], [test x$build_pcm_file = xyes])
582 AM_CONDITIONAL([BUILD_PCM_PLUGIN_NULL], [test x$build_pcm_null = xyes])
583 AM_CONDITIONAL([BUILD_PCM_PLUGIN_EMPTY], [test x$build_pcm_empty = xyes])
584 AM_CONDITIONAL([BUILD_PCM_PLUGIN_SHARE], [test x$build_pcm_share = xyes])
585 AM_CONDITIONAL([BUILD_PCM_PLUGIN_METER], [test x$build_pcm_meter = xyes])
586 AM_CONDITIONAL([BUILD_PCM_PLUGIN_HOOKS], [test x$build_pcm_hooks = xyes])
587 AM_CONDITIONAL([BUILD_PCM_PLUGIN_LFLOAT], [test x$build_pcm_lfloat = xyes])
588 AM_CONDITIONAL([BUILD_PCM_PLUGIN_LADSPA], [test x$build_pcm_ladspa = xyes])
589 AM_CONDITIONAL([BUILD_PCM_PLUGIN_DMIX], [test x$build_pcm_dmix = xyes])
590 AM_CONDITIONAL([BUILD_PCM_PLUGIN_DSHARE], [test x$build_pcm_dshare = xyes])
591 AM_CONDITIONAL([BUILD_PCM_PLUGIN_DSNOOP], [test x$build_pcm_dsnoop = xyes])
592 AM_CONDITIONAL([BUILD_PCM_PLUGIN_ASYM], [test x$build_pcm_asym = xyes])
593 AM_CONDITIONAL([BUILD_PCM_PLUGIN_IEC958], [test x$build_pcm_iec958 = xyes])
594 AM_CONDITIONAL([BUILD_PCM_PLUGIN_SOFTVOL], [test x$build_pcm_softvol = xyes])
595 AM_CONDITIONAL([BUILD_PCM_PLUGIN_EXTPLUG], [test x$build_pcm_extplug = xyes])
596 AM_CONDITIONAL([BUILD_PCM_PLUGIN_IOPLUG], [test x$build_pcm_ioplug = xyes])
597 AM_CONDITIONAL([BUILD_PCM_PLUGIN_MMAP_EMUL], [test x$build_pcm_mmap_emul = xyes])
598
599 dnl Defines for plug plugin
600 if test "$build_pcm_rate" = "yes"; then
601   AC_DEFINE([BUILD_PCM_PLUGIN_RATE], "1", [Build PCM rate plugin])
602 fi
603 if test "$build_pcm_route" = "yes"; then
604   AC_DEFINE([BUILD_PCM_PLUGIN_ROUTE], "1", [Build PCM route plugin])
605 fi
606 if test "$build_pcm_lfloat" = "yes"; then
607   AC_DEFINE([BUILD_PCM_PLUGIN_LFLOAT], "1", [Build PCM lfloat plugin])
608 fi
609 if test "$build_pcm_adpcm" = "yes"; then
610   AC_DEFINE([BUILD_PCM_PLUGIN_ADPCM], "1", [Build PCM adpcm plugin])
611 fi
612 if test "$build_pcm_mulaw" = "yes"; then
613   AC_DEFINE([BUILD_PCM_PLUGIN_MULAW], "1", [Build PCM mulaw plugin])
614 fi
615 if test "$build_pcm_alaw" = "yes"; then
616   AC_DEFINE([BUILD_PCM_PLUGIN_ALAW], "1", [Build PCM alaw plugin])
617 fi
618 if test "$build_pcm_mmap_emul" = "yes"; then
619   AC_DEFINE([BUILD_PCM_PLUGIN_MMAP_EMUL], "1", [Build PCM mmap-emul plugin])
620 fi
621
622
623 dnl Create PCM plugin symbol list for static library
624 rm -f "$srcdir"/src/pcm/pcm_symbols_list.c
625 touch "$srcdir"/src/pcm/pcm_symbols_list.c
626 for t in $PCM_PLUGIN_LIST; do
627   if eval test \$build_pcm_$t = yes; then
628     echo \&_snd_module_pcm_$t, >> "$srcdir"/src/pcm/pcm_symbols_list.c
629   fi
630 done
631
632 dnl Control Plugins
633
634 AC_ARG_WITH(ctl-plugins,
635   AS_HELP_STRING([--with-ctl-plugins=<list>],
636     [build control plugins (default = all)]),
637   [ctl_plugins="$withval"], [ctl_plugins="all"])
638
639 CTL_PLUGIN_LIST="shm ext"
640
641 build_ctl_plugin="no"
642 for t in $CTL_PLUGIN_LIST; do
643   eval build_ctl_$t="no"
644 done
645
646 ctl_plugins=`echo $ctl_plugins | sed 's/,/ /g'`
647 for p in $ctl_plugins; do
648   for t in $CTL_PLUGIN_LIST; do
649     if test "$p" = "$t" -o "$p" = "all"; then
650       eval build_ctl_$t="yes"
651       build_ctl_plugin="yes"
652     fi
653   done
654 done
655
656 if test "$ac_cv_header_sys_shm_h" != "yes"; then
657   build_ctl_shm="no"
658 fi
659
660 AM_CONDITIONAL([BUILD_CTL_PLUGIN], [test x$build_ctl_plugin = xyes])
661 AM_CONDITIONAL([BUILD_CTL_PLUGIN_SHM], [test x$build_ctl_shm = xyes])
662 AM_CONDITIONAL([BUILD_CTL_PLUGIN_EXT], [test x$build_ctl_ext = xyes])
663
664 dnl Create ctl plugin symbol list for static library
665 rm -f "$srcdir"/src/control/ctl_symbols_list.c
666 touch "$srcdir"/src/control/ctl_symbols_list.c
667 for t in $CTL_PLUGIN_LIST; do
668   if eval test \$build_ctl_$t = yes; then
669     echo \&_snd_module_control_$t, >> "$srcdir"/src/control/ctl_symbols_list.c
670   fi
671 done
672
673 dnl Max number of cards
674 AC_MSG_CHECKING(for max number of cards)
675 AC_ARG_WITH(max-cards,
676   AS_HELP_STRING([--with-max-cards], [Specify the max number of cards (default = 32)]),
677   [ max_cards="$withval" ], [ max_cards="32" ])
678 AC_MSG_RESULT([$max_cards])
679
680 if test "$max_cards" -lt 1; then
681    AC_ERROR([Invalid max cards $max_cards])
682 elif test "$max_cards" -gt 256; then
683    AC_ERROR([Invalid max cards $max_cards])
684 fi
685 AC_DEFINE_UNQUOTED(SND_MAX_CARDS, $max_cards, [Max number of cards])
686
687 dnl Check for thread-safe API functions
688 if test "$HAVE_LIBPTHREAD" = "yes"; then
689 AC_MSG_CHECKING(for thread-safe API functions)
690 AC_ARG_ENABLE(thread-safety,
691   AS_HELP_STRING([--disable-thread-safety],
692     [disable thread-safe API functions]),
693   threadsafe="$enableval", threadsafe="yes")
694 if test "$threadsafe" = "yes"; then
695   AC_MSG_RESULT(yes)
696   AC_DEFINE([THREAD_SAFE_API], "1", [Disable thread-safe API functions])
697 else
698   AC_MSG_RESULT(no)
699 fi
700 fi
701
702 dnl Make a symlink for inclusion of alsa/xxx.h
703 if test ! -L "$srcdir"/include/alsa ; then
704   echo "Making a symlink include/alsa"
705   rm -f "$srcdir"/include/alsa
706   ln -sf . "$srcdir"/include/alsa
707 fi
708
709 AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \
710           include/Makefile include/sound/Makefile src/Versions src/Makefile \
711           src/control/Makefile src/mixer/Makefile \
712           src/pcm/Makefile src/pcm/scopes/Makefile \
713           src/rawmidi/Makefile src/timer/Makefile \
714           src/hwdep/Makefile src/seq/Makefile src/ucm/Makefile \
715           src/alisp/Makefile src/topology/Makefile \
716           src/conf/Makefile \
717           src/conf/cards/Makefile \
718           src/conf/pcm/Makefile \
719           src/conf/ucm/Makefile \
720           src/conf/ucm/ASUSTeKCOMPUTERINC.-T100HAN-1.0-T100HAN/Makefile \
721           src/conf/ucm/broadwell-rt286/Makefile \
722           src/conf/ucm/broxton-rt298/Makefile \
723           src/conf/ucm/bytcr-rt5640/Makefile \
724           src/conf/ucm/bytcr-rt5640-mono-spk-dmic1-mic/Makefile \
725           src/conf/ucm/bytcr-rt5640-mono-spk-in1-mic/Makefile \
726           src/conf/ucm/bytcr-rt5640-mono-spk-in3-mic/Makefile \
727           src/conf/ucm/bytcr-rt5640-stereo-spk-dmic1-mic/Makefile \
728           src/conf/ucm/bytcr-rt5640-stereo-spk-in1-mic/Makefile \
729           src/conf/ucm/bytcr-rt5640-stereo-spk-in3-mic/Makefile \
730           src/conf/ucm/bytcr-rt5651/Makefile \
731           src/conf/ucm/bytcr-rt5651-mono-spk-in1-mic/Makefile \
732           src/conf/ucm/bytcr-rt5651-mono-spk-in2-mic/Makefile \
733           src/conf/ucm/bytcr-rt5651-mono-spk-in2-mic-hp-swapped/Makefile \
734           src/conf/ucm/bytcr-rt5651-stereo-spk-in1-mic/Makefile \
735           src/conf/ucm/bytcr-rt5651-stereo-spk-in2-mic/Makefile \
736           src/conf/ucm/bytcr-rt5651-stereo-spk-in12-mic/Makefile \
737           src/conf/ucm/chtnau8824/Makefile \
738           src/conf/ucm/chtrt5645/Makefile \
739           src/conf/ucm/chtrt5645-mono-speaker-analog-mic/Makefile \
740           src/conf/ucm/cube-i1_TF-Defaultstring-CherryTrailCR/Makefile \
741           src/conf/ucm/DAISY-I2S/Makefile \
742           src/conf/ucm/DB410c/Makefile \
743           src/conf/ucm/Dell-WD15-Dock/Makefile \
744           src/conf/ucm/GoogleNyan/Makefile \
745           src/conf/ucm/gpd-win-pocket-rt5645/Makefile \
746           src/conf/ucm/HDAudio-Gigabyte-ALC1220DualCodecs/Makefile \
747           src/conf/ucm/HDAudio-Lenovo-DualCodecs/Makefile \
748           src/conf/ucm/LENOVO-80XF-LenovoMIIX320_10ICR-LNVNB161216/Makefile \
749           src/conf/ucm/PandaBoard/Makefile \
750           src/conf/ucm/PandaBoardES/Makefile \
751           src/conf/ucm/PAZ00/Makefile \
752           src/conf/ucm/PIPO-W2S-Defaultstring-CherryTrailCR/Makefile \
753           src/conf/ucm/SDP4430/Makefile \
754           src/conf/ucm/skylake-rt286/Makefile \
755           src/conf/ucm/TECLAST-X80Pro-Defaultstring-CherryTrailCR/Makefile \
756           src/conf/ucm/tegraalc5632/Makefile \
757           src/conf/ucm/VEYRON-I2S/Makefile \
758           src/conf/ucm/codecs/Makefile \
759           src/conf/ucm/codecs/nau8824/Makefile \
760           src/conf/ucm/codecs/rt5640/Makefile \
761           src/conf/ucm/codecs/rt5651/Makefile \
762           src/conf/ucm/platforms/Makefile \
763           src/conf/ucm/platforms/bytcr/Makefile \
764           src/conf/topology/Makefile \
765           src/conf/topology/broadwell/Makefile \
766           modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \
767           src/conf/topology/sklrt286/Makefile \
768           src/conf/topology/bxtrt298/Makefile \
769           alsalisp/Makefile aserver/Makefile \
770           test/Makefile test/lsb/Makefile \
771           utils/Makefile utils/alsa-lib.spec utils/alsa.pc)
772
773 dnl Create asoundlib.h dynamically according to configure options
774 echo "Creating asoundlib.h..."
775 cp "$srcdir"/include/asoundlib-head.h include/asoundlib.h
776 test "$ac_cv_header_endian_h" = "yes" && echo "#include <endian.h>" >> include/asoundlib.h
777 if test "$ac_cv_header_sys_endian_h" = "yes"; then
778 cat >> include/asoundlib.h <<EOF
779 #include <sys/endian.h>
780 #ifndef __BYTE_ORDER
781 #define __BYTE_ORDER BYTE_ORDER
782 #endif
783 #ifndef __LITTLE_ENDIAN
784 #define __LITTLE_ENDIAN LITTLE_ENDIAN
785 #endif
786 #ifndef __BIG_ENDIAN
787 #define __BIG_ENDIAN BIG_ENDIAN
788 #endif
789 EOF
790 fi
791 cat >> include/asoundlib.h <<EOF
792
793 #ifndef __GNUC__
794 #define __inline__ inline
795 #endif
796
797 #include <alsa/asoundef.h>
798 #include <alsa/version.h>
799 #include <alsa/global.h>
800 #include <alsa/input.h>
801 #include <alsa/output.h>
802 #include <alsa/error.h>
803 #include <alsa/conf.h>
804 EOF
805 test "$build_pcm" = "yes" && echo "#include <alsa/pcm.h>" >> include/asoundlib.h
806 test "$build_rawmidi" = "yes" && echo "#include <alsa/rawmidi.h>" >> include/asoundlib.h
807 test "$build_pcm" = "yes" && echo "#include <alsa/timer.h>" >> include/asoundlib.h
808 test "$build_hwdep" = "yes" && echo "#include <alsa/hwdep.h>" >> include/asoundlib.h
809 echo "#include <alsa/control.h>" >> include/asoundlib.h
810 test "$build_mixer" = "yes" && echo "#include <alsa/mixer.h>" >> include/asoundlib.h
811 test "$build_seq" = "yes" && echo "#include <alsa/seq_event.h>" >> include/asoundlib.h
812 test "$build_seq" = "yes" && echo "#include <alsa/seq.h>" >> include/asoundlib.h
813 test "$build_seq" = "yes" && echo "#include <alsa/seqmid.h>" >> include/asoundlib.h
814 test "$build_seq" = "yes" && echo "#include <alsa/seq_midi_event.h>" >> include/asoundlib.h
815 cat "$srcdir"/include/asoundlib-tail.h >> include/asoundlib.h
816