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)
303 # some helper functions for codecs which use the ogg container format
304 AC_DEFUN([NEED_OGG_OBJECTS], [{
305 test "$HAVE_OGG" = 'yes' -a \( \
306 "$HAVE_VORBIS" = 'yes' \
307 -o "$HAVE_SPEEX" = 'yes' \
308 -o "$HAVE_OPUS" = 'yes' \
311 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
312 test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
314 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
315 test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
317 AC_DEFUN([NEED_OPUS_OBJECTS], [{
318 test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
320 ########################################################################### faad
322 LIB_ARG_WITH([faad], [-lfaad])
324 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
325 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
326 LIB_SUBST_FLAGS(faad)
328 ########################################################################### mad
330 OLD_CPPFLAGS="$CPPFLAGS"
331 OLD_LDFLAGS="$LDFLAGS"
334 AC_ARG_WITH(mad_headers, [AS_HELP_STRING(--with-mad-headers=dir,
335 [look for mad.h also in dir])])
336 if test -n "$with_mad_headers"; then
337 mad_cppflags="-I$with_mad_headers"
338 CPPFLAGS="$CPPFLAGS $mad_cppflags"
340 AC_ARG_WITH(mad_libs, [AS_HELP_STRING(--with-mad-libs=dir,
341 [look for libmad also in dir])])
342 if test -n "$with_mad_libs"; then
343 mad_libs="-L$with_mad_libs"
344 LDFLAGS="$LDFLAGS $mad_libs"
346 AC_CHECK_HEADERS([mad.h], [], [
349 AC_CHECK_LIB([mad], [mad_stream_init], [], [
352 if test "$have_mad" = "yes"; then
353 AC_DEFINE(HAVE_MAD, 1, define to 1 if you want to build the mp3dec filter)
354 AC_SUBST(mad_cppflags)
355 mad_ldflags="$mad_libs -lmad"
356 AC_SUBST(mad_ldflags)
358 AC_MSG_WARN([no mp3dec support in para_audiod/para_filter])
360 CPPFLAGS="$OLD_CPPFLAGS"
361 LDFLAGS="$OLD_LDFLAGS"
363 ###################################################################### libid3tag
364 OLD_CPPFLAGS="$CPPFLAGS"
365 OLD_LDFLAGS="$LDFLAGS"
369 AC_ARG_WITH(id3tag_headers, [AS_HELP_STRING(--with-id3tag-headers=dir,
370 [look for id3tag header files also in dir])])
371 if test -n "$with_id3tag_headers"; then
372 id3tag_cppflags="-I$with_id3tag_headers"
373 CPPFLAGS="$CPPFLAGS $id3tag_cppflags"
375 AC_ARG_WITH(id3tag_libs, [AS_HELP_STRING(--with-id3tag-libs=dir,
376 [look for id3tag libs also in dir])])
377 if test -n "$with_id3tag_libs"; then
378 id3tag_libs="-L$with_id3tag_libs"
379 LDFLAGS="$LDFLAGS $id3tag_libs"
382 AC_MSG_CHECKING(for libid3tag)
383 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
386 struct id3_tag t = {.flags = 0};
387 ]])],[],[have_libid3tag=no])
388 AC_MSG_RESULT($have_libid3tag)
390 if test ${have_libid3tag} = yes; then
391 AC_DEFINE(HAVE_LIBID3TAG, 1, define to 1 you have libid3tag)
392 AC_SUBST(id3tag_cppflags)
393 AC_SUBST(id3tag_ldflags, "$id3tag_libs -lid3tag -lz")
395 CPPFLAGS="$OLD_CPPFLAGS"
396 LDFLAGS="$OLD_LDFLAGS"
398 ########################################################################### flac
399 OLD_CPPFLAGS="$CPPFLAGS"
400 OLD_LDFLAGS="$LDFLAGS"
404 AC_ARG_WITH(flac_headers, [AS_HELP_STRING(--with-flac-headers=dir,
405 [look for flac headers also in dir])])
406 if test -n "$with_flac_headers"; then
407 flac_cppflags="-I$with_flac_headers"
408 CPPFLAGS="$CPPFLAGS $flac_cppflags"
410 AC_ARG_WITH(flac_libs, [AS_HELP_STRING(--with-flac-libs=dir,
411 [look for flac libs also in dir])])
412 if test -n "$with_flac_libs"; then
413 flac_libs="-L$with_flac_libs"
414 LDFLAGS="$LDFLAGS $flac_libs"
416 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], have_flac=no)
417 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], [
418 # nope, try again with -logg
419 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [],
420 have_flac=no, -lm -logg)
422 if test "$have_flac" = "yes"; then
423 AC_DEFINE(HAVE_FLAC, 1, define to 1 if you want to build the flacdec filter)
424 AC_SUBST(flac_cppflags)
425 flac_ldflags="$flac_libs -lFLAC"
426 AC_SUBST(flac_ldflags)
428 AC_MSG_WARN([no flac support in para_audiod/para_filter/para_afh/para_server])
430 CPPFLAGS="$OLD_CPPFLAGS"
431 LDFLAGS="$OLD_LDFLAGS"
433 ########################################################################### oss
434 OLD_CPPFLAGS="$CPPFLAGS"
435 OLD_LDFLAGS="$LDFLAGS"
439 msg="=> will not build oss writer"
441 AC_CHECK_HEADER(sys/soundcard.h, [
442 AC_CHECK_LIB(ossaudio, _oss_ioctl, [
443 oss_ldflags="-lossaudio"
444 AC_SUBST(oss_ldflags)
450 AC_MSG_WARN([no sys/soundcard.h $msg])
453 CPPFLAGS="$OLD_CPPFLAGS"
454 LDFLAGS="$OLD_LDFLAGS"
457 ########################################################################### alsa
458 OLD_CPPFLAGS="$CPPFLAGS"
459 OLD_LDFLAGS="$LDFLAGS"
462 msg="=> no alsa support for para_audiod/para_write"
463 if test "$OSTYPE" != "Linux"; then
468 if test "$have_alsa" = "yes"; then
469 AC_CHECK_HEADERS([alsa/asoundlib.h], [], [
471 AC_MSG_WARN([no alsa/asoundlib $msg])
475 if test "$have_alsa" = "yes"; then
476 AC_CHECK_LIB([asound], [snd_pcm_open], [], [
478 AC_MSG_WARN([no libasound $msg])
482 if test "$have_alsa" = "yes"; then
483 alsa_ldflags="-lasound"
484 AC_SUBST(alsa_ldflags)
487 CPPFLAGS="$OLD_CPPFLAGS"
488 LDFLAGS="$OLD_LDFLAGS"
490 ########################################################################### libao
491 OLD_CPPFLAGS="$CPPFLAGS"
492 OLD_LDFLAGS="$LDFLAGS"
496 AC_ARG_WITH(ao_headers, [AS_HELP_STRING(--with-ao-headers=dir,
497 [look for ao/ao.h also in dir])])
498 if test -n "$with_ao_headers"; then
499 ao_cppflags="-I$with_ao_headers"
500 CPPFLAGS="$CPPFLAGS $ao_cppflags"
502 AC_ARG_WITH(ao_libs, [AS_HELP_STRING(--with-ao-libs=dir,
503 [look for libao also in dir])])
504 if test -n "$with_ao_libs"; then
505 ao_libs="-L$with_ao_libs"
506 LDFLAGS="$LDFLAGS $ao_libs"
508 msg="no libao support for para_audiod/para_write"
509 AC_CHECK_HEADERS([ao/ao.h], [
512 AC_MSG_WARN([ao.h not found, $msg])
514 if test "$have_ao" = "yes"; then
515 AC_CHECK_LIB([ao], [ao_initialize], [], [
517 AC_MSG_WARN([ao lib not found or not working, $msg])
520 if test "$have_ao" = "yes"; then
521 AC_CHECK_HEADERS([pthread.h], [
524 AC_MSG_WARN([pthread.h not found, $msg])
527 if test "$have_ao" = "yes"; then
528 AC_CHECK_LIB([pthread], [pthread_create], [], [
530 AC_MSG_WARN([pthread lib not found or not working, $msg])
533 if test "$have_ao" = "yes"; then
534 AC_SUBST(ao_cppflags)
535 ao_ldflags="$ao_libs -lao -lpthread"
539 CPPFLAGS="$OLD_CPPFLAGS"
540 LDFLAGS="$OLD_LDFLAGS"
542 ############################################################# readline
543 OLD_CPPFLAGS="$CPPFLAGS"
544 OLD_LDFLAGS="$LDFLAGS"
548 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
549 [look for libreadline header files also in dir])])
550 if test -n "$with_readline_headers"; then
551 readline_cppflags="-I$with_readline_headers"
552 CPPFLAGS="$CPPFLAGS $readline_cppflags"
555 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
556 [look for readline library also in dir])])
557 if test -n "$with_readline_libs"; then
558 readline_libs="-L$with_readline_libs"
559 LDFLAGS="$LDFLAGS $readline_libs"
561 msg="no interactive cli support"
562 AC_CHECK_HEADERS([readline/readline.h], [
565 AC_MSG_WARN([readline/readline.h not found, $msg])
568 if test "$have_readline" = "yes"; then
569 readline_ldflags="$readline_libs"
570 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
571 readline_ldflags="$readline_ldflags -lreadline"
572 ], [have_readline="no"])
573 if test "$have_readline" = "no"; then # try with -lcurses
575 AC_MSG_NOTICE([trying again with -lcurses])
576 unset ac_cv_search_rl_free_keymap 2> /dev/null
577 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
579 readline_ldflags="$readline_ldflags -lreadline -lcurses"
582 if test "$have_readline" = "no"; then # try with -ltermcap
584 AC_MSG_NOTICE([trying again with -ltermcap])
585 unset ac_cv_search_rl_free_keymap 2> /dev/null
586 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
588 readline_ldflags="$readline_ldflags -lreadline -ltermcap"
593 if test "$have_readline" = "yes"; then
596 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
600 #include <readline/readline.h>
603 AC_SUBST(readline_cppflags)
604 AC_SUBST(readline_ldflags)
605 AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
607 AC_MSG_WARN([libreadline not found or unusable])
609 CPPFLAGS="$OLD_CPPFLAGS"
610 LDFLAGS="$OLD_LDFLAGS"
612 ############################################################# libsamplerate
613 OLD_CPPFLAGS="$CPPFLAGS"
614 OLD_LDFLAGS="$LDFLAGS"
617 have_samplerate="yes"
618 AC_ARG_WITH(samplerate_headers, [AS_HELP_STRING(--with-samplerate-headers=dir,
619 [look for samplerate headers also in dir])])
620 if test -n "$with_samplerate_headers"; then
621 samplerate_cppflags="-I$with_samplerate_headers"
622 CPPFLAGS="$CPPFLAGS $samplerate_cppflags"
624 AC_ARG_WITH(samplerate_libs, [AS_HELP_STRING(--with-samplerate-libs=dir,
625 [look for samplerate libs also in dir])])
626 if test -n "$with_samplerate_libs"; then
627 samplerate_libs="-L$with_samplerate_libs"
628 LDFLAGS="$LDFLAGS $samplerate_libs"
631 AC_CHECK_HEADER(samplerate.h, [], have_samplerate=no)
632 AC_CHECK_LIB([samplerate], [src_process], [], have_samplerate=no, [])
634 if test "$have_samplerate" = "yes"; then
635 AC_SUBST(samplerate_cppflags)
636 samplerate_ldflags="$samplerate_libs -lsamplerate"
637 AC_SUBST(samplerate_ldflags)
639 AC_MSG_WARN([no resample support in para_audiod/para_filter])
641 CPPFLAGS="$OLD_CPPFLAGS"
642 LDFLAGS="$OLD_LDFLAGS"
644 ######################################################################### server
645 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
647 executables="$executables server"
648 server_cmdline_objs="server"
649 server_errlist_objs="
688 if test "$CRYPTOLIB" = openssl; then
689 server_errlist_objs="$server_errlist_objs crypt"
691 server_errlist_objs="$server_errlist_objs gcrypt"
693 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
694 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
695 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
696 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
697 test $HAVE_FAAD = yes && server_errlist_objs="$server_errlist_objs aac_afh aac_common"
698 if test "$have_flac" = "yes"; then
699 server_errlist_objs="$server_errlist_objs flac_afh"
701 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
702 AC_SUBST(server_objs, add_dot_o($server_objs))
703 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
704 objlist_to_errlist($server_errlist_objs), errors used by para_server)
708 ############################################################# client
709 if test -n "$CRYPTOLIB"; then
711 executables="$executables client"
712 client_cmdline_objs="client"
713 client_errlist_objs="
729 if test "$CRYPTOLIB" = openssl; then
730 client_errlist_objs="$client_errlist_objs crypt"
732 client_errlist_objs="$client_errlist_objs gcrypt"
734 if test "$have_readline" = "yes"; then
735 client_errlist_objs="$client_errlist_objs interactive"
737 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
738 AC_SUBST(client_objs, add_dot_o($client_objs))
739 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
740 objlist_to_errlist($client_errlist_objs), errors used by para_client)
744 ############################################################# audiod
745 if test -n "$CRYPTOLIB"; then
747 executables="$executables audiod"
748 audiod_audio_formats="wma"
749 audiod_cmdline_objs="$audiod_cmdline_objs
761 audiod_errlist_objs="$audiod_errlist_objs
799 if test "$CRYPTOLIB" = openssl; then
800 audiod_errlist_objs="$audiod_errlist_objs crypt"
802 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
804 if test "$have_core_audio" = "yes"; then
805 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
806 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
808 NEED_VORBIS_OBJECTS && {
809 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
810 audiod_audio_formats="$audiod_audio_formats ogg"
812 NEED_SPEEX_OBJECTS && {
813 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
814 audiod_audio_formats="$audiod_audio_formats spx"
816 NEED_OPUS_OBJECTS && {
817 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
818 audiod_audio_formats="$audiod_audio_formats opus"
820 if test $HAVE_FAAD = yes; then
821 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
822 audiod_audio_formats="$audiod_audio_formats aac"
824 if test "$have_mad" = "yes"; then
825 audiod_audio_formats="$audiod_audio_formats mp3"
826 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
827 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
829 if test "$have_flac" = "yes"; then
830 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
831 audiod_audio_formats="$audiod_audio_formats flac"
833 if test "$have_oss" = "yes"; then
834 audiod_errlist_objs="$audiod_errlist_objs oss_write"
835 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
837 if test "$have_alsa" = "yes"; then
838 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
839 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
841 if test "$have_ao" = "yes"; then
842 audiod_errlist_objs="$audiod_errlist_objs ao_write"
843 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
845 if test "$have_samplerate" = "yes"; then
846 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
847 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
849 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
850 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
851 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
852 errors used by para_audiod)
854 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
855 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
856 enum of audio formats supported by audiod)
857 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
858 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
862 ########################################################################### fade
863 if test "$have_oss" = "yes" -o "$have_alsa" = "yes"; then
865 executables="$executables fade"
866 fade_cmdline_objs="fade"
867 fade_errlist_objs="fade exec string fd version ggo"
868 if test "$have_oss" = "yes"; then
869 fade_errlist_objs="$fade_errlist_objs oss_mix"
870 mixers="${mixers}oss "
871 default_mixer="OSS_MIX"
873 if test "$have_alsa" = "yes"; then
874 fade_errlist_objs="$fade_errlist_objs alsa_mix"
875 mixers="${mixers}alsa "
876 default_mixer="ALSA_MIX"
878 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
879 AC_SUBST(fade_objs, add_dot_o($fade_objs))
880 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
881 objlist_to_errlist($fade_errlist_objs),
882 errors used by para_fade)
885 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
888 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
889 enum of supported mixers)
890 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
891 use this mixer if none was specified)
892 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
893 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
896 printf 'extern void '$i'_mix_init(struct mixer *); '
899 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
900 init functions of the supported mixers)
901 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
902 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
905 AC_MSG_WARN([no mixer support])
907 ########################################################################### gui
908 if test "$have_curses" = "yes"; then
910 executables="$executables gui"
911 gui_cmdline_objs="gui"
926 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
927 AC_SUBST(gui_objs, add_dot_o($gui_objs))
928 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
929 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
932 AC_MSG_WARN([no curses lib, cannot build para_gui])
934 ######################################################################## filter
944 filter_errlist_objs="
969 filter_cmdline_objs="
976 NEED_VORBIS_OBJECTS && {
977 filters="$filters oggdec"
978 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
980 NEED_SPEEX_OBJECTS && {
981 filters="$filters spxdec"
982 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
984 NEED_OPUS_OBJECTS && {
985 filters="$filters opusdec"
986 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
988 if test $HAVE_FAAD = yes; then
989 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
990 filters="$filters aacdec"
992 if test "$have_mad" = "yes"; then
993 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
994 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
995 filters="$filters mp3dec"
997 if test "$have_flac" = "yes"; then
998 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
999 filters="$filters flacdec"
1001 if test "$have_samplerate" = "yes"; then
1002 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
1003 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
1004 filters="$filters resample"
1006 filters="$(echo $filters)"
1008 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
1010 AC_SUBST(filter_objs, add_dot_o($filter_objs))
1011 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
1012 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
1014 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
1015 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
1016 enum of supported filters)
1017 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
1018 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
1019 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
1020 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
1021 ########################################################################## recv
1051 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
1052 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
1053 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
1054 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
1056 if test $HAVE_FAAD = yes; then
1057 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
1059 if test "$have_flac" = "yes"; then
1060 recv_errlist_objs="$recv_errlist_objs flac_afh"
1062 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
1063 AC_SUBST(receivers, "http dccp udp afh")
1064 AC_SUBST(recv_objs, add_dot_o($recv_objs))
1065 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
1066 errors used by para_recv)
1067 ########################################################################### afh
1068 audio_format_handlers="mp3 wma"
1069 afh_cmdline_objs="afh"
1082 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
1083 NEED_VORBIS_OBJECTS && {
1084 afh_errlist_objs="$afh_errlist_objs ogg_afh"
1085 audio_format_handlers="$audio_format_handlers ogg"
1087 NEED_SPEEX_OBJECTS && {
1088 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
1089 audio_format_handlers="$audio_format_handlers spx"
1091 NEED_OPUS_OBJECTS && {
1092 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
1093 audio_format_handlers="$audio_format_handlers opus"
1095 if test $HAVE_FAAD = yes; then
1096 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
1097 audio_format_handlers="$audio_format_handlers aac"
1099 if test "$have_flac" = "yes"; then
1100 afh_errlist_objs="$afh_errlist_objs flac_afh"
1101 audio_format_handlers="$audio_format_handlers flac"
1104 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
1106 AC_SUBST(afh_objs, add_dot_o($afh_objs))
1107 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
1108 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
1109 ########################################################################## play
1155 if test "$have_core_audio" = "yes"; then
1156 play_errlist_objs="$play_errlist_objs osx_write ipc"
1157 play_cmdline_objs="$play_cmdline_objs osx_write"
1159 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
1160 NEED_VORBIS_OBJECTS && {
1161 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
1163 NEED_SPEEX_OBJECTS && {
1164 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
1166 NEED_OPUS_OBJECTS &&
1167 play_errlist_objs="$play_errlist_objs
1172 if test $HAVE_FAAD = yes; then
1173 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
1175 if test "$have_mad" = "yes"; then
1176 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
1177 play_errlist_objs="$play_errlist_objs mp3dec_filter"
1179 if test "$have_flac" = "yes"; then
1180 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
1182 if test "$have_oss" = "yes"; then
1183 play_errlist_objs="$play_errlist_objs oss_write"
1184 play_cmdline_objs="$play_cmdline_objs oss_write"
1186 if test "$have_alsa" = "yes"; then
1187 play_errlist_objs="$play_errlist_objs alsa_write"
1188 play_cmdline_objs="$play_cmdline_objs alsa_write"
1190 if test "$have_ao" = "yes"; then
1191 play_errlist_objs="$play_errlist_objs ao_write"
1192 play_cmdline_objs="$play_cmdline_objs ao_write"
1194 if test "$have_readline" = "yes"; then
1195 play_errlist_objs="$play_errlist_objs interactive"
1197 if test "$have_samplerate" = "yes"; then
1198 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1199 play_cmdline_objs="$play_cmdline_objs resample_filter"
1202 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1203 AC_SUBST(play_objs, add_dot_o($play_objs))
1204 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1205 objlist_to_errlist($play_errlist_objs), errors used by para_play)
1206 ######################################################################### write
1207 write_cmdline_objs="
1211 write_errlist_objs="
1226 default_writer="FILE_WRITE"
1228 if test "$have_core_audio" = "yes"; then
1229 write_errlist_objs="$write_errlist_objs osx_write ipc"
1230 write_cmdline_objs="$write_cmdline_objs osx_write"
1231 writers="$writers osx"
1232 default_writer="OSX_WRITE"
1234 if test "$have_ao" = "yes"; then
1235 write_errlist_objs="$write_errlist_objs ao_write"
1236 write_cmdline_objs="$write_cmdline_objs ao_write"
1237 writers="$writers ao"
1238 default_writer="AO_WRITE"
1240 if test "$have_oss" = "yes"; then
1241 write_errlist_objs="$write_errlist_objs oss_write"
1242 write_cmdline_objs="$write_cmdline_objs oss_write"
1243 writers="$writers oss"
1244 default_writer="OSS_WRITE"
1246 if test "$have_alsa" = "yes"; then
1247 write_errlist_objs="$write_errlist_objs alsa_write"
1248 write_cmdline_objs="$write_cmdline_objs alsa_write"
1249 writers="$writers alsa"
1250 default_writer="ALSA_WRITE"
1253 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1254 AC_SUBST(write_objs, add_dot_o($write_objs))
1255 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1256 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1257 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1258 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1259 enum of supported writers)
1260 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1261 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1262 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1263 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1264 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1265 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1266 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1267 ######################################################################## audioc
1268 audioc_cmdline_objs="audioc"
1269 audioc_errlist_objs="
1277 if test "$have_readline" = "yes"; then
1278 audioc_errlist_objs="$audioc_errlist_objs
1285 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1286 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1287 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1288 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1289 ############################################################# error2.h
1290 # these are always built
1293 $filter_errlist_objs
1294 $audioc_errlist_objs
1300 # optional executables
1301 if test "$build_server" = "yes"; then
1302 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1304 if test "$build_gui" = "yes"; then
1305 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1307 if test "$build_fade" = "yes"; then
1308 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1310 if test "$build_client" = "yes"; then
1311 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1313 if test "$build_audiod" = "yes"; then
1314 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1317 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1319 object_executable_matrix=
1320 for i in $executables; do
1321 eval objs=\$${i}_errlist_objs
1322 object_executable_matrix="$object_executable_matrix $i: $objs"
1324 # use echo to replace newlines by space
1325 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1327 SS=$(for obj in $all_errlist_objs; do
1328 printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1329 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1330 [enum {$SS NUM_SS}],
1331 [list of all objects that use the paraslash error facility]
1333 ################################################################## status items
1335 status_items="basename status num_played mtime bitrate frequency file_size
1336 status_flags format score techinfo afs_mode
1337 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1338 offset seconds_total stream_start current_time audiod_uptime image_id
1339 lyrics_id duration directory lyrics_name image_name path hash channels
1340 last_played num_chunks chunk_time amplification artist title year album
1344 for i in $status_items; do
1345 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1347 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1348 [enum of all status items])
1351 for i in $status_items; do
1352 result="$result \"$i\", "
1354 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1355 [char * array of all status items])
1357 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1358 [formats supported by para_server and para_afh])
1360 AC_SUBST(executables)
1364 paraslash configuration:
1365 ~~~~~~~~~~~~~~~~~~~~~~~~
1366 crypto lib: ${CRYPTOLIB:-[none]}
1367 unix socket credentials: $have_ucred
1368 readline (interactive CLIs): $have_readline
1369 audio formats handlers: $audio_format_handlers
1370 id3 version2 support: $have_libid3tag
1374 para_fade: $build_fade
1375 para_server: $build_server
1376 para_gui: $build_gui
1377 para_fade: $build_fade
1378 para_client: $build_client
1379 para_audiod: $build_audiod