2 # Process this file with autoconf to produce a configure script.
6 AC_INIT([paraslash], [m4_esyscmd_s(./GIT-VERSION-GEN)],
7 [maan@tuebingen.mpg.de], [], [http://people.tuebingen.mpg.de/maan/paraslash/])
8 AC_CONFIG_HEADERS([config.h])
10 AC_CONFIG_FILES([Makefile])
11 AC_DEFUN([add_dot_o],[$(for i in $@; do printf "$i.o "; done)])
12 AC_DEFUN([add_cmdline],[$(for i in $@; do printf "${i}.cmdline "; done)])
13 AC_DEFUN([make_errlist_defines], \
15 printf "DEFINE_ERRLIST($(echo $i | tr 'a-z' 'A-Z'));"; \
18 AC_DEFUN([make_para_errlists], \
20 printf "PARA_ERRLIST($(echo $i | tr 'a-z' 'A-Z')), "; \
23 AC_DEFUN([objlist_to_errlist],[ \
24 make_errlist_defines($@) \
25 [const char **para_errlist[[]]] = {make_para_errlists($@)} \
27 AC_DEFUN([LIB_ARG_WITH], [
28 AC_ARG_WITH($1-headers, [AS_HELP_STRING(--with-$1-headers=dir,
29 [look for $1 headers in dir])])
30 AC_ARG_WITH($1-libs, [AS_HELP_STRING(--with-$1-libs=dir,
31 [look for $1 libraries in dir])])
32 if test -n "$with_$1_headers"; then
33 $1_cppflags="-I$with_$1_headers"
34 CPPFLAGS="$CPPFLAGS $$1_cppflags"
36 if test -n "$with_$1_libs"; then
37 $1_ldflags="-L$with_$1_libs $2"
41 LDFLAGS="$LDFLAGS $$1_ldflags"
44 AC_DEFUN([STASH_FLAGS], [
45 OLD_CPPFLAGS="$CPPFLAGS"
46 OLD_LDFLAGS="$LDFLAGS"
50 AC_DEFUN([UNSTASH_FLAGS], [
51 CPPFLAGS="$OLD_CPPFLAGS"
52 LDFLAGS="$OLD_LDFLAGS"
55 AC_DEFUN([LIB_SUBST_FLAGS], [
56 if test "$HAVE_[]m4_toupper([$1])" == 'yes'; then
57 AC_DEFINE(HAVE_[]m4_toupper([$1]), 1,
58 define to 1 to turn on $1 support)
63 AC_SUBST(HAVE_[]m4_toupper([$1]))
68 AC_PATH_PROG(UNAMEPATH, uname, no)
69 if test "$UNAMEPATH" = "no"; then
70 AC_MSG_ERROR(unable to determine system type)
72 AC_MSG_CHECKING(os type)
73 OSTYPE="`$UNAMEPATH -s`"
74 AC_MSG_RESULT("$OSTYPE")
76 if test "$OSTYPE" = "SunOS"; then
77 # needed on SunOS for socket magic
78 arch_cppflags="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
79 AC_SUBST(arch_cppflags)
84 AC_PATH_PROG([gengetopt], [gengetopt])
85 test -z "$gengetopt" && AC_MSG_ERROR(
86 [gengetopt is required to build this package])
88 AC_PATH_PROG([help2man], [help2man])
89 test -z "$help2man" && AC_MSG_ERROR(
90 [help2man is required to build this package])
92 AC_PATH_PROG([install], [install])
93 test -z "$install" && AC_MSG_ERROR(
94 [The install program is required to build this package])
99 executables="recv filter audioc write afh play"
100 ################################################################## clock_gettime
102 AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
103 AC_CHECK_LIB([rt], [clock_gettime], [clock_gettime_lib=rt], [], [])
105 if test -n "$clock_gettime_lib"; then
106 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [
107 define to 1 if clock_gettime() is supported])
109 if test "$clock_gettime_lib" = "rt"; then
110 AC_SUBST(clock_gettime_ldflags, -lrt)
113 ########################################################################### osl
115 LIB_ARG_WITH([osl], [-losl])
117 AC_CHECK_HEADER(osl.h, [], [HAVE_OSL=no])
118 AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no])
121 ######################################################################## openssl
124 LIB_ARG_WITH([openssl], [-lssl -lcrypto])
125 AC_CHECK_HEADER(openssl/ssl.h, [], [HAVE_OPENSSL=no])
126 AC_CHECK_LIB([crypto], [RAND_bytes], [], [HAVE_OPENSSL=no])
127 LIB_SUBST_FLAGS(openssl)
129 ######################################################################### gcrypt
132 LIB_ARG_WITH([gcrypt], [-lgcrypt])
133 AC_CHECK_HEADER(gcrypt.h, [], [HAVE_GCRYPT=no])
134 AC_CHECK_LIB([gcrypt], [gcry_randomize], [], [HAVE_GCRYPT=no])
135 LIB_SUBST_FLAGS(gcrypt)
137 ######################################################################### crypto
138 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
139 Force using crypto library "lib". This package requires either
140 openssl or libgcrypt being installed. Possible values for "lib"
141 are thus "openssl" and "gcrypt". If this option is not given,
142 openssl is tried first. If openssl was not found, gcrypt is
145 CRYPTOLIB="$enable_cryptolib"
146 case "$enable_cryptolib" in
148 test $HAVE_OPENSSL = no && AC_MSG_ERROR(openssl not found)
149 crypto_ldflags="$openssl_ldflags"
152 test $HAVE_GCRYPT = no && AC_MSG_ERROR(gcrypt not found)
153 crypto_ldflags="$gcrypt_ldflags"
157 if test $HAVE_GCRYPT = yes; then
159 crypto_ldflags="$gcrypt_ldflags"
161 if test $HAVE_OPENSSL = yes; then
163 crypto_ldflags="$openssl_ldflags"
167 AC_MSG_ERROR([invalid value "$enable_cryptolib" for --enable-cryptolib])
170 AC_SUBST(crypto_ldflags)
171 ########################################################################### libsocket
172 AC_CHECK_LIB([c], [socket],
174 [socket_ldflags="-lsocket"]
176 AC_SUBST(socket_ldflags)
177 ########################################################################### libnsl
178 AC_CHECK_LIB([c], [gethostbyname],
180 [nsl_ldflags="-lnsl"]
182 AC_SUBST(nsl_ldflags)
183 ########################################################################### ucred
184 AC_MSG_CHECKING(for struct ucred)
185 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
187 #include <sys/types.h>
188 #include <sys/socket.h>
190 struct ucred sucred; sucred.pid=0;
191 ]])],[have_ucred=yes],[have_ucred=no])
192 AC_MSG_RESULT($have_ucred)
193 if test ${have_ucred} = yes; then
194 AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
196 ########################################################################### gengetopt
197 echo 'option "z" z "" flag off' | $gengetopt --file-name conftest-ggo &&
199 [gengetopt_args_info_description],
200 [ggo_descriptions_declared=yes],
201 [ggo_descriptions_declared=no],
202 [#include "conftest-ggo.h"]
204 AC_SUBST(ggo_descriptions_declared)
205 ########################################################################### curses
207 OLD_CPPFLAGS="$CPPFLAGS"
208 OLD_LDFLAGS="$LDFLAGS"
210 AC_ARG_WITH(curses_headers, [AS_HELP_STRING(--with-curses-headers=dir,
211 [look for curses.h also in dir])])
212 if test -n "$with_curses_headers"; then
213 curses_cppflags="-I$with_curses_headers"
214 CPPFLAGS="$CPPFLAGS $curses_cppflags"
216 AC_ARG_WITH(curses_libs, [AS_HELP_STRING(--with-curses-libs=dir,
217 [look for libcurses also in dir])])
218 if test -n "$with_curses_libs"; then
219 curses_libs="-L$with_curses_libs"
220 LDFLAGS="$LDFLAGS $curses_libs"
222 AC_CHECK_HEADER(curses.h, [], [
225 curses_ldflags="$curses_libs"
226 AC_CHECK_LIB([ncursesw], [initscr],
227 [curses_ldflags="$curses_libs -lncursesw"], [
228 AC_CHECK_LIB([curses], [initscr],
229 [curses_ldflags="$curses_libs -lcurses"],
234 AC_SUBST(curses_cppflags)
235 AC_SUBST(curses_ldflags)
236 CPPFLAGS="$OLD_CPPFLAGS"
237 LDFLAGS="$OLD_LDFLAGS"
239 ########################################################################### ip_mreqn
240 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
241 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
247 ]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
248 AC_MSG_RESULT($have_ip_mreqn)
249 if test ${have_ip_mreqn} = yes; then
250 AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
252 ########################################################################### osx
254 AC_MSG_CHECKING(for CoreAudio (MacOs))
255 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
256 #include <CoreAudio/CoreAudio.h>
259 ]])],[have_core_audio=yes],[have_core_audio=no])
260 AC_MSG_RESULT($have_core_audio)
261 if test ${have_core_audio} = yes; then
262 f1="-framework CoreAudio"
263 f2="-framework AudioToolbox"
264 f3="-framework AudioUnit"
265 f4="-framework CoreServices"
266 core_audio_ldflags="$f1 $f2 $f3 $f4"
267 AC_SUBST(core_audio_ldflags)
268 AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
270 ########################################################################### ogg
272 LIB_ARG_WITH([ogg], [-logg])
274 AC_CHECK_HEADERS([ogg/ogg.h], [], [HAVE_OGG=no])
275 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [HAVE_OGG=no])
278 ######################################################################### vorbis
280 LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
282 AC_CHECK_HEADERS([vorbis/codec.h], [], [HAVE_VORBIS=no])
283 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [HAVE_VORBIS=no])
284 LIB_SUBST_FLAGS(vorbis)
286 ######################################################################### speex
288 LIB_ARG_WITH([speex], [-lspeex])
290 AC_CHECK_HEADERS([speex/speex.h], [], [HAVE_SPEEX=no])
291 AC_CHECK_LIB([speex], [speex_decoder_init], [], [HAVE_SPEEX=no])
292 LIB_SUBST_FLAGS(speex)
294 ######################################################################### opus
296 LIB_ARG_WITH([opus], [-lopus])
298 AC_CHECK_HEADERS([opus/opus.h], [], [HAVE_OPUS=no])
299 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [HAVE_OPUS=no])
300 LIB_SUBST_FLAGS(opus)
302 ########################################################################### flac
304 LIB_ARG_WITH([flac], [-lFLAC -lm])
306 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], HAVE_FLAC=no)
307 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
308 LIB_SUBST_FLAGS(flac)
311 # some helper functions for codecs which use the ogg container format
312 AC_DEFUN([NEED_OGG_OBJECTS], [{
313 test "$HAVE_OGG" = 'yes' -a \( \
314 "$HAVE_VORBIS" = 'yes' \
315 -o "$HAVE_SPEEX" = 'yes' \
316 -o "$HAVE_OPUS" = 'yes' \
317 -o "$HAVE_FLAC" = 'yes' \
320 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
321 test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
323 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
324 test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
326 AC_DEFUN([NEED_OPUS_OBJECTS], [{
327 test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
329 AC_DEFUN([NEED_FLAC_OBJECTS], [{
330 test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
332 ########################################################################### faad
334 LIB_ARG_WITH([faad], [-lfaad])
336 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
337 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
338 LIB_SUBST_FLAGS(faad)
340 ########################################################################### mad
342 LIB_ARG_WITH([mad], [-lmad])
344 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
345 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
348 ###################################################################### libid3tag
350 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
352 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
353 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
354 LIB_SUBST_FLAGS(id3tag)
356 ########################################################################### oss
357 OLD_CPPFLAGS="$CPPFLAGS"
358 OLD_LDFLAGS="$LDFLAGS"
362 msg="=> will not build oss writer"
364 AC_CHECK_HEADER(sys/soundcard.h, [
365 AC_CHECK_LIB(ossaudio, _oss_ioctl, [
366 oss_ldflags="-lossaudio"
367 AC_SUBST(oss_ldflags)
373 AC_MSG_WARN([no sys/soundcard.h $msg])
376 CPPFLAGS="$OLD_CPPFLAGS"
377 LDFLAGS="$OLD_LDFLAGS"
380 ########################################################################### alsa
381 OLD_CPPFLAGS="$CPPFLAGS"
382 OLD_LDFLAGS="$LDFLAGS"
385 msg="=> no alsa support for para_audiod/para_write"
386 if test "$OSTYPE" != "Linux"; then
391 if test "$have_alsa" = "yes"; then
392 AC_CHECK_HEADERS([alsa/asoundlib.h], [], [
394 AC_MSG_WARN([no alsa/asoundlib $msg])
398 if test "$have_alsa" = "yes"; then
399 AC_CHECK_LIB([asound], [snd_pcm_open], [], [
401 AC_MSG_WARN([no libasound $msg])
405 if test "$have_alsa" = "yes"; then
406 alsa_ldflags="-lasound"
407 AC_SUBST(alsa_ldflags)
410 CPPFLAGS="$OLD_CPPFLAGS"
411 LDFLAGS="$OLD_LDFLAGS"
413 ########################################################################### libao
414 OLD_CPPFLAGS="$CPPFLAGS"
415 OLD_LDFLAGS="$LDFLAGS"
419 AC_ARG_WITH(ao_headers, [AS_HELP_STRING(--with-ao-headers=dir,
420 [look for ao/ao.h also in dir])])
421 if test -n "$with_ao_headers"; then
422 ao_cppflags="-I$with_ao_headers"
423 CPPFLAGS="$CPPFLAGS $ao_cppflags"
425 AC_ARG_WITH(ao_libs, [AS_HELP_STRING(--with-ao-libs=dir,
426 [look for libao also in dir])])
427 if test -n "$with_ao_libs"; then
428 ao_libs="-L$with_ao_libs"
429 LDFLAGS="$LDFLAGS $ao_libs"
431 msg="no libao support for para_audiod/para_write"
432 AC_CHECK_HEADERS([ao/ao.h], [
435 AC_MSG_WARN([ao.h not found, $msg])
437 if test "$have_ao" = "yes"; then
438 AC_CHECK_LIB([ao], [ao_initialize], [], [
440 AC_MSG_WARN([ao lib not found or not working, $msg])
443 if test "$have_ao" = "yes"; then
444 AC_CHECK_HEADERS([pthread.h], [
447 AC_MSG_WARN([pthread.h not found, $msg])
450 if test "$have_ao" = "yes"; then
451 AC_CHECK_LIB([pthread], [pthread_create], [], [
453 AC_MSG_WARN([pthread lib not found or not working, $msg])
456 if test "$have_ao" = "yes"; then
457 AC_SUBST(ao_cppflags)
458 ao_ldflags="$ao_libs -lao -lpthread"
462 CPPFLAGS="$OLD_CPPFLAGS"
463 LDFLAGS="$OLD_LDFLAGS"
465 ############################################################# readline
466 OLD_CPPFLAGS="$CPPFLAGS"
467 OLD_LDFLAGS="$LDFLAGS"
471 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
472 [look for libreadline header files also in dir])])
473 if test -n "$with_readline_headers"; then
474 readline_cppflags="-I$with_readline_headers"
475 CPPFLAGS="$CPPFLAGS $readline_cppflags"
478 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
479 [look for readline library also in dir])])
480 if test -n "$with_readline_libs"; then
481 readline_libs="-L$with_readline_libs"
482 LDFLAGS="$LDFLAGS $readline_libs"
484 msg="no interactive cli support"
485 AC_CHECK_HEADERS([readline/readline.h], [
488 AC_MSG_WARN([readline/readline.h not found, $msg])
491 if test "$have_readline" = "yes"; then
492 readline_ldflags="$readline_libs"
493 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
494 readline_ldflags="$readline_ldflags -lreadline"
495 ], [have_readline="no"])
496 if test "$have_readline" = "no"; then # try with -lcurses
498 AC_MSG_NOTICE([trying again with -lcurses])
499 unset ac_cv_search_rl_free_keymap 2> /dev/null
500 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
502 readline_ldflags="$readline_ldflags -lreadline -lcurses"
505 if test "$have_readline" = "no"; then # try with -ltermcap
507 AC_MSG_NOTICE([trying again with -ltermcap])
508 unset ac_cv_search_rl_free_keymap 2> /dev/null
509 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
511 readline_ldflags="$readline_ldflags -lreadline -ltermcap"
516 if test "$have_readline" = "yes"; then
519 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
523 #include <readline/readline.h>
526 AC_SUBST(readline_cppflags)
527 AC_SUBST(readline_ldflags)
528 AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
530 AC_MSG_WARN([libreadline not found or unusable])
532 CPPFLAGS="$OLD_CPPFLAGS"
533 LDFLAGS="$OLD_LDFLAGS"
535 ############################################################# libsamplerate
536 OLD_CPPFLAGS="$CPPFLAGS"
537 OLD_LDFLAGS="$LDFLAGS"
540 have_samplerate="yes"
541 AC_ARG_WITH(samplerate_headers, [AS_HELP_STRING(--with-samplerate-headers=dir,
542 [look for samplerate headers also in dir])])
543 if test -n "$with_samplerate_headers"; then
544 samplerate_cppflags="-I$with_samplerate_headers"
545 CPPFLAGS="$CPPFLAGS $samplerate_cppflags"
547 AC_ARG_WITH(samplerate_libs, [AS_HELP_STRING(--with-samplerate-libs=dir,
548 [look for samplerate libs also in dir])])
549 if test -n "$with_samplerate_libs"; then
550 samplerate_libs="-L$with_samplerate_libs"
551 LDFLAGS="$LDFLAGS $samplerate_libs"
554 AC_CHECK_HEADER(samplerate.h, [], have_samplerate=no)
555 AC_CHECK_LIB([samplerate], [src_process], [], have_samplerate=no, [])
557 if test "$have_samplerate" = "yes"; then
558 AC_SUBST(samplerate_cppflags)
559 samplerate_ldflags="$samplerate_libs -lsamplerate"
560 AC_SUBST(samplerate_ldflags)
562 AC_MSG_WARN([no resample support in para_audiod/para_filter])
564 CPPFLAGS="$OLD_CPPFLAGS"
565 LDFLAGS="$OLD_LDFLAGS"
567 ######################################################################### server
568 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
570 executables="$executables server"
571 server_cmdline_objs="server"
572 server_errlist_objs="
611 if test "$CRYPTOLIB" = openssl; then
612 server_errlist_objs="$server_errlist_objs crypt"
614 server_errlist_objs="$server_errlist_objs gcrypt"
616 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
617 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
618 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
619 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
620 NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
621 test $HAVE_FAAD = yes && server_errlist_objs="$server_errlist_objs aac_afh aac_common"
622 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
623 AC_SUBST(server_objs, add_dot_o($server_objs))
624 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
625 objlist_to_errlist($server_errlist_objs), errors used by para_server)
629 ############################################################# client
630 if test -n "$CRYPTOLIB"; then
632 executables="$executables client"
633 client_cmdline_objs="client"
634 client_errlist_objs="
650 if test "$CRYPTOLIB" = openssl; then
651 client_errlist_objs="$client_errlist_objs crypt"
653 client_errlist_objs="$client_errlist_objs gcrypt"
655 if test "$have_readline" = "yes"; then
656 client_errlist_objs="$client_errlist_objs interactive"
658 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
659 AC_SUBST(client_objs, add_dot_o($client_objs))
660 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
661 objlist_to_errlist($client_errlist_objs), errors used by para_client)
665 ############################################################# audiod
666 if test -n "$CRYPTOLIB"; then
668 executables="$executables audiod"
669 audiod_audio_formats="wma"
670 audiod_cmdline_objs="$audiod_cmdline_objs
682 audiod_errlist_objs="$audiod_errlist_objs
720 if test "$CRYPTOLIB" = openssl; then
721 audiod_errlist_objs="$audiod_errlist_objs crypt"
723 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
725 if test "$have_core_audio" = "yes"; then
726 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
727 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
729 NEED_VORBIS_OBJECTS && {
730 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
731 audiod_audio_formats="$audiod_audio_formats ogg"
733 NEED_SPEEX_OBJECTS && {
734 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
735 audiod_audio_formats="$audiod_audio_formats spx"
737 NEED_OPUS_OBJECTS && {
738 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
739 audiod_audio_formats="$audiod_audio_formats opus"
741 NEED_FLAC_OBJECTS && {
742 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
743 audiod_audio_formats="$audiod_audio_formats flac"
745 if test $HAVE_FAAD = yes; then
746 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
747 audiod_audio_formats="$audiod_audio_formats aac"
749 if test $HAVE_MAD = yes; then
750 audiod_audio_formats="$audiod_audio_formats mp3"
751 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
752 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
754 if test "$have_oss" = "yes"; then
755 audiod_errlist_objs="$audiod_errlist_objs oss_write"
756 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
758 if test "$have_alsa" = "yes"; then
759 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
760 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
762 if test "$have_ao" = "yes"; then
763 audiod_errlist_objs="$audiod_errlist_objs ao_write"
764 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
766 if test "$have_samplerate" = "yes"; then
767 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
768 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
770 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
771 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
772 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
773 errors used by para_audiod)
775 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
776 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
777 enum of audio formats supported by audiod)
778 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
779 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
783 ########################################################################### fade
784 if test "$have_oss" = "yes" -o "$have_alsa" = "yes"; then
786 executables="$executables fade"
787 fade_cmdline_objs="fade"
788 fade_errlist_objs="fade exec string fd version ggo"
789 if test "$have_oss" = "yes"; then
790 fade_errlist_objs="$fade_errlist_objs oss_mix"
791 mixers="${mixers}oss "
792 default_mixer="OSS_MIX"
794 if test "$have_alsa" = "yes"; then
795 fade_errlist_objs="$fade_errlist_objs alsa_mix"
796 mixers="${mixers}alsa "
797 default_mixer="ALSA_MIX"
799 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
800 AC_SUBST(fade_objs, add_dot_o($fade_objs))
801 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
802 objlist_to_errlist($fade_errlist_objs),
803 errors used by para_fade)
806 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
809 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
810 enum of supported mixers)
811 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
812 use this mixer if none was specified)
813 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
814 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
817 printf 'extern void '$i'_mix_init(struct mixer *); '
820 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
821 init functions of the supported mixers)
822 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
823 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
826 AC_MSG_WARN([no mixer support])
828 ########################################################################### gui
829 if test "$have_curses" = "yes"; then
831 executables="$executables gui"
832 gui_cmdline_objs="gui"
847 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
848 AC_SUBST(gui_objs, add_dot_o($gui_objs))
849 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
850 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
853 AC_MSG_WARN([no curses lib, cannot build para_gui])
855 ######################################################################## filter
865 filter_errlist_objs="
890 filter_cmdline_objs="
897 NEED_VORBIS_OBJECTS && {
898 filters="$filters oggdec"
899 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
901 NEED_SPEEX_OBJECTS && {
902 filters="$filters spxdec"
903 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
905 NEED_OPUS_OBJECTS && {
906 filters="$filters opusdec"
907 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
909 NEED_FLAC_OBJECTS && {
910 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
911 filters="$filters flacdec"
913 if test $HAVE_FAAD = yes; then
914 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
915 filters="$filters aacdec"
917 if test $HAVE_MAD = yes; then
918 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
919 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
920 filters="$filters mp3dec"
922 if test "$have_samplerate" = "yes"; then
923 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
924 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
925 filters="$filters resample"
927 filters="$(echo $filters)"
929 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
931 AC_SUBST(filter_objs, add_dot_o($filter_objs))
932 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
933 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
935 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
936 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
937 enum of supported filters)
938 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
939 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
940 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
941 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
942 ########################################################################## recv
972 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
973 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
974 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
975 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
976 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
978 if test $HAVE_FAAD = yes; then
979 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
981 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
982 AC_SUBST(receivers, "http dccp udp afh")
983 AC_SUBST(recv_objs, add_dot_o($recv_objs))
984 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
985 errors used by para_recv)
986 ########################################################################### afh
987 audio_format_handlers="mp3 wma"
988 afh_cmdline_objs="afh"
1001 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
1002 NEED_VORBIS_OBJECTS && {
1003 afh_errlist_objs="$afh_errlist_objs ogg_afh"
1004 audio_format_handlers="$audio_format_handlers ogg"
1006 NEED_SPEEX_OBJECTS && {
1007 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
1008 audio_format_handlers="$audio_format_handlers spx"
1010 NEED_OPUS_OBJECTS && {
1011 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
1012 audio_format_handlers="$audio_format_handlers opus"
1014 NEED_FLAC_OBJECTS && {
1015 afh_errlist_objs="$afh_errlist_objs flac_afh"
1016 audio_format_handlers="$audio_format_handlers flac"
1018 if test $HAVE_FAAD = yes; then
1019 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
1020 audio_format_handlers="$audio_format_handlers aac"
1023 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
1025 AC_SUBST(afh_objs, add_dot_o($afh_objs))
1026 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
1027 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
1028 ########################################################################## play
1074 if test "$have_core_audio" = "yes"; then
1075 play_errlist_objs="$play_errlist_objs osx_write ipc"
1076 play_cmdline_objs="$play_cmdline_objs osx_write"
1078 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
1079 NEED_VORBIS_OBJECTS && {
1080 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
1082 NEED_SPEEX_OBJECTS && {
1083 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
1085 NEED_OPUS_OBJECTS &&
1086 play_errlist_objs="$play_errlist_objs
1091 NEED_FLAC_OBJECTS && {
1092 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
1094 if test $HAVE_FAAD = yes; then
1095 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
1097 if test $HAVE_MAD = yes; then
1098 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
1099 play_errlist_objs="$play_errlist_objs mp3dec_filter"
1101 if test "$have_oss" = "yes"; then
1102 play_errlist_objs="$play_errlist_objs oss_write"
1103 play_cmdline_objs="$play_cmdline_objs oss_write"
1105 if test "$have_alsa" = "yes"; then
1106 play_errlist_objs="$play_errlist_objs alsa_write"
1107 play_cmdline_objs="$play_cmdline_objs alsa_write"
1109 if test "$have_ao" = "yes"; then
1110 play_errlist_objs="$play_errlist_objs ao_write"
1111 play_cmdline_objs="$play_cmdline_objs ao_write"
1113 if test "$have_readline" = "yes"; then
1114 play_errlist_objs="$play_errlist_objs interactive"
1116 if test "$have_samplerate" = "yes"; then
1117 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1118 play_cmdline_objs="$play_cmdline_objs resample_filter"
1121 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1122 AC_SUBST(play_objs, add_dot_o($play_objs))
1123 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1124 objlist_to_errlist($play_errlist_objs), errors used by para_play)
1125 ######################################################################### write
1126 write_cmdline_objs="
1130 write_errlist_objs="
1145 default_writer="FILE_WRITE"
1147 if test "$have_core_audio" = "yes"; then
1148 write_errlist_objs="$write_errlist_objs osx_write ipc"
1149 write_cmdline_objs="$write_cmdline_objs osx_write"
1150 writers="$writers osx"
1151 default_writer="OSX_WRITE"
1153 if test "$have_ao" = "yes"; then
1154 write_errlist_objs="$write_errlist_objs ao_write"
1155 write_cmdline_objs="$write_cmdline_objs ao_write"
1156 writers="$writers ao"
1157 default_writer="AO_WRITE"
1159 if test "$have_oss" = "yes"; then
1160 write_errlist_objs="$write_errlist_objs oss_write"
1161 write_cmdline_objs="$write_cmdline_objs oss_write"
1162 writers="$writers oss"
1163 default_writer="OSS_WRITE"
1165 if test "$have_alsa" = "yes"; then
1166 write_errlist_objs="$write_errlist_objs alsa_write"
1167 write_cmdline_objs="$write_cmdline_objs alsa_write"
1168 writers="$writers alsa"
1169 default_writer="ALSA_WRITE"
1172 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1173 AC_SUBST(write_objs, add_dot_o($write_objs))
1174 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1175 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1176 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1177 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1178 enum of supported writers)
1179 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1180 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1181 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1182 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1183 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1184 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1185 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1186 ######################################################################## audioc
1187 audioc_cmdline_objs="audioc"
1188 audioc_errlist_objs="
1196 if test "$have_readline" = "yes"; then
1197 audioc_errlist_objs="$audioc_errlist_objs
1204 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1205 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1206 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1207 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1208 ############################################################# error2.h
1209 # these are always built
1212 $filter_errlist_objs
1213 $audioc_errlist_objs
1219 # optional executables
1220 if test "$build_server" = "yes"; then
1221 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1223 if test "$build_gui" = "yes"; then
1224 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1226 if test "$build_fade" = "yes"; then
1227 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1229 if test "$build_client" = "yes"; then
1230 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1232 if test "$build_audiod" = "yes"; then
1233 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1236 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1238 object_executable_matrix=
1239 for i in $executables; do
1240 eval objs=\$${i}_errlist_objs
1241 object_executable_matrix="$object_executable_matrix $i: $objs"
1243 # use echo to replace newlines by space
1244 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1246 SS=$(for obj in $all_errlist_objs; do
1247 printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1248 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1249 [enum {$SS NUM_SS}],
1250 [list of all objects that use the paraslash error facility]
1252 ################################################################## status items
1254 status_items="basename status num_played mtime bitrate frequency file_size
1255 status_flags format score techinfo afs_mode
1256 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1257 offset seconds_total stream_start current_time audiod_uptime image_id
1258 lyrics_id duration directory lyrics_name image_name path hash channels
1259 last_played num_chunks chunk_time amplification artist title year album
1263 for i in $status_items; do
1264 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1266 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1267 [enum of all status items])
1270 for i in $status_items; do
1271 result="$result \"$i\", "
1273 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1274 [char * array of all status items])
1276 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1277 [formats supported by para_server and para_afh])
1279 AC_SUBST(executables)
1283 paraslash configuration:
1284 ~~~~~~~~~~~~~~~~~~~~~~~~
1285 crypto lib: ${CRYPTOLIB:-[none]}
1286 unix socket credentials: $have_ucred
1287 readline (interactive CLIs): $have_readline
1288 audio formats handlers: $audio_format_handlers
1289 id3 version 2 support: $HAVE_ID3TAG
1293 para_fade: $build_fade
1294 para_server: $build_server
1295 para_gui: $build_gui
1296 para_fade: $build_fade
1297 para_client: $build_client
1298 para_audiod: $build_audiod