2 # Process this file with autoconf to produce a configure script.
7 AC_INIT([paraslash],[git],[maan@systemlinux.org])
8 AC_CONFIG_HEADER([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_para],[$(for i in $@; do printf "para_$i "; done)])
13 AC_DEFUN([objlist_to_errlist],[$(for i in $@; do printf "DEFINE_ERRLIST($(echo $i| tr 'a-z' 'A-Z'));"; done) [const char **para_errlist[[]]] = {$(for i in $@; do printf "PARA_ERRLIST($(echo $i | tr 'a-z' 'A-Z')), "; done) }])
14 AC_PATH_PROG(UNAMEPATH, uname, no)
15 if test "$UNAMEPATH" = "no"; then
16 AC_MSG_ERROR(unable to determine system type)
18 AC_MSG_CHECKING(os type)
19 OSTYPE="`$UNAMEPATH -s`"
20 AC_MSG_RESULT("$OSTYPE")
22 if test "$OSTYPE" = "SunOS"; then
23 # needed on SunOS for socket magic
24 arch_cppflags="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
25 AC_SUBST(arch_cppflags)
30 AC_PATH_PROG([gengetopt], [gengetopt])
31 test -z "$gengetopt" && AC_MSG_ERROR(
32 [gengetopt is required to build this package])
34 AC_PATH_PROG([help2man], [help2man])
35 test -z "$help2man" && AC_MSG_ERROR(
36 [help2man is required to build this package])
41 AC_SUBST(install_sh, [$INSTALL])
48 AC_CHECK_HEADERS([arpa/inet.h ctype.h fcntl.h limits.h netdb.h netinet/in.h \
49 stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h sys/un.h \
50 sys/ipc.h unistd.h utime.h stddef.h],
51 [], [AC_MSG_ERROR([$ac_header not found])])
53 # Checks for typedefs, structures, and compiler characteristics.
73 # Checks for library functions.
75 AC_PROG_GCC_TRADITIONAL
81 AC_FUNC_SELECT_ARGTYPES
88 AC_CHECK_FUNCS([atexit dup2 memchr memmove memset \
89 regcomp select strchr strdup strerror strstr strtol uname \
90 fchdir gettimeofday localtime_r munmap strcasecmp strcspn \
91 strncasecmp strrchr strspn alarm mkdir inet_ntoa socket], [],
92 [AC_MSG_ERROR([function not found, cannot live without it])])
94 AC_DEFUN([add_cmdline],[$(for i in $@; do printf "${i}.cmdline "; done)])
97 all_errlist_objs="mp3_afh afh_common net string signal time daemon
98 stat afh amp_filter fd ringbuffer sched audiod
99 grab_client filter_common wav_filter compress_filter http_recv
100 dccp_recv recv_common write_common file_write audiod_command
101 client_common recv stdout filter stdin audioc write client
102 exec send_common ggo udp_recv color fec fecdec_filter
103 prebuffer_filter bitstream imdct check_wav
104 wma_afh wma_common wmadec_filter buffer_tree crypt_common
105 gui gui_theme sideband afh_recv play version"
107 executables="recv filter audioc write client afh audiod play"
109 recv_cmdline_objs="add_cmdline(recv http_recv dccp_recv udp_recv afh_recv)"
112 http_recv recv_common recv time string net dccp_recv fd
113 sched stdout ggo udp_recv buffer_tree afh_recv afh_common
114 wma_afh wma_common mp3_afh version
119 filter_cmdline_objs="add_cmdline(filter compress_filter amp_filter prebuffer_filter)"
120 filter_errlist_objs="filter_common wav_filter compress_filter filter string
121 stdin stdout sched fd amp_filter ggo fecdec_filter fec version
122 prebuffer_filter time bitstream imdct wma_common wmadec_filter buffer_tree"
124 filters=" compress wav amp fecdec wmadec prebuffer"
126 audioc_cmdline_objs="add_cmdline(audioc)"
127 audioc_errlist_objs="
137 audiod_cmdline_objs="add_cmdline(audiod compress_filter http_recv dccp_recv file_write client amp_filter udp_recv prebuffer_filter)"
138 audiod_errlist_objs="audiod signal string daemon stat net crypt_common sideband
139 time grab_client filter_common wav_filter compress_filter amp_filter http_recv dccp_recv
140 recv_common fd sched write_common file_write audiod_command fecdec_filter
141 client_common ggo udp_recv color fec prebuffer_filter version
142 bitstream imdct wma_common wmadec_filter buffer_tree"
144 audiod_audio_formats="wma"
146 afh_cmdline_objs="add_cmdline(afh)"
147 afh_errlist_objs="afh string fd mp3_afh afh_common time wma_afh wma_common
151 write_cmdline_objs="add_cmdline(write file_write)"
152 write_errlist_objs="write write_common file_write time fd string sched stdin
153 buffer_tree ggo check_wav version"
156 default_writer="FILE_WRITE"
158 client_cmdline_objs="add_cmdline(client)"
159 client_errlist_objs="
177 gui_cmdline_objs="add_cmdline(gui)"
191 gui_objs="$gui_cmdline_objs $gui_errlist_objs"
192 play_errlist_objs="play fd sched ggo buffer_tree time string net
194 wma_afh wma_common mp3_afh
195 recv_common udp_recv http_recv dccp_recv
196 filter_common fec bitstream imdct
197 wav_filter compress_filter amp_filter prebuffer_filter fecdec_filter
199 write_common file_write
202 play_cmdline_objs="add_cmdline(http_recv dccp_recv udp_recv afh_recv compress_filter amp_filter prebuffer_filter file_write play)"
204 ########################################################################### snprintf
205 # ===========================================================================
206 # http://www.nongnu.org/autoconf-archive/ax_func_snprintf.html
207 # ===========================================================================
215 # Checks for a fully C99 compliant snprintf, in particular checks whether
216 # it does bounds checking and returns the correct string length; does the
217 # same check for vsnprintf. If no working snprintf or vsnprintf is found,
218 # it prints an error message and aborts.
222 # Copyright (c) 2008 Ruediger Kuhlmann <info@ruediger-kuhlmann.de>
224 # Copying and distribution of this file, with or without modification, are
225 # permitted in any medium without royalty provided the copyright notice
226 # and this notice are preserved.
228 AU_ALIAS([AC_FUNC_SNPRINTF], [AX_FUNC_SNPRINTF])
229 AC_DEFUN([AX_FUNC_SNPRINTF],
230 [AC_CHECK_FUNCS(snprintf vsnprintf)
231 AC_MSG_CHECKING(for working snprintf)
232 AC_CACHE_VAL(ac_cv_have_working_snprintf,
233 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
238 char bufs[5] = { 'x', 'x', 'x', '\0', '\0' };
239 char bufd[5] = { 'x', 'x', 'x', '\0', '\0' };
241 i = snprintf (bufs, 2, "%s", "111");
242 if (strcmp (bufs, "1")) exit (1);
243 if (i != 3) exit (1);
244 i = snprintf (bufd, 2, "%d", 111);
245 if (strcmp (bufd, "1")) exit (1);
246 if (i != 3) exit (1);
248 }]])],[ac_cv_have_working_snprintf=yes],
249 [ac_cv_have_working_snprintf=no],[ac_cv_have_working_snprintf=cross])])
250 AC_MSG_RESULT([$ac_cv_have_working_snprintf])
251 AC_MSG_CHECKING(for working vsnprintf)
252 AC_CACHE_VAL(ac_cv_have_working_vsnprintf,
253 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
256 int my_vsnprintf (char *buf, const char *tmpl, ...)
260 va_start (args, tmpl);
261 i = vsnprintf (buf, 2, tmpl, args);
268 char bufs[5] = { 'x', 'x', 'x', '\0', '\0' };
269 char bufd[5] = { 'x', 'x', 'x', '\0', '\0' };
271 i = my_vsnprintf (bufs, "%s", "111");
272 if (strcmp (bufs, "1")) exit (1);
273 if (i != 3) exit (1);
274 i = my_vsnprintf (bufd, "%d", 111);
275 if (strcmp (bufd, "1")) exit (1);
276 if (i != 3) exit (1);
278 }]])],[ac_cv_have_working_vsnprintf=yes],
279 [ac_cv_have_working_vsnprintf=no],[ac_cv_have_working_vsnprintf=cross])])
280 AC_MSG_RESULT([$ac_cv_have_working_vsnprintf])
281 if test x$ac_cv_have_working_snprintf$ac_cv_have_working_vsnprintf != "xyesyes"; then
282 AC_MSG_ERROR([fatal: buggy snprintf() detected])
285 ################################################################## clock_gettime
287 AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
288 AC_CHECK_LIB([rt], [clock_gettime], [clock_gettime_lib=rt], [], [])
290 if test -n "$clock_gettime_lib"; then
291 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [
292 define to 1 if clock_gettime() is supported])
294 if test "$clock_gettime_lib" = "rt"; then
295 AC_SUBST(clock_gettime_ldflags, -lrt)
297 ########################################################################### osl
299 OLD_CPPFLAGS="$CPPFLAGS"
300 OLD_LD_FLAGS="$LDFLAGS"
302 AC_ARG_WITH(osl_headers, [AS_HELP_STRING(--with-osl-headers=dir,
303 [look for osl.h also in dir])])
304 if test -n "$with_osl_headers"; then
305 osl_cppflags="-I$with_osl_headers"
306 CPPFLAGS="$CPPFLAGS $osl_cppflags"
308 AC_ARG_WITH(osl_libs, [AS_HELP_STRING(--with-osl-libs=dir,
309 [look for libosl also in dir])])
310 if test -n "$with_osl_libs"; then
311 osl_libs="-L$with_osl_libs"
312 LDFLAGS="$LDFLAGS $osl_libs"
315 AC_CHECK_HEADER(osl.h, [], have_osl=no)
316 AC_CHECK_LIB([osl], [osl_open_table], [], have_osl=no)
317 if test "$have_osl" = "no"; then
318 AC_MSG_WARN([libosl not found, can not build para_server.
320 http://systemlinux.org/~maan/osl
322 git clone git://git.tuebingen.mpg.de/osl
325 extras="$extras server"
326 executables="$executables server"
327 server_cmdline_objs="add_cmdline(server)"
328 server_errlist_objs="
365 all_errlist_objs="$all_errlist_objs server vss command
366 http_send close_on_fork mm ipc dccp_send user_list
367 chunk_queue afs aft mood score attribute blob playlist
371 audio_format_handlers="mp3 wma"
372 AC_SUBST(osl_cppflags)
373 server_ldflags="$server_ldflags $osl_libs -losl"
375 CPPFLAGS="$OLD_CPPFLAGS"
376 LDFLAGS="$OLD_LDFLAGS"
378 ########################################################################### crypto
379 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
380 Force using crypto library "lib". This package requires either
381 openssl or libgcrypt being installed. Possible values for "lib"
382 are thus "openssl" and "gcrypt". If this option is not given,
383 openssl is tried first. If openssl was not found, gcrypt is
386 case "$enable_cryptolib" in
387 "openssl") check_openssl="yes"; check_gcrypt="no";;
388 "gcrypt") check_openssl="no"; check_gcrypt="yes";;
389 "") check_openssl="yes"; check_gcrypt="yes";;
390 *) AC_MSG_ERROR([invalid value "$enable_cryptolib" for --enable-cryptolib]);;
392 ###################################################################### openssl
393 if test "$check_openssl" = "yes"; then
394 OLD_CPPFLAGS="$CPPFLAGS"
395 OLD_LD_FLAGS="$LDFLAGS"
398 AC_ARG_WITH(openssl_headers, [AS_HELP_STRING(--with-openssl-headers=dir,
399 [look for openssl headers also in dir])])
400 if test -n "$with_openssl_headers"; then
401 openssl_cppflags="-I$with_openssl_headers"
402 CPPFLAGS="$CPPFLAGS $openssl_cppflags"
404 AC_ARG_WITH(openssl_libs, [AS_HELP_STRING(--with-openssl-libs=dir,
405 [look for openssl libraries also in dir])])
406 if test -n "$with_openssl_libs"; then
407 openssl_libs="-L$with_openssl_libs"
408 LDFLAGS="$LDFLAGS $openssl_libs"
410 AC_CHECK_HEADER(openssl/ssl.h, [], [have_openssl="no"])
411 AC_CHECK_LIB([crypto], [RAND_bytes], [], [have_openssl="no"])
412 if test "$have_openssl" = "no" -a -z "$with_openssl_headers$with_openssl_libs"; then
413 # try harder: openssl is sometimes installed in /usr/local/ssl
414 openssl_cppflags="-I/usr/local/ssl/include"
415 CPPFLAGS="$CPPFLAGS $openssl_cppflags"
416 openssl_libs="-L/usr/local/ssl/lib"
417 LDFLAGS="$LDFLAGS $openssl_libs"
419 unset ac_cv_header_openssl_ssl_h 2> /dev/null
420 unset ac_cv_lib_crypto_RAND_bytes 2> /dev/null
421 AC_CHECK_HEADER(openssl/ssl.h, [have_openssl="yes"], [])
422 if test "$have_openssl" = "yes"; then
423 AC_CHECK_LIB([crypto], [RAND_bytes], [], [have_openssl="no"])
426 if test "$have_openssl" = "yes"; then
427 AC_DEFINE(HAVE_OPENSSL, 1, [define to 1 to turn on openssl support])
428 AC_SUBST(openssl_cppflags)
429 openssl_libs="$openssl_libs -lssl -lcrypto"
430 server_ldflags="$server_ldflags $openssl_libs"
431 client_ldflags="$client_ldflags $openssl_libs"
432 audiod_ldflags="$audiod_ldflags $openssl_libs"
434 all_errlist_objs="$all_errlist_objs crypt"
435 server_errlist_objs="$server_errlist_objs crypt"
436 client_errlist_objs="$client_errlist_objs crypt"
437 audiod_errlist_objs="$audiod_errlist_objs crypt"
441 AC_MSG_WARN([openssl libraries not found])
443 CPPFLAGS="$OLD_CPPFLAGS"
444 LDFLAGS="$OLD_LDFLAGS"
449 ########################################################################### gcrypt
450 if test "$check_gcrypt" = "yes"; then
451 OLD_CPPFLAGS="$CPPFLAGS"
452 OLD_LD_FLAGS="$LDFLAGS"
455 AC_ARG_WITH(gcrypt_headers, [AS_HELP_STRING(--with-gcrypt-headers=dir,
456 [look for gcrypt headers also in dir])])
457 if test -n "$with_gcrypt_headers"; then
458 gcrypt_cppflags="-I$with_gcrypt_headers"
459 CPPFLAGS="$CPPFLAGS $gcrypt_cppflags"
461 AC_ARG_WITH(gcrypt_libs, [AS_HELP_STRING(--with-gcrypt-libs=dir,
462 [look for libgcrypt also in dir])])
463 if test -n "$with_gcrypt_libs"; then
464 gcrypt_libs="-L$with_gcrypt_libs"
465 LDFLAGS="$LDFLAGS $gcrypt_libs"
467 AC_CHECK_HEADER(gcrypt.h, [], [have_gcrypt="no"])
468 AC_CHECK_LIB([gcrypt], [gcry_randomize], [], [have_gcrypt="no"])
469 if test "$have_gcrypt" = "yes"; then
470 AC_DEFINE(HAVE_GCRYPT, 1, [define to 1 to turn on gcrypt support])
471 AC_SUBST(gcrypt_cppflags)
472 gcrypt_libs="$gcrypt_libs -lgcrypt"
473 server_ldflags="$server_ldflags $gcrypt_libs"
474 client_ldflags="$client_ldflags $gcrypt_libs"
475 audiod_ldflags="$audiod_ldflags $gcrypt_libs"
477 all_errlist_objs="$all_errlist_objs gcrypt"
478 server_errlist_objs="$server_errlist_objs gcrypt"
479 client_errlist_objs="$client_errlist_objs gcrypt"
480 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
482 AC_MSG_WARN([gcrypt library not found])
484 CPPFLAGS="$OLD_CPPFLAGS"
485 LDFLAGS="$OLD_LDFLAGS"
490 ###########################################################################
491 if test "$have_openssl" = "no" -a "$have_gcrypt" = "no"; then
492 AC_MSG_ERROR([neither openssl nor gcrypt usable])
494 ########################################################################### libsocket
495 AC_CHECK_LIB([c], [socket],
497 [socket_lib="-lsocket"]
499 server_ldflags="$server_ldflags $socket_lib"
500 client_ldflags="$client_ldflags $socket_lib"
501 audioc_ldflags="$audioc_ldflags $socket_lib"
502 audiod_ldflags="$audiod_ldflags $socket_lib"
503 recv_ldflags="$recv_ldflags $socket_lib"
504 AC_SEARCH_LIBS([connect],[socket],[],[
505 AC_MSG_ERROR([Fatal: Did not find connect().])
507 ########################################################################### libnsl
508 AC_CHECK_LIB([c], [gethostbyname],
512 server_ldflags="$server_ldflags $nsl_lib"
513 client_ldflags="$client_ldflags $nsl_lib"
514 audioc_ldflags="$audioc_ldflags $nsl_lib"
515 recv_ldflags="$recv_ldflags $nsl_lib"
516 AC_SEARCH_LIBS([inet_ntoa],[nsl],[],[
517 AC_MSG_ERROR([Fatal: Did not find inet_ntoa().])
519 ########################################################################### ucred
520 AC_MSG_CHECKING(for struct ucred)
521 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
523 #include <sys/types.h>
524 #include <sys/socket.h>
526 struct ucred sucred; sucred.pid=0;
527 ]])],[have_ucred=yes],[have_ucred=no])
528 AC_MSG_RESULT($have_ucred)
529 if test ${have_ucred} = yes; then
530 AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
532 ########################################################################### gengetopt
533 echo 'option "z" z "" flag off' | $gengetopt --file-name conftest-ggo &&
535 [gengetopt_args_info_description],
536 [ggo_descriptions_declared=yes],
537 [ggo_descriptions_declared=no],
538 [#include "conftest-ggo.h"]
540 AC_SUBST(ggo_descriptions_declared)
541 ########################################################################### curses
543 OLD_CPPFLAGS="$CPPFLAGS"
544 OLD_LD_FLAGS="$LDFLAGS"
546 AC_ARG_WITH(curses_headers, [AS_HELP_STRING(--with-curses-headers=dir,
547 [look for curses.h also in dir])])
548 if test -n "$with_curses_headers"; then
549 curses_cppflags="-I$with_curses_headers"
550 CPPFLAGS="$CPPFLAGS $curses_cppflags"
552 AC_ARG_WITH(curses_libs, [AS_HELP_STRING(--with-curses-libs=dir,
553 [look for libcurses also in dir])])
554 if test -n "$with_curses_libs"; then
555 curses_libs="-L$with_curses_libs"
556 LDFLAGS="$LDFLAGS $curses_libs"
558 AC_CHECK_HEADER(curses.h, [], [
561 gui_ldflags="$curses_libs"
562 AC_CHECK_LIB([ncursesw], [initscr],
563 [gui_ldflags="$curses_libs -lncursesw"], [
564 AC_CHECK_LIB([curses], [initscr],
565 [gui_ldflags="$curses_libs -lcurses"],
570 if test "$have_curses" = "yes"; then
571 AC_SUBST(curses_cppflags)
573 executables="$executables gui"
575 AC_MSG_WARN([no curses lib, cannot build para_gui])
577 CPPFLAGS="$OLD_CPPFLAGS"
578 LDFLAGS="$OLD_LDFLAGS"
581 ########################################################################### ip_mreqn
582 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
583 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
589 ]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
590 AC_MSG_RESULT($have_ip_mreqn)
591 if test ${have_ip_mreqn} = yes; then
592 AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
594 ########################################################################### osx
596 AC_MSG_CHECKING(for CoreAudio (MacOs))
597 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
598 #include <CoreAudio/CoreAudio.h>
601 ]])],[have_core_audio=yes],[have_core_audio=no])
602 AC_MSG_RESULT($have_core_audio)
603 if test ${have_core_audio} = yes; then
604 f1="-framework CoreAudio"
605 f2="-framework AudioToolbox"
606 f3="-framework AudioUnit"
607 f4="-framework CoreServices"
610 all_errlist_objs="$all_errlist_objs osx_write"
611 # ipc is linked into para_server server and into the osx writer. If osl
612 # was not found, para_server will not be built and ipc has not yet been
613 # added to the list of all objects, so we must add it here.
614 if test "$have_osl" = "no"; then
615 all_errlist_objs="$all_errlist_objs ipc"
617 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
618 audiod_cmdline_objs="$audiod_cmdline_objs osx_write.cmdline"
619 audiod_ldflags="$audiod_ldflags $f"
621 play_errlist_objs="$play_errlist_objs osx_write ipc"
622 play_cmdline_objs="$play_cmdline_objs osx_write.cmdline"
623 play_ldflags="$play_ldflags $f"
625 write_errlist_objs="$write_errlist_objs osx_write ipc"
626 write_cmdline_objs="$write_cmdline_objs osx_write.cmdline"
627 write_ldflags="$write_ldflags $f"
628 writers="$writers osx"
629 default_writer="OSX_WRITE"
630 AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
632 ####################################################### ogg/vorbis/speex/opus
634 OLD_CPPFLAGS="$CPPFLAGS"
635 OLD_LD_FLAGS="$LDFLAGS"
637 AC_ARG_WITH(ogg_headers, [AS_HELP_STRING(--with-ogg-headers=dir,
638 [look for ogg headers also in dir])])
639 AC_ARG_WITH(ogg_libs, [AS_HELP_STRING(--with-ogg-libs=dir,
640 [look for ogg libs also in dir])])
641 AC_ARG_WITH(vorbis_headers, [AS_HELP_STRING(--with-vorbis-headers=dir,
642 [look for vorbis headers also in dir])])
643 AC_ARG_WITH(vorbis_libs, [AS_HELP_STRING(--with-vorbis-libs=dir,
644 [look for vorbis libs also in dir])])
645 AC_ARG_WITH(speex_headers, [AS_HELP_STRING(--with-speex-headers=dir,
646 [look for speex headers also in dir])])
647 AC_ARG_WITH(speex_libs, [AS_HELP_STRING(--with-speex-libs=dir,
648 [look for speex libs also in dir])])
649 AC_ARG_WITH(opus_headers, [AS_HELP_STRING(--with-opus-headers=dir,
650 [look for opus headers also in dir])])
651 AC_ARG_WITH(opus_libs, [AS_HELP_STRING(--with-opus-libs=dir,
652 [look for opus libs also in dir])])
654 if test -n "$with_ogg_headers"; then
655 ogg_cppflags="-I$with_ogg_headers"
656 CPPFLAGS="$CPPFLAGS $ogg_cppflags"
658 if test -n "$with_ogg_libs"; then
659 ogg_libs="-L$with_ogg_libs"
660 LDFLAGS="$LDFLAGS $ogg_libs"
662 AC_CHECK_HEADERS([ogg/ogg.h], [], [ have_ogg="no"; ])
663 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [ have_ogg="no" ])
668 if test "$have_ogg" = "yes"; then
670 if test -n "$with_vorbis_headers"; then
671 vorbis_cppflags="-I$with_vorbis_headers"
672 CPPFLAGS="$CPPFLAGS $vorbis_cppflags"
674 if test -n "$with_vorbis_libs"; then
675 vorbis_libs="-L$with_vorbis_libs"
676 LDFLAGS="$LDFLAGS $vorbis_libs"
678 AC_CHECK_HEADERS([vorbis/codec.h], [], [ have_vorbis="no" ])
679 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [ have_vorbis="no" ])
682 if test -n "$with_speex_headers"; then
683 speex_cppflags="-I$with_speex_headers"
684 CPPFLAGS="$CPPFLAGS $speex_cppflags"
686 if test -n "$with_speex_libs"; then
687 speex_libs="-L$with_speex_libs"
688 LDFLAGS="$LDFLAGS $speex_libs"
690 AC_CHECK_LIB([speex], [speex_decoder_init], [], [ have_speex="no" ])
691 AC_CHECK_HEADERS([speex/speex.h], [], [ have_speex="no" ])
694 if test -n "$with_opus_headers"; then
695 opus_cppflags="-I$with_opus_headers"
696 CPPFLAGS="$CPPFLAGS $opus_cppflags"
698 if test -n "$with_opus_libs"; then
699 speex_libs="-L$with_opus_libs"
700 LDFLAGS="$LDFLAGS $opus_libs"
702 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [ have_opus="no" ])
703 AC_CHECK_HEADERS([opus/opus.h], [], [ have_opus="no" ])
705 AC_MSG_WARN([vorbis/speex/opus depend on libogg, which was not detected])
711 msg="support in para_server/para_filter/para_afh"
712 if test "$have_vorbis" = "yes" || \
713 test "$have_speex" = "yes" || \
714 test "$have_opus" = "yes"; then
715 AC_SUBST(ogg_cppflags)
716 ogg_libs="$ogg_libs -logg"
717 if test "$OSTYPE" = "Darwin"; then
718 ogg_libs="-Wl,-bind_at_load $ogg_libs"
720 server_ldflags="$server_ldflags $ogg_libs"
721 filter_ldflags="$filter_ldflags $ogg_libs"
722 audiod_ldflags="$audiod_ldflags $ogg_libs"
723 play_ldflags="$play_ldflags $ogg_libs"
724 afh_ldflags="$afh_ldflags $ogg_libs"
725 recv_ldflags="$recv_ldflags $ogg_libs"
726 all_errlist_objs="$all_errlist_objs ogg_afh_common"
727 afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
728 recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
729 server_errlist_objs="$server_errlist_objs ogg_afh_common"
730 play_errlist_objs="$play_errlist_objs ogg_afh_common"
732 if test "$have_vorbis" = "yes"; then
733 all_errlist_objs="$all_errlist_objs oggdec_filter ogg_afh"
734 AC_DEFINE(HAVE_OGGVORBIS, 1, define to 1 to turn on ogg/vorbis support)
735 filters="$filters oggdec"
736 vorbis_libs="-lvorbis -lvorbisfile"
737 server_ldflags="$server_ldflags $vorbis_libs"
738 filter_ldflags="$filter_ldflags $vorbis_libs"
739 audiod_ldflags="$audiod_ldflags $vorbis_libs"
740 play_ldflags="$play_ldflags $vorbis_libs"
741 afh_ldflags="$afh_ldflags $vorbis_libs"
742 recv_ldflags="$recv_ldflags $vorbis_libs"
744 server_errlist_objs="$server_errlist_objs ogg_afh"
745 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
746 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
747 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
748 afh_errlist_objs="$afh_errlist_objs ogg_afh"
749 recv_errlist_objs="$recv_errlist_objs ogg_afh"
751 audiod_audio_formats="$audiod_audio_formats ogg"
752 audio_format_handlers="$audio_format_handlers ogg"
754 AC_MSG_WARN([no ogg/vorbis $msg])
756 if test "$have_speex" = "yes"; then
757 all_errlist_objs="$all_errlist_objs spxdec_filter spx_afh spx_common"
758 AC_DEFINE(HAVE_SPEEX, 1, define to 1 to turn on ogg/speex support)
759 filters="$filters spxdec"
761 server_ldflags="$server_ldflags $speex_libs"
762 filter_ldflags="$filter_ldflags $speex_libs"
763 audiod_ldflags="$audiod_ldflags $speex_libs"
764 play_ldflags="$play_ldflags $speex_libs"
765 afh_ldflags="$afh_ldflags $speex_libs"
766 recv_ldflags="$recv_ldflags $speex_libs"
768 server_errlist_objs="$server_errlist_objs spx_afh spx_common"
769 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
770 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
771 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
772 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
773 recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
775 audiod_audio_formats="$audiod_audio_formats spx"
776 audio_format_handlers="$audio_format_handlers spx"
778 AC_MSG_WARN([no ogg/speex $msg])
780 if test "$have_opus" = "yes"; then
781 all_errlist_objs="$all_errlist_objs opusdec_filter opus_afh opus_common"
782 AC_DEFINE(HAVE_OPUS, 1, define to 1 to turn on ogg/opus support)
783 filters="$filters opusdec"
785 server_ldflags="$server_ldflags $opus_libs"
786 filter_ldflags="$filter_ldflags $opus_libs"
787 audiod_ldflags="$audiod_ldflags $opus_libs"
788 afh_ldflags="$afh_ldflags $opus_libs"
789 play_ldflags="$play_ldflags $opus_libs"
790 recv_ldflags="$recv_ldflags $opus_libs"
792 server_errlist_objs="$server_errlist_objs opus_afh opus_common"
793 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
794 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
795 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
796 play_errlist_objs="$play_errlist_objs opusdec_filter opus_afh opus_common"
797 recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
799 audiod_audio_formats="$audiod_audio_formats opus"
800 server_audio_formats="$server_audio_formats opus"
802 AC_MSG_WARN([no ogg/opus $msg])
804 CPPFLAGS="$OLD_CPPFLAGS"
805 LDFLAGS="$OLD_LDFLAGS"
807 ########################################################################### faad
809 OLD_CPPFLAGS="$CPPFLAGS"
810 OLD_LD_FLAGS="$LDFLAGS"
812 AC_ARG_WITH(faad_headers, [AS_HELP_STRING(--with-faad-headers=dir,
813 [look for neaacdec.h also in dir])])
814 if test -n "$with_faad_headers"; then
815 faad_cppflags="-I$with_faad_headers"
816 CPPFLAGS="$CPPFLAGS $faad_cppflags"
818 AC_ARG_WITH(faad_libs, [AS_HELP_STRING(--with-faad-libs=dir,
819 [look for libfaad also in dir])])
820 if test -n "$with_faad_libs"; then
821 faad_libs="-L$with_faad_libs"
822 LDFLAGS="$LDFLAGS $faad_libs"
824 AC_CHECK_HEADER(neaacdec.h, [], have_faad=no)
825 AC_CHECK_LIB([faad], [NeAACDecOpen], [], have_faad=no)
826 if test "$have_faad" = "yes"; then
827 AC_DEFINE(HAVE_FAAD, 1, define to 1 if you want to build the aacdec filter)
828 all_errlist_objs="$all_errlist_objs aac_common aacdec_filter aac_afh"
829 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
830 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
831 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
832 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
833 server_errlist_objs="$server_errlist_objs aac_afh aac_common"
834 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
836 server_ldflags="$server_ldflags $faad_libs -lfaad"
837 filter_ldflags="$filter_ldflags $faad_libs -lfaad"
838 audiod_ldflags="$audiod_ldflags $faad_libs -lfaad"
839 play_ldflags="$play_ldflags $faad_libs -lfaad"
840 afh_ldflags="$afh_ldflags $faad_libs -lfaad"
841 recv_ldflags="$afh_ldflags $faad_libs -lfaad"
843 audiod_audio_formats="$audiod_audio_formats aac"
844 audio_format_handlers="$audio_format_handlers aac"
845 filters="$filters aacdec"
846 AC_SUBST(faad_cppflags)
848 AC_MSG_WARN([no aac support in para_audiod/para_filter])
850 CPPFLAGS="$OLD_CPPFLAGS"
851 LDFLAGS="$OLD_LDFLAGS"
853 ########################################################################### mad
855 OLD_CPPFLAGS="$CPPFLAGS"
856 OLD_LD_FLAGS="$LDFLAGS"
859 AC_ARG_WITH(mad_headers, [AS_HELP_STRING(--with-mad-headers=dir,
860 [look for mad.h also in dir])])
861 if test -n "$with_mad_headers"; then
862 mad_cppflags="-I$with_mad_headers"
863 CPPFLAGS="$CPPFLAGS $mad_cppflags"
865 AC_ARG_WITH(mad_libs, [AS_HELP_STRING(--with-mad-libs=dir,
866 [look for libmad also in dir])])
867 if test -n "$with_mad_libs"; then
868 mad_libs="-L$with_mad_libs"
869 LDFLAGS="$LDFLAGS $mad_libs"
871 AC_CHECK_HEADERS([mad.h], [], [
874 AC_CHECK_LIB([mad], [mad_stream_init], [], [
877 if test "$have_mad" = "yes"; then
878 AC_DEFINE(HAVE_MAD, 1, define to 1 if you want to build the mp3dec filter)
879 filter_cmdline_objs="$filter_cmdline_objs add_cmdline(mp3dec_filter)"
880 audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(mp3dec_filter)"
881 play_cmdline_objs="$play_cmdline_objs add_cmdline(mp3dec_filter)"
882 all_errlist_objs="$all_errlist_objs mp3dec_filter"
883 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
884 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
885 play_errlist_objs="$play_errlist_objs mp3dec_filter"
886 filter_ldflags="$filter_ldflags $mad_libs -lmad"
887 audiod_ldflags="$audiod_ldflags $mad_libs -lmad"
888 play_ldflags="$play_ldflags $mad_libs -lmad"
889 audiod_audio_formats="$audiod_audio_formats mp3"
890 filters="$filters mp3dec"
891 AC_SUBST(mad_cppflags)
893 AC_MSG_WARN([no mp3dec support in para_audiod/para_filter])
895 CPPFLAGS="$OLD_CPPFLAGS"
896 LDFLAGS="$OLD_LDFLAGS"
898 ###################################################################### libid3tag
899 OLD_CPPFLAGS="$CPPFLAGS"
900 OLD_LD_FLAGS="$LDFLAGS"
904 AC_ARG_WITH(id3tag_headers, [AS_HELP_STRING(--with-id3tag-headers=dir,
905 [look for id3tag header files also in dir])])
906 if test -n "$with_id3tag_headers"; then
907 id3tag_cppflags="-I$with_id3tag_headers"
908 CPPFLAGS="$CPPFLAGS $id3tag_cppflags"
910 AC_ARG_WITH(id3tag_libs, [AS_HELP_STRING(--with-id3tag-libs=dir,
911 [look for id3tag libs also in dir])])
912 if test -n "$with_id3tag_libs"; then
913 id3tag_libs="-L$with_id3tag_libs"
914 LDFLAGS="$LDFLAGS $id3tag_libs"
917 AC_MSG_CHECKING(for libid3tag)
918 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
921 struct id3_tag t = {.flags = 0};
922 ]])],[],[have_libid3tag=no])
923 AC_MSG_RESULT($have_libid3tag)
925 if test ${have_libid3tag} = yes; then
926 AC_DEFINE(HAVE_LIBID3TAG, 1, define to 1 you have libid3tag)
927 server_ldflags="$server_ldflags $id3tag_libs -lid3tag -lz"
928 afh_ldflags="$afh_ldflags $id3tag_libs -lid3tag -lz"
929 play_ldflags="$play_ldflags -lz"
930 recv_ldflags="$recv_ldflags $id3tag_libs -lid3tag"
931 play_ldflags="$play_ldflags $id3tag_libs -lid3tag"
932 AC_SUBST(id3tag_cppflags)
934 AC_MSG_WARN([no support for id3v2 tags])
936 CPPFLAGS="$OLD_CPPFLAGS"
937 LDFLAGS="$OLD_LDFLAGS"
939 ########################################################################### flac
940 OLD_CPPFLAGS="$CPPFLAGS"
941 OLD_LD_FLAGS="$LDFLAGS"
945 AC_ARG_WITH(flac_headers, [AS_HELP_STRING(--with-flac-headers=dir,
946 [look for flac headers also in dir])])
947 if test -n "$with_flac_headers"; then
948 flac_cppflags="-I$with_flac_headers"
949 CPPFLAGS="$CPPFLAGS $flac_cppflags"
951 AC_ARG_WITH(flac_libs, [AS_HELP_STRING(--with-flac-libs=dir,
952 [look for flac libs also in dir])])
953 if test -n "$with_flac_libs"; then
954 flac_libs="-L$with_flac_libs"
955 LDFLAGS="$LDFLAGS $flac_libs"
957 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], have_flac=no)
958 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], have_flac=no, -logg -lm)
959 if test "$have_flac" = "yes"; then
960 AC_DEFINE(HAVE_FLAC, 1, define to 1 if you want to build the flacdec filter)
961 all_errlist_objs="$all_errlist_objs flacdec_filter flac_afh"
962 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
963 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
964 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
965 afh_errlist_objs="$afh_errlist_objs flac_afh"
966 server_errlist_objs="$server_errlist_objs flac_afh"
967 recv_errlist_objs="$recv_errlist_objs flac_afh"
968 filter_ldflags="$filter_ldflags $flac_libs -lFLAC"
969 audiod_ldflags="$audiod_ldflags $flac_libs -lFLAC"
970 play_ldflags="$play_ldflags $flac_libs -lFLAC"
971 server_ldflags="$server_ldflags $flac_libs -lFLAC"
972 afh_ldflags="$afh_ldflags $flac_libs -lFLAC"
973 recv_ldflags="$afh_ldflags $flac_libs -lFLAC"
974 filters="$filters flacdec"
975 audio_format_handlers="$audio_format_handlers flac"
976 audiod_audio_formats="$audiod_audio_formats flac"
977 AC_SUBST(flac_cppflags)
979 AC_MSG_WARN([no flac support in para_audiod/para_filter/para_afh/para_server])
981 CPPFLAGS="$OLD_CPPFLAGS"
982 LDFLAGS="$OLD_LDFLAGS"
984 ########################################################################### oss
985 OLD_CPPFLAGS="$CPPFLAGS"
986 OLD_LD_FLAGS="$LDFLAGS"
990 msg="=> will not build oss writer"
992 AC_CHECK_HEADER(sys/soundcard.h, [
993 audiod_errlist_objs="$audiod_errlist_objs oss_write"
994 play_errlist_objs="$play_errlist_objs oss_write"
995 audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(oss_write)"
996 play_cmdline_objs="$play_cmdline_objs add_cmdline(oss_write)"
998 write_errlist_objs="$write_errlist_objs oss_write"
999 write_cmdline_objs="$write_cmdline_objs add_cmdline(oss_write)"
1000 fade_errlist_objs="$fade_errlist_objs oss_mix"
1001 all_errlist_objs="$all_errlist_objs oss_write oss_mix"
1003 writers="$writers oss"
1004 default_writer="OSS_WRITE"
1005 mixers="${mixers}oss "
1006 default_mixer="OSS_MIX"
1008 AC_CHECK_LIB(ossaudio, _oss_ioctl, [
1009 audiod_ldflags="$audiod_ldflags -lossaudio"
1010 play_ldflags="$play_ldflags -lossaudio"
1011 write_ldflags="$write_ldflags -lossaudio"
1012 fade_ldflags="$fade_ldflags -lossaudio"
1018 AC_MSG_WARN([no sys/soundcard.h $msg])
1021 CPPFLAGS="$OLD_CPPFLAGS"
1022 LDFLAGS="$OLD_LDFLAGS"
1025 ########################################################################### alsa
1026 OLD_CPPFLAGS="$CPPFLAGS"
1027 OLD_LD_FLAGS="$LDFLAGS"
1030 msg="=> no alsa support for para_audiod/para_write"
1031 if test "$OSTYPE" != "Linux"; then
1036 if test "$have_alsa" = "yes"; then
1037 AC_CHECK_HEADERS([alsa/asoundlib.h], [], [
1039 AC_MSG_WARN([no alsa/asoundlib $msg])
1043 if test "$have_alsa" = "yes"; then
1044 AC_CHECK_LIB([asound], [snd_pcm_open], [], [
1046 AC_MSG_WARN([no libasound $msg])
1050 if test "$have_alsa" = "yes"; then
1051 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
1052 audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(alsa_write)"
1053 audiod_ldflags="$audiod_ldflags -lasound"
1054 play_errlist_objs="$play_errlist_objs alsa_write"
1055 play_cmdline_objs="$play_cmdline_objs add_cmdline(alsa_write)"
1056 play_ldflags="$play_ldflags -lasound"
1058 write_errlist_objs="$write_errlist_objs alsa_write"
1059 write_cmdline_objs="$write_cmdline_objs add_cmdline(alsa_write)"
1060 write_ldflags="$write_ldflags -lasound"
1061 fade_errlist_objs="$fade_errlist_objs alsa_mix"
1062 fade_ldflags="$fade_ldflags -lasound"
1063 all_errlist_objs="$all_errlist_objs alsa_write alsa_mix"
1065 writers="$writers alsa"
1066 default_writer="ALSA_WRITE"
1067 mixers="${mixers}alsa "
1068 default_mixer="ALSA_MIX"
1071 CPPFLAGS="$OLD_CPPFLAGS"
1072 LDFLAGS="$OLD_LDFLAGS"
1074 ########################################################################### fade
1075 if test -n "$mixers"; then
1076 extras="$extras fade"
1077 executables="$executables fade"
1078 all_errlist_objs="$all_errlist_objs fade"
1079 fade_errlist_objs="$fade_errlist_objs fade exec string fd version ggo"
1080 fade_cmdline_objs="add_cmdline(fade)"
1081 fade_objs="$fade_cmdline_objs $fade_errlist_objs"
1082 AC_SUBST(fade_objs, add_dot_o($fade_objs))
1083 AC_SUBST(fade_ldflags, $fade_ldflags)
1084 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
1085 objlist_to_errlist($fade_errlist_objs),
1086 errors used by para_fade)
1088 for i in $mixers; do
1089 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
1092 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
1093 enum of supported mixers)
1094 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
1095 use this mixer if none was specified)
1096 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
1097 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
1099 for i in $mixers; do
1100 printf 'extern void '$i'_mix_init(struct mixer *); '
1103 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
1104 init functions of the supported mixers)
1105 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
1106 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
1107 mixer_summary="supported mixers:: $mixers, default: $default_mixer"
1109 AC_MSG_WARN([no mixer support])
1110 mixer_summary="para_fade: no"
1112 ########################################################################### libao
1113 OLD_CPPFLAGS="$CPPFLAGS"
1114 OLD_LD_FLAGS="$LDFLAGS"
1118 AC_ARG_WITH(ao_headers, [AS_HELP_STRING(--with-ao-headers=dir,
1119 [look for ao/ao.h also in dir])])
1120 if test -n "$with_ao_headers"; then
1121 ao_cppflags="-I$with_ao_headers"
1122 CPPFLAGS="$CPPFLAGS $ao_cppflags"
1124 AC_ARG_WITH(ao_libs, [AS_HELP_STRING(--with-ao-libs=dir,
1125 [look for libao also in dir])])
1126 if test -n "$with_ao_libs"; then
1127 ao_libs="-L$with_ao_libs"
1128 LDFLAGS="$LDFLAGS $ao_libs"
1130 msg="no libao support for para_audiod/para_write"
1131 AC_CHECK_HEADERS([ao/ao.h], [
1134 AC_MSG_WARN([ao.h not found, $msg])
1136 if test "$have_ao" = "yes"; then
1137 AC_CHECK_LIB([ao], [ao_initialize], [], [
1139 AC_MSG_WARN([ao lib not found or not working, $msg])
1142 if test "$have_ao" = "yes"; then
1143 AC_CHECK_HEADERS([pthread.h], [
1146 AC_MSG_WARN([pthread.h not found, $msg])
1149 if test "$have_ao" = "yes"; then
1150 AC_CHECK_LIB([pthread], [pthread_create], [], [
1152 AC_MSG_WARN([pthread lib not found or not working, $msg])
1155 if test "$have_ao" = "yes"; then
1156 all_errlist_objs="$all_errlist_objs ao_write"
1157 audiod_errlist_objs="$audiod_errlist_objs ao_write"
1158 audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(ao_write)"
1159 audiod_ldflags="$audiod_ldflags -lao -lpthread"
1161 play_errlist_objs="$play_errlist_objs ao_write"
1162 play_cmdline_objs="$play_cmdline_objs add_cmdline(ao_write)"
1163 play_ldflags="$play_ldflags -lao -lpthread"
1165 write_errlist_objs="$write_errlist_objs ao_write"
1166 write_cmdline_objs="$write_cmdline_objs add_cmdline(ao_write)"
1167 write_ldflags="$write_ldflags $ao_libs -lao -lpthread"
1168 writers="$writers ao"
1169 AC_SUBST(ao_cppflags)
1172 CPPFLAGS="$OLD_CPPFLAGS"
1173 LDFLAGS="$OLD_LDFLAGS"
1175 ############################################################# readline
1176 OLD_CPPFLAGS="$CPPFLAGS"
1177 OLD_LD_FLAGS="$LDFLAGS"
1181 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
1182 [look for libreadline header files also in dir])])
1183 if test -n "$with_readline_headers"; then
1184 readline_cppflags="-I$with_readline_headers"
1185 CPPFLAGS="$CPPFLAGS $readline_cppflags"
1188 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
1189 [look for readline library also in dir])])
1190 if test -n "$with_readline_libs"; then
1191 readline_libs="-L$with_readline_libs"
1192 LDFLAGS="$LDFLAGS $readline_libs"
1194 msg="no interactive cli support"
1195 AC_CHECK_HEADERS([readline/readline.h], [
1198 AC_MSG_WARN([readline/readline.h not found, $msg])
1201 if test "$have_curses" != "yes"; then
1203 AC_MSG_WARN([interactive cli support depends on curses,])
1204 AC_MSG_WARN([but no curses lib was detected, $msg])
1207 if test "$have_readline" = "yes"; then
1208 readline_libs="$readline_libs -lreadline"
1209 AC_SEARCH_LIBS([rl_free_keymap], [readline], [], [have_readline="no"])
1210 if test "$have_readline" = "no"; then # try with -lcurses
1212 AC_MSG_NOTICE([trying again with -lcurses])
1213 unset ac_cv_search_rl_free_keymap 2> /dev/null
1214 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
1216 readline_libs="$readline_libs -lcurses"
1219 if test "$have_readline" = "no"; then # try with -ltermcap
1221 AC_MSG_NOTICE([trying again with -ltermcap])
1222 unset ac_cv_search_rl_free_keymap 2> /dev/null
1223 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
1225 readline_libs="$readline_libs -ltermcap"
1230 if test "$have_readline" = "yes"; then
1231 all_errlist_objs="$all_errlist_objs interactive"
1232 client_errlist_objs="$client_errlist_objs interactive"
1233 client_ldflags="$client_ldflags $readline_libs"
1234 audioc_errlist_objs="$audioc_errlist_objs buffer_tree interactive sched time"
1235 audioc_ldflags="$audioc_ldflags $readline_libs"
1236 play_errlist_objs="$play_errlist_objs interactive"
1237 play_ldflags="$play_ldflags $readline_libs"
1238 AC_SUBST(readline_cppflags)
1239 AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
1241 AC_MSG_WARN([libreadline not found or unusable])
1243 CPPFLAGS="$OLD_CPPFLAGS"
1244 LDFLAGS="$OLD_LDFLAGS"
1246 ############################################################# libsamplerate
1247 OLD_CPPFLAGS="$CPPFLAGS"
1248 OLD_LD_FLAGS="$LDFLAGS"
1251 have_samplerate="yes"
1252 AC_ARG_WITH(samplerate_headers, [AS_HELP_STRING(--with-samplerate-headers=dir,
1253 [look for samplerate headers also in dir])])
1254 if test -n "$with_samplerate_headers"; then
1255 samplerate_cppflags="-I$with_samplerate_headers"
1256 CPPFLAGS="$CPPFLAGS $samplerate_cppflags"
1258 AC_ARG_WITH(samplerate_libs, [AS_HELP_STRING(--with-samplerate-libs=dir,
1259 [look for samplerate libs also in dir])])
1260 if test -n "$with_samplerate_libs"; then
1261 samplerate_libs="-L$with_samplerate_libs"
1262 LDFLAGS="$LDFLAGS $samplerate_libs"
1265 AC_CHECK_HEADER(samplerate.h, [], have_samplerate=no)
1266 AC_CHECK_LIB([samplerate], [src_process], [], have_samplerate=no, [])
1268 if test "$have_samplerate" = "yes"; then
1269 all_errlist_objs="$all_errlist_objs resample_filter"
1270 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
1271 filter_cmdline_objs="$filter_cmdline_objs add_cmdline(resample_filter)"
1272 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
1273 audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(resample_filter)"
1274 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1275 play_cmdline_objs="$play_cmdline_objs add_cmdline(resample_filter)"
1276 filter_ldflags="$filter_ldflags $samplerate_libs -lsamplerate"
1277 audiod_ldflags="$audiod_ldflags $samplerate_libs -lsamplerate"
1278 play_ldflags="$play_ldflags $samplerate_libs -lsamplerate"
1279 filters="$filters resample"
1280 AC_SUBST(samplerate_cppflags)
1282 AC_MSG_WARN([no resample support in para_audiod/para_filter])
1284 CPPFLAGS="$OLD_CPPFLAGS"
1285 LDFLAGS="$OLD_LDFLAGS"
1287 ############################################################# error2.h
1288 AC_MSG_NOTICE(creating error2.h)
1289 for i in $executables; do
1291 eval echo \$${i}_errlist_objs
1292 done | ./error2.pl > error2.h
1293 for obj in $all_errlist_objs; do
1294 SS="$SS SS_$(echo $obj | tr 'a-z' 'A-Z'),"
1296 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1297 [enum {$SS NUM_SS}],
1298 [list of all objects that use the paraslash error facility]
1301 ################################################################## status items
1303 status_items="basename status num_played mtime bitrate frequency file_size
1304 status_flags format score techinfo afs_mode
1305 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1306 offset seconds_total stream_start current_time audiod_uptime image_id
1307 lyrics_id duration directory lyrics_name image_name path hash channels
1308 last_played num_chunks chunk_time amplification artist title year album
1312 for i in $status_items; do
1313 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1315 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1316 [enum of all status items])
1319 for i in $status_items; do
1320 result="$result \"$i\", "
1322 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1323 [char * array of all status items])
1325 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1326 [formats supported by para_server and para_afh])
1328 AC_SUBST(executables, add_para($executables))
1330 recv_objs="$recv_cmdline_objs $recv_errlist_objs"
1331 filter_objs="$filter_cmdline_objs $filter_errlist_objs"
1332 audiod_objs="$audiod_cmdline_objs $audiod_errlist_objs"
1333 server_objs="$server_cmdline_objs $server_errlist_objs"
1334 write_objs="$write_cmdline_objs $write_errlist_objs"
1335 client_objs="$client_cmdline_objs $client_errlist_objs"
1336 audioc_objs="$audioc_cmdline_objs $audioc_errlist_objs"
1337 afh_objs="$afh_cmdline_objs $afh_errlist_objs"
1338 play_objs="$play_cmdline_objs $play_errlist_objs"
1341 AC_SUBST(recv_objs, add_dot_o($recv_objs))
1342 AC_SUBST(recv_ldflags, $recv_ldflags)
1343 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
1344 errors used by para_recv)
1346 AC_SUBST(filter_objs, add_dot_o($filter_objs))
1347 AC_SUBST(filter_ldflags, $filter_ldflags)
1348 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
1349 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
1351 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
1352 AC_SUBST(audiod_ldflags, $audiod_ldflags)
1353 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
1354 errors used by para_audiod)
1356 AC_SUBST(server_objs, add_dot_o($server_objs))
1357 AC_SUBST(server_ldflags, $server_ldflags)
1358 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
1359 objlist_to_errlist($server_errlist_objs), errors used by para_server)
1361 AC_SUBST(afh_objs, add_dot_o($afh_objs))
1362 AC_SUBST(afh_ldflags, $afh_ldflags)
1363 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
1364 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
1366 AC_SUBST(write_objs, add_dot_o($write_objs))
1367 AC_SUBST(write_ldflags, $write_ldflags)
1368 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1369 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1371 AC_SUBST(client_objs, add_dot_o($client_objs))
1372 AC_SUBST(client_ldflags, $client_ldflags)
1373 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
1374 objlist_to_errlist($client_errlist_objs), errors used by para_client)
1376 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1377 AC_SUBST(audioc_ldflags, $audioc_ldflags)
1378 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1379 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1381 AC_SUBST(gui_objs, add_dot_o($gui_objs))
1382 AC_SUBST(gui_ldflags, $gui_ldflags)
1383 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
1384 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
1386 AC_SUBST(play_objs, add_dot_o($play_objs))
1387 AC_SUBST(play_ldflags, $play_ldflags)
1388 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1389 objlist_to_errlist($play_errlist_objs), errors used by para_play)
1391 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
1392 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
1393 enum of supported filters)
1394 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
1395 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
1396 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
1397 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
1399 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1400 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1401 enum of supported writers)
1402 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1403 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1404 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1405 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1406 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1407 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1408 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1410 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
1411 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
1412 enum of audio formats supported by audiod)
1413 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
1414 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
1418 paraslash configuration:
1419 ~~~~~~~~~~~~~~~~~~~~~~~~
1420 unix socket credentials: $have_ucred
1421 readline (interactive CLIs): $have_readline
1422 audio formats handlers: $audio_format_handlers
1423 id3 version2 support: $have_libid3tag
1426 optional executables: $extras