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 OLD_CPPFLAGS="$CPPFLAGS"
323 OLD_LDFLAGS="$LDFLAGS"
325 AC_ARG_WITH(faad_headers, [AS_HELP_STRING(--with-faad-headers=dir,
326 [look for neaacdec.h also in dir])])
327 if test -n "$with_faad_headers"; then
328 faad_cppflags="-I$with_faad_headers"
329 CPPFLAGS="$CPPFLAGS $faad_cppflags"
331 AC_ARG_WITH(faad_libs, [AS_HELP_STRING(--with-faad-libs=dir,
332 [look for libfaad also in dir])])
333 if test -n "$with_faad_libs"; then
334 faad_libs="-L$with_faad_libs"
335 LDFLAGS="$LDFLAGS $faad_libs"
337 AC_CHECK_HEADER(neaacdec.h, [], have_faad=no)
338 AC_CHECK_LIB([faad], [NeAACDecOpen], [], have_faad=no)
339 if test "$have_faad" = "yes"; then
340 AC_DEFINE(HAVE_FAAD, 1, define to 1 if you want to build the aacdec filter)
341 AC_SUBST(faad_cppflags)
342 faad_ldflags="$faad_libs -lfaad"
343 AC_SUBST(faad_ldflags)
345 CPPFLAGS="$OLD_CPPFLAGS"
346 LDFLAGS="$OLD_LDFLAGS"
348 ########################################################################### mad
350 OLD_CPPFLAGS="$CPPFLAGS"
351 OLD_LDFLAGS="$LDFLAGS"
354 AC_ARG_WITH(mad_headers, [AS_HELP_STRING(--with-mad-headers=dir,
355 [look for mad.h also in dir])])
356 if test -n "$with_mad_headers"; then
357 mad_cppflags="-I$with_mad_headers"
358 CPPFLAGS="$CPPFLAGS $mad_cppflags"
360 AC_ARG_WITH(mad_libs, [AS_HELP_STRING(--with-mad-libs=dir,
361 [look for libmad also in dir])])
362 if test -n "$with_mad_libs"; then
363 mad_libs="-L$with_mad_libs"
364 LDFLAGS="$LDFLAGS $mad_libs"
366 AC_CHECK_HEADERS([mad.h], [], [
369 AC_CHECK_LIB([mad], [mad_stream_init], [], [
372 if test "$have_mad" = "yes"; then
373 AC_DEFINE(HAVE_MAD, 1, define to 1 if you want to build the mp3dec filter)
374 AC_SUBST(mad_cppflags)
375 mad_ldflags="$mad_libs -lmad"
376 AC_SUBST(mad_ldflags)
378 AC_MSG_WARN([no mp3dec support in para_audiod/para_filter])
380 CPPFLAGS="$OLD_CPPFLAGS"
381 LDFLAGS="$OLD_LDFLAGS"
383 ###################################################################### libid3tag
384 OLD_CPPFLAGS="$CPPFLAGS"
385 OLD_LDFLAGS="$LDFLAGS"
389 AC_ARG_WITH(id3tag_headers, [AS_HELP_STRING(--with-id3tag-headers=dir,
390 [look for id3tag header files also in dir])])
391 if test -n "$with_id3tag_headers"; then
392 id3tag_cppflags="-I$with_id3tag_headers"
393 CPPFLAGS="$CPPFLAGS $id3tag_cppflags"
395 AC_ARG_WITH(id3tag_libs, [AS_HELP_STRING(--with-id3tag-libs=dir,
396 [look for id3tag libs also in dir])])
397 if test -n "$with_id3tag_libs"; then
398 id3tag_libs="-L$with_id3tag_libs"
399 LDFLAGS="$LDFLAGS $id3tag_libs"
402 AC_MSG_CHECKING(for libid3tag)
403 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
406 struct id3_tag t = {.flags = 0};
407 ]])],[],[have_libid3tag=no])
408 AC_MSG_RESULT($have_libid3tag)
410 if test ${have_libid3tag} = yes; then
411 AC_DEFINE(HAVE_LIBID3TAG, 1, define to 1 you have libid3tag)
412 AC_SUBST(id3tag_cppflags)
413 AC_SUBST(id3tag_ldflags, "$id3tag_libs -lid3tag -lz")
415 CPPFLAGS="$OLD_CPPFLAGS"
416 LDFLAGS="$OLD_LDFLAGS"
418 ########################################################################### flac
419 OLD_CPPFLAGS="$CPPFLAGS"
420 OLD_LDFLAGS="$LDFLAGS"
424 AC_ARG_WITH(flac_headers, [AS_HELP_STRING(--with-flac-headers=dir,
425 [look for flac headers also in dir])])
426 if test -n "$with_flac_headers"; then
427 flac_cppflags="-I$with_flac_headers"
428 CPPFLAGS="$CPPFLAGS $flac_cppflags"
430 AC_ARG_WITH(flac_libs, [AS_HELP_STRING(--with-flac-libs=dir,
431 [look for flac libs also in dir])])
432 if test -n "$with_flac_libs"; then
433 flac_libs="-L$with_flac_libs"
434 LDFLAGS="$LDFLAGS $flac_libs"
436 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], have_flac=no)
437 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], [
438 # nope, try again with -logg
439 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [],
440 have_flac=no, -lm -logg)
442 if test "$have_flac" = "yes"; then
443 AC_DEFINE(HAVE_FLAC, 1, define to 1 if you want to build the flacdec filter)
444 AC_SUBST(flac_cppflags)
445 flac_ldflags="$flac_libs -lFLAC"
446 AC_SUBST(flac_ldflags)
448 AC_MSG_WARN([no flac support in para_audiod/para_filter/para_afh/para_server])
450 CPPFLAGS="$OLD_CPPFLAGS"
451 LDFLAGS="$OLD_LDFLAGS"
453 ########################################################################### oss
454 OLD_CPPFLAGS="$CPPFLAGS"
455 OLD_LDFLAGS="$LDFLAGS"
459 msg="=> will not build oss writer"
461 AC_CHECK_HEADER(sys/soundcard.h, [
462 AC_CHECK_LIB(ossaudio, _oss_ioctl, [
463 oss_ldflags="-lossaudio"
464 AC_SUBST(oss_ldflags)
470 AC_MSG_WARN([no sys/soundcard.h $msg])
473 CPPFLAGS="$OLD_CPPFLAGS"
474 LDFLAGS="$OLD_LDFLAGS"
477 ########################################################################### alsa
478 OLD_CPPFLAGS="$CPPFLAGS"
479 OLD_LDFLAGS="$LDFLAGS"
482 msg="=> no alsa support for para_audiod/para_write"
483 if test "$OSTYPE" != "Linux"; then
488 if test "$have_alsa" = "yes"; then
489 AC_CHECK_HEADERS([alsa/asoundlib.h], [], [
491 AC_MSG_WARN([no alsa/asoundlib $msg])
495 if test "$have_alsa" = "yes"; then
496 AC_CHECK_LIB([asound], [snd_pcm_open], [], [
498 AC_MSG_WARN([no libasound $msg])
502 if test "$have_alsa" = "yes"; then
503 alsa_ldflags="-lasound"
504 AC_SUBST(alsa_ldflags)
507 CPPFLAGS="$OLD_CPPFLAGS"
508 LDFLAGS="$OLD_LDFLAGS"
510 ########################################################################### libao
511 OLD_CPPFLAGS="$CPPFLAGS"
512 OLD_LDFLAGS="$LDFLAGS"
516 AC_ARG_WITH(ao_headers, [AS_HELP_STRING(--with-ao-headers=dir,
517 [look for ao/ao.h also in dir])])
518 if test -n "$with_ao_headers"; then
519 ao_cppflags="-I$with_ao_headers"
520 CPPFLAGS="$CPPFLAGS $ao_cppflags"
522 AC_ARG_WITH(ao_libs, [AS_HELP_STRING(--with-ao-libs=dir,
523 [look for libao also in dir])])
524 if test -n "$with_ao_libs"; then
525 ao_libs="-L$with_ao_libs"
526 LDFLAGS="$LDFLAGS $ao_libs"
528 msg="no libao support for para_audiod/para_write"
529 AC_CHECK_HEADERS([ao/ao.h], [
532 AC_MSG_WARN([ao.h not found, $msg])
534 if test "$have_ao" = "yes"; then
535 AC_CHECK_LIB([ao], [ao_initialize], [], [
537 AC_MSG_WARN([ao lib not found or not working, $msg])
540 if test "$have_ao" = "yes"; then
541 AC_CHECK_HEADERS([pthread.h], [
544 AC_MSG_WARN([pthread.h not found, $msg])
547 if test "$have_ao" = "yes"; then
548 AC_CHECK_LIB([pthread], [pthread_create], [], [
550 AC_MSG_WARN([pthread lib not found or not working, $msg])
553 if test "$have_ao" = "yes"; then
554 AC_SUBST(ao_cppflags)
555 ao_ldflags="$ao_libs -lao -lpthread"
559 CPPFLAGS="$OLD_CPPFLAGS"
560 LDFLAGS="$OLD_LDFLAGS"
562 ############################################################# readline
563 OLD_CPPFLAGS="$CPPFLAGS"
564 OLD_LDFLAGS="$LDFLAGS"
568 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
569 [look for libreadline header files also in dir])])
570 if test -n "$with_readline_headers"; then
571 readline_cppflags="-I$with_readline_headers"
572 CPPFLAGS="$CPPFLAGS $readline_cppflags"
575 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
576 [look for readline library also in dir])])
577 if test -n "$with_readline_libs"; then
578 readline_libs="-L$with_readline_libs"
579 LDFLAGS="$LDFLAGS $readline_libs"
581 msg="no interactive cli support"
582 AC_CHECK_HEADERS([readline/readline.h], [
585 AC_MSG_WARN([readline/readline.h not found, $msg])
588 if test "$have_readline" = "yes"; then
589 readline_ldflags="$readline_libs"
590 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
591 readline_ldflags="$readline_ldflags -lreadline"
592 ], [have_readline="no"])
593 if test "$have_readline" = "no"; then # try with -lcurses
595 AC_MSG_NOTICE([trying again with -lcurses])
596 unset ac_cv_search_rl_free_keymap 2> /dev/null
597 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
599 readline_ldflags="$readline_ldflags -lreadline -lcurses"
602 if test "$have_readline" = "no"; then # try with -ltermcap
604 AC_MSG_NOTICE([trying again with -ltermcap])
605 unset ac_cv_search_rl_free_keymap 2> /dev/null
606 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
608 readline_ldflags="$readline_ldflags -lreadline -ltermcap"
613 if test "$have_readline" = "yes"; then
616 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
620 #include <readline/readline.h>
623 AC_SUBST(readline_cppflags)
624 AC_SUBST(readline_ldflags)
625 AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
627 AC_MSG_WARN([libreadline not found or unusable])
629 CPPFLAGS="$OLD_CPPFLAGS"
630 LDFLAGS="$OLD_LDFLAGS"
632 ############################################################# libsamplerate
633 OLD_CPPFLAGS="$CPPFLAGS"
634 OLD_LDFLAGS="$LDFLAGS"
637 have_samplerate="yes"
638 AC_ARG_WITH(samplerate_headers, [AS_HELP_STRING(--with-samplerate-headers=dir,
639 [look for samplerate headers also in dir])])
640 if test -n "$with_samplerate_headers"; then
641 samplerate_cppflags="-I$with_samplerate_headers"
642 CPPFLAGS="$CPPFLAGS $samplerate_cppflags"
644 AC_ARG_WITH(samplerate_libs, [AS_HELP_STRING(--with-samplerate-libs=dir,
645 [look for samplerate libs also in dir])])
646 if test -n "$with_samplerate_libs"; then
647 samplerate_libs="-L$with_samplerate_libs"
648 LDFLAGS="$LDFLAGS $samplerate_libs"
651 AC_CHECK_HEADER(samplerate.h, [], have_samplerate=no)
652 AC_CHECK_LIB([samplerate], [src_process], [], have_samplerate=no, [])
654 if test "$have_samplerate" = "yes"; then
655 AC_SUBST(samplerate_cppflags)
656 samplerate_ldflags="$samplerate_libs -lsamplerate"
657 AC_SUBST(samplerate_ldflags)
659 AC_MSG_WARN([no resample support in para_audiod/para_filter])
661 CPPFLAGS="$OLD_CPPFLAGS"
662 LDFLAGS="$OLD_LDFLAGS"
664 ######################################################################### server
665 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
667 executables="$executables server"
668 server_cmdline_objs="server"
669 server_errlist_objs="
708 if test "$CRYPTOLIB" = openssl; then
709 server_errlist_objs="$server_errlist_objs crypt"
711 server_errlist_objs="$server_errlist_objs gcrypt"
713 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
714 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
715 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
716 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
717 if test "$have_faad" = "yes"; then
718 server_errlist_objs="$server_errlist_objs aac_afh aac_common"
720 if test "$have_flac" = "yes"; then
721 server_errlist_objs="$server_errlist_objs flac_afh"
723 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
724 AC_SUBST(server_objs, add_dot_o($server_objs))
725 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
726 objlist_to_errlist($server_errlist_objs), errors used by para_server)
730 ############################################################# client
731 if test -n "$CRYPTOLIB"; then
733 executables="$executables client"
734 client_cmdline_objs="client"
735 client_errlist_objs="
751 if test "$CRYPTOLIB" = openssl; then
752 client_errlist_objs="$client_errlist_objs crypt"
754 client_errlist_objs="$client_errlist_objs gcrypt"
756 if test "$have_readline" = "yes"; then
757 client_errlist_objs="$client_errlist_objs interactive"
759 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
760 AC_SUBST(client_objs, add_dot_o($client_objs))
761 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
762 objlist_to_errlist($client_errlist_objs), errors used by para_client)
766 ############################################################# audiod
767 if test -n "$CRYPTOLIB"; then
769 executables="$executables audiod"
770 audiod_audio_formats="wma"
771 audiod_cmdline_objs="$audiod_cmdline_objs
783 audiod_errlist_objs="$audiod_errlist_objs
821 if test "$CRYPTOLIB" = openssl; then
822 audiod_errlist_objs="$audiod_errlist_objs crypt"
824 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
826 if test "$have_core_audio" = "yes"; then
827 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
828 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
830 NEED_VORBIS_OBJECTS && {
831 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
832 audiod_audio_formats="$audiod_audio_formats ogg"
834 NEED_SPEEX_OBJECTS && {
835 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
836 audiod_audio_formats="$audiod_audio_formats spx"
838 NEED_OPUS_OBJECTS && {
839 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
840 audiod_audio_formats="$audiod_audio_formats opus"
842 if test "$have_faad" = "yes"; then
843 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
844 audiod_audio_formats="$audiod_audio_formats aac"
846 if test "$have_mad" = "yes"; then
847 audiod_audio_formats="$audiod_audio_formats mp3"
848 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
849 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
851 if test "$have_flac" = "yes"; then
852 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
853 audiod_audio_formats="$audiod_audio_formats flac"
855 if test "$have_oss" = "yes"; then
856 audiod_errlist_objs="$audiod_errlist_objs oss_write"
857 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
859 if test "$have_alsa" = "yes"; then
860 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
861 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
863 if test "$have_ao" = "yes"; then
864 audiod_errlist_objs="$audiod_errlist_objs ao_write"
865 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
867 if test "$have_samplerate" = "yes"; then
868 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
869 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
871 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
872 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
873 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
874 errors used by para_audiod)
876 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
877 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
878 enum of audio formats supported by audiod)
879 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
880 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
884 ########################################################################### fade
885 if test "$have_oss" = "yes" -o "$have_alsa" = "yes"; then
887 executables="$executables fade"
888 fade_cmdline_objs="fade"
889 fade_errlist_objs="fade exec string fd version ggo"
890 if test "$have_oss" = "yes"; then
891 fade_errlist_objs="$fade_errlist_objs oss_mix"
892 mixers="${mixers}oss "
893 default_mixer="OSS_MIX"
895 if test "$have_alsa" = "yes"; then
896 fade_errlist_objs="$fade_errlist_objs alsa_mix"
897 mixers="${mixers}alsa "
898 default_mixer="ALSA_MIX"
900 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
901 AC_SUBST(fade_objs, add_dot_o($fade_objs))
902 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
903 objlist_to_errlist($fade_errlist_objs),
904 errors used by para_fade)
907 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
910 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
911 enum of supported mixers)
912 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
913 use this mixer if none was specified)
914 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
915 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
918 printf 'extern void '$i'_mix_init(struct mixer *); '
921 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
922 init functions of the supported mixers)
923 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
924 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
927 AC_MSG_WARN([no mixer support])
929 ########################################################################### gui
930 if test "$have_curses" = "yes"; then
932 executables="$executables gui"
933 gui_cmdline_objs="gui"
948 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
949 AC_SUBST(gui_objs, add_dot_o($gui_objs))
950 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
951 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
954 AC_MSG_WARN([no curses lib, cannot build para_gui])
956 ######################################################################## filter
966 filter_errlist_objs="
991 filter_cmdline_objs="
998 NEED_VORBIS_OBJECTS && {
999 filters="$filters oggdec"
1000 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
1002 NEED_SPEEX_OBJECTS && {
1003 filters="$filters spxdec"
1004 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
1006 NEED_OPUS_OBJECTS && {
1007 filters="$filters opusdec"
1008 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
1010 if test "$have_faad" = "yes"; then
1011 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
1012 filters="$filters aacdec"
1014 if test "$have_mad" = "yes"; then
1015 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
1016 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
1017 filters="$filters mp3dec"
1019 if test "$have_flac" = "yes"; then
1020 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
1021 filters="$filters flacdec"
1023 if test "$have_samplerate" = "yes"; then
1024 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
1025 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
1026 filters="$filters resample"
1028 filters="$(echo $filters)"
1030 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
1032 AC_SUBST(filter_objs, add_dot_o($filter_objs))
1033 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
1034 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
1036 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
1037 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
1038 enum of supported filters)
1039 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
1040 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
1041 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
1042 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
1043 ########################################################################## recv
1073 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
1074 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
1075 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
1076 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
1078 if test "$have_faad" = "yes"; then
1079 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
1081 if test "$have_flac" = "yes"; then
1082 recv_errlist_objs="$recv_errlist_objs flac_afh"
1084 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
1085 AC_SUBST(receivers, "http dccp udp afh")
1086 AC_SUBST(recv_objs, add_dot_o($recv_objs))
1087 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
1088 errors used by para_recv)
1089 ########################################################################### afh
1090 audio_format_handlers="mp3 wma"
1091 afh_cmdline_objs="afh"
1104 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
1105 NEED_VORBIS_OBJECTS && {
1106 afh_errlist_objs="$afh_errlist_objs ogg_afh"
1107 audio_format_handlers="$audio_format_handlers ogg"
1109 NEED_SPEEX_OBJECTS && {
1110 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
1111 audio_format_handlers="$audio_format_handlers spx"
1113 NEED_OPUS_OBJECTS && {
1114 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
1115 audio_format_handlers="$audio_format_handlers opus"
1117 if test "$have_faad" = "yes"; then
1118 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
1119 audio_format_handlers="$audio_format_handlers aac"
1121 if test "$have_flac" = "yes"; then
1122 afh_errlist_objs="$afh_errlist_objs flac_afh"
1123 audio_format_handlers="$audio_format_handlers flac"
1126 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
1128 AC_SUBST(afh_objs, add_dot_o($afh_objs))
1129 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
1130 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
1131 ########################################################################## play
1177 if test "$have_core_audio" = "yes"; then
1178 play_errlist_objs="$play_errlist_objs osx_write ipc"
1179 play_cmdline_objs="$play_cmdline_objs osx_write"
1181 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
1182 NEED_VORBIS_OBJECTS && {
1183 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
1185 NEED_SPEEX_OBJECTS && {
1186 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
1188 NEED_OPUS_OBJECTS &&
1189 play_errlist_objs="$play_errlist_objs
1194 if test "$have_faad" = "yes"; then
1195 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
1197 if test "$have_mad" = "yes"; then
1198 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
1199 play_errlist_objs="$play_errlist_objs mp3dec_filter"
1201 if test "$have_flac" = "yes"; then
1202 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
1204 if test "$have_oss" = "yes"; then
1205 play_errlist_objs="$play_errlist_objs oss_write"
1206 play_cmdline_objs="$play_cmdline_objs oss_write"
1208 if test "$have_alsa" = "yes"; then
1209 play_errlist_objs="$play_errlist_objs alsa_write"
1210 play_cmdline_objs="$play_cmdline_objs alsa_write"
1212 if test "$have_ao" = "yes"; then
1213 play_errlist_objs="$play_errlist_objs ao_write"
1214 play_cmdline_objs="$play_cmdline_objs ao_write"
1216 if test "$have_readline" = "yes"; then
1217 play_errlist_objs="$play_errlist_objs interactive"
1219 if test "$have_samplerate" = "yes"; then
1220 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1221 play_cmdline_objs="$play_cmdline_objs resample_filter"
1224 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1225 AC_SUBST(play_objs, add_dot_o($play_objs))
1226 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1227 objlist_to_errlist($play_errlist_objs), errors used by para_play)
1228 ######################################################################### write
1229 write_cmdline_objs="
1233 write_errlist_objs="
1248 default_writer="FILE_WRITE"
1250 if test "$have_core_audio" = "yes"; then
1251 write_errlist_objs="$write_errlist_objs osx_write ipc"
1252 write_cmdline_objs="$write_cmdline_objs osx_write"
1253 writers="$writers osx"
1254 default_writer="OSX_WRITE"
1256 if test "$have_ao" = "yes"; then
1257 write_errlist_objs="$write_errlist_objs ao_write"
1258 write_cmdline_objs="$write_cmdline_objs ao_write"
1259 writers="$writers ao"
1260 default_writer="AO_WRITE"
1262 if test "$have_oss" = "yes"; then
1263 write_errlist_objs="$write_errlist_objs oss_write"
1264 write_cmdline_objs="$write_cmdline_objs oss_write"
1265 writers="$writers oss"
1266 default_writer="OSS_WRITE"
1268 if test "$have_alsa" = "yes"; then
1269 write_errlist_objs="$write_errlist_objs alsa_write"
1270 write_cmdline_objs="$write_cmdline_objs alsa_write"
1271 writers="$writers alsa"
1272 default_writer="ALSA_WRITE"
1275 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1276 AC_SUBST(write_objs, add_dot_o($write_objs))
1277 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1278 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1279 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1280 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1281 enum of supported writers)
1282 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1283 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1284 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1285 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1286 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1287 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1288 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1289 ######################################################################## audioc
1290 audioc_cmdline_objs="audioc"
1291 audioc_errlist_objs="
1299 if test "$have_readline" = "yes"; then
1300 audioc_errlist_objs="$audioc_errlist_objs
1307 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1308 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1309 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1310 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1311 ############################################################# error2.h
1312 # these are always built
1315 $filter_errlist_objs
1316 $audioc_errlist_objs
1322 # optional executables
1323 if test "$build_server" = "yes"; then
1324 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1326 if test "$build_gui" = "yes"; then
1327 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1329 if test "$build_fade" = "yes"; then
1330 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1332 if test "$build_client" = "yes"; then
1333 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1335 if test "$build_audiod" = "yes"; then
1336 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1339 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1341 object_executable_matrix=
1342 for i in $executables; do
1343 eval objs=\$${i}_errlist_objs
1344 object_executable_matrix="$object_executable_matrix $i: $objs"
1346 # use echo to replace newlines by space
1347 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1349 SS=$(for obj in $all_errlist_objs; do
1350 printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1351 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1352 [enum {$SS NUM_SS}],
1353 [list of all objects that use the paraslash error facility]
1355 ################################################################## status items
1357 status_items="basename status num_played mtime bitrate frequency file_size
1358 status_flags format score techinfo afs_mode
1359 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1360 offset seconds_total stream_start current_time audiod_uptime image_id
1361 lyrics_id duration directory lyrics_name image_name path hash channels
1362 last_played num_chunks chunk_time amplification artist title year album
1366 for i in $status_items; do
1367 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1369 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1370 [enum of all status items])
1373 for i in $status_items; do
1374 result="$result \"$i\", "
1376 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1377 [char * array of all status items])
1379 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1380 [formats supported by para_server and para_afh])
1382 AC_SUBST(executables)
1386 paraslash configuration:
1387 ~~~~~~~~~~~~~~~~~~~~~~~~
1388 crypto lib: ${CRYPTOLIB:-[none]}
1389 unix socket credentials: $have_ucred
1390 readline (interactive CLIs): $have_readline
1391 audio formats handlers: $audio_format_handlers
1392 id3 version2 support: $have_libid3tag
1396 para_fade: $build_fade
1397 para_server: $build_server
1398 para_gui: $build_gui
1399 para_fade: $build_fade
1400 para_client: $build_client
1401 para_audiod: $build_audiod