2 # Process this file with autoconf to produce a configure script.
6 AC_INIT([paraslash], [m4_esyscmd_s(./GIT-VERSION-GEN)],
7 [maan@tuebingen.mpg.de], [], [http://people.tuebingen.mpg.de/maan/paraslash/])
8 AC_CONFIG_HEADERS([config.h])
10 AC_CONFIG_FILES([Makefile])
11 AC_DEFUN([add_dot_o],[$(for i in $@; do printf "$i.o "; done)])
12 AC_DEFUN([add_cmdline],[$(for i in $@; do printf "${i}.cmdline "; done)])
13 AC_DEFUN([make_errlist_defines], \
15 printf "DEFINE_ERRLIST($(echo $i | tr 'a-z' 'A-Z'));"; \
18 AC_DEFUN([make_para_errlists], \
20 printf "PARA_ERRLIST($(echo $i | tr 'a-z' 'A-Z')), "; \
23 AC_DEFUN([objlist_to_errlist],[ \
24 make_errlist_defines($@) \
25 [const char **para_errlist[[]]] = {make_para_errlists($@)} \
27 AC_DEFUN([LIB_ARG_WITH], [
28 AC_ARG_WITH($1-headers, [AS_HELP_STRING(--with-$1-headers=dir,
29 [look for $1 headers in dir])])
30 AC_ARG_WITH($1-libs, [AS_HELP_STRING(--with-$1-libs=dir,
31 [look for $1 libraries in dir])])
32 if test -n "$with_$1_headers"; then
33 $1_cppflags="-I$with_$1_headers"
34 CPPFLAGS="$CPPFLAGS $$1_cppflags"
36 if test -n "$with_$1_libs"; then
37 $1_ldflags="-L$with_$1_libs $2"
41 LDFLAGS="$LDFLAGS $$1_ldflags"
44 AC_DEFUN([STASH_FLAGS], [
45 OLD_CPPFLAGS="$CPPFLAGS"
46 OLD_LDFLAGS="$LDFLAGS"
50 AC_DEFUN([UNSTASH_FLAGS], [
51 CPPFLAGS="$OLD_CPPFLAGS"
52 LDFLAGS="$OLD_LDFLAGS"
55 AC_DEFUN([LIB_SUBST_FLAGS], [
56 if test "$HAVE_[]m4_toupper([$1])" == 'yes'; then
57 AC_DEFINE(HAVE_[]m4_toupper([$1]), 1,
58 define to 1 to turn on $1 support)
63 AC_SUBST(HAVE_[]m4_toupper([$1]))
68 AC_PATH_PROG(UNAMEPATH, uname, no)
69 if test "$UNAMEPATH" = "no"; then
70 AC_MSG_ERROR(unable to determine system type)
72 AC_MSG_CHECKING(os type)
73 OSTYPE="`$UNAMEPATH -s`"
74 AC_MSG_RESULT("$OSTYPE")
76 if test "$OSTYPE" = "SunOS"; then
77 # needed on SunOS for socket magic
78 arch_cppflags="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
79 AC_SUBST(arch_cppflags)
84 AC_PATH_PROG([gengetopt], [gengetopt])
85 test -z "$gengetopt" && AC_MSG_ERROR(
86 [gengetopt is required to build this package])
88 AC_PATH_PROG([help2man], [help2man])
89 test -z "$help2man" && AC_MSG_ERROR(
90 [help2man is required to build this package])
92 AC_PATH_PROG([install], [install])
93 test -z "$install" && AC_MSG_ERROR(
94 [The install program is required to build this package])
99 executables="recv filter audioc write afh play"
100 ################################################################## clock_gettime
102 AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
103 AC_CHECK_LIB([rt], [clock_gettime], [clock_gettime_lib=rt], [], [])
105 if test -n "$clock_gettime_lib"; then
106 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [
107 define to 1 if clock_gettime() is supported])
109 if test "$clock_gettime_lib" = "rt"; then
110 AC_SUBST(clock_gettime_ldflags, -lrt)
113 ########################################################################### osl
115 LIB_ARG_WITH([osl], [-losl])
117 AC_CHECK_HEADER(osl.h, [], [HAVE_OSL=no])
118 AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no])
121 ######################################################################## openssl
124 LIB_ARG_WITH([openssl], [-lssl -lcrypto])
125 AC_CHECK_HEADER(openssl/ssl.h, [], [HAVE_OPENSSL=no])
126 AC_CHECK_LIB([crypto], [RAND_bytes], [], [HAVE_OPENSSL=no])
127 LIB_SUBST_FLAGS(openssl)
129 ######################################################################### gcrypt
132 LIB_ARG_WITH([gcrypt], [-lgcrypt])
133 AC_CHECK_HEADER(gcrypt.h, [], [HAVE_GCRYPT=no])
134 AC_CHECK_LIB([gcrypt], [gcry_randomize], [], [HAVE_GCRYPT=no])
135 LIB_SUBST_FLAGS(gcrypt)
137 ######################################################################### crypto
138 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
139 Force using crypto library "lib". This package requires either
140 openssl or libgcrypt being installed. Possible values for "lib"
141 are thus "openssl" and "gcrypt". If this option is not given,
142 openssl is tried first. If openssl was not found, gcrypt is
145 CRYPTOLIB="$enable_cryptolib"
146 case "$enable_cryptolib" in
148 test $HAVE_OPENSSL = no && AC_MSG_ERROR(openssl not found)
149 crypto_ldflags="$openssl_ldflags"
152 test $HAVE_GCRYPT = no && AC_MSG_ERROR(gcrypt not found)
153 crypto_ldflags="$gcrypt_ldflags"
157 if test $HAVE_GCRYPT = yes; then
159 crypto_ldflags="$gcrypt_ldflags"
161 if test $HAVE_OPENSSL = yes; then
163 crypto_ldflags="$openssl_ldflags"
167 AC_MSG_ERROR([invalid value "$enable_cryptolib" for --enable-cryptolib])
170 AC_SUBST(crypto_ldflags)
171 ########################################################################### libsocket
172 AC_CHECK_LIB([c], [socket],
174 [socket_ldflags="-lsocket"]
176 AC_SUBST(socket_ldflags)
177 ########################################################################### libnsl
178 AC_CHECK_LIB([c], [gethostbyname],
180 [nsl_ldflags="-lnsl"]
182 AC_SUBST(nsl_ldflags)
183 ########################################################################### ucred
184 AC_MSG_CHECKING(for struct ucred)
185 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
187 #include <sys/types.h>
188 #include <sys/socket.h>
190 struct ucred sucred; sucred.pid=0;
191 ]])],[have_ucred=yes],[have_ucred=no])
192 AC_MSG_RESULT($have_ucred)
193 if test ${have_ucred} = yes; then
194 AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
196 ########################################################################### gengetopt
197 echo 'option "z" z "" flag off' | $gengetopt --file-name conftest-ggo &&
199 [gengetopt_args_info_description],
200 [ggo_descriptions_declared=yes],
201 [ggo_descriptions_declared=no],
202 [#include "conftest-ggo.h"]
204 AC_SUBST(ggo_descriptions_declared)
205 ########################################################################### curses
207 OLD_CPPFLAGS="$CPPFLAGS"
208 OLD_LDFLAGS="$LDFLAGS"
210 AC_ARG_WITH(curses_headers, [AS_HELP_STRING(--with-curses-headers=dir,
211 [look for curses.h also in dir])])
212 if test -n "$with_curses_headers"; then
213 curses_cppflags="-I$with_curses_headers"
214 CPPFLAGS="$CPPFLAGS $curses_cppflags"
216 AC_ARG_WITH(curses_libs, [AS_HELP_STRING(--with-curses-libs=dir,
217 [look for libcurses also in dir])])
218 if test -n "$with_curses_libs"; then
219 curses_libs="-L$with_curses_libs"
220 LDFLAGS="$LDFLAGS $curses_libs"
222 AC_CHECK_HEADER(curses.h, [], [
225 curses_ldflags="$curses_libs"
226 AC_CHECK_LIB([ncursesw], [initscr],
227 [curses_ldflags="$curses_libs -lncursesw"], [
228 AC_CHECK_LIB([curses], [initscr],
229 [curses_ldflags="$curses_libs -lcurses"],
234 AC_SUBST(curses_cppflags)
235 AC_SUBST(curses_ldflags)
236 CPPFLAGS="$OLD_CPPFLAGS"
237 LDFLAGS="$OLD_LDFLAGS"
239 ########################################################################### ip_mreqn
240 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
241 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
247 ]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
248 AC_MSG_RESULT($have_ip_mreqn)
249 if test ${have_ip_mreqn} = yes; then
250 AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
252 ########################################################################### osx
254 AC_MSG_CHECKING(for CoreAudio (MacOs))
255 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
256 #include <CoreAudio/CoreAudio.h>
259 ]])],[have_core_audio=yes],[have_core_audio=no])
260 AC_MSG_RESULT($have_core_audio)
261 if test ${have_core_audio} = yes; then
262 f1="-framework CoreAudio"
263 f2="-framework AudioToolbox"
264 f3="-framework AudioUnit"
265 f4="-framework CoreServices"
266 core_audio_ldflags="$f1 $f2 $f3 $f4"
267 AC_SUBST(core_audio_ldflags)
268 AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
270 ########################################################################### ogg
272 LIB_ARG_WITH([ogg], [-logg])
274 AC_CHECK_HEADERS([ogg/ogg.h], [], [HAVE_OGG=no])
275 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [HAVE_OGG=no])
278 ######################################################################### vorbis
280 LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
282 AC_CHECK_HEADERS([vorbis/codec.h], [], [HAVE_VORBIS=no])
283 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [HAVE_VORBIS=no])
284 LIB_SUBST_FLAGS(vorbis)
286 ######################################################################### speex
288 LIB_ARG_WITH([speex], [-lspeex])
290 AC_CHECK_HEADERS([speex/speex.h], [], [HAVE_SPEEX=no])
291 AC_CHECK_LIB([speex], [speex_decoder_init], [], [HAVE_SPEEX=no])
292 LIB_SUBST_FLAGS(speex)
294 ######################################################################### opus
296 LIB_ARG_WITH([opus], [-lopus])
298 AC_CHECK_HEADERS([opus/opus.h], [], [HAVE_OPUS=no])
299 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [HAVE_OPUS=no])
300 LIB_SUBST_FLAGS(opus)
302 ########################################################################### flac
304 LIB_ARG_WITH([flac], [-lFLAC -lm])
306 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], HAVE_FLAC=no)
307 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
308 LIB_SUBST_FLAGS(flac)
311 # some helper functions for codecs which use the ogg container format
312 AC_DEFUN([NEED_OGG_OBJECTS], [{
313 test "$HAVE_OGG" = 'yes' -a \( \
314 "$HAVE_VORBIS" = 'yes' \
315 -o "$HAVE_SPEEX" = 'yes' \
316 -o "$HAVE_OPUS" = 'yes' \
317 -o "$HAVE_FLAC" = 'yes' \
320 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
321 test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
323 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
324 test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
326 AC_DEFUN([NEED_OPUS_OBJECTS], [{
327 test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
329 AC_DEFUN([NEED_FLAC_OBJECTS], [{
330 test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
332 ########################################################################### faad
334 LIB_ARG_WITH([faad], [-lfaad])
336 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
337 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
338 LIB_SUBST_FLAGS(faad)
340 ########################################################################### mad
342 LIB_ARG_WITH([mad], [-lmad])
344 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
345 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
348 ###################################################################### libid3tag
350 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
352 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
353 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
354 LIB_SUBST_FLAGS(id3tag)
356 ########################################################################### oss
357 OLD_CPPFLAGS="$CPPFLAGS"
358 OLD_LDFLAGS="$LDFLAGS"
362 msg="=> will not build oss writer"
364 AC_CHECK_HEADER(sys/soundcard.h, [
365 AC_CHECK_LIB(ossaudio, _oss_ioctl, [
366 oss_ldflags="-lossaudio"
367 AC_SUBST(oss_ldflags)
373 AC_MSG_WARN([no sys/soundcard.h $msg])
376 CPPFLAGS="$OLD_CPPFLAGS"
377 LDFLAGS="$OLD_LDFLAGS"
380 ########################################################################### alsa
382 LIB_ARG_WITH([alsa], [-lasound])
384 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
385 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
386 LIB_SUBST_FLAGS(alsa)
388 ########################################################################### libao
389 OLD_CPPFLAGS="$CPPFLAGS"
390 OLD_LDFLAGS="$LDFLAGS"
394 AC_ARG_WITH(ao_headers, [AS_HELP_STRING(--with-ao-headers=dir,
395 [look for ao/ao.h also in dir])])
396 if test -n "$with_ao_headers"; then
397 ao_cppflags="-I$with_ao_headers"
398 CPPFLAGS="$CPPFLAGS $ao_cppflags"
400 AC_ARG_WITH(ao_libs, [AS_HELP_STRING(--with-ao-libs=dir,
401 [look for libao also in dir])])
402 if test -n "$with_ao_libs"; then
403 ao_libs="-L$with_ao_libs"
404 LDFLAGS="$LDFLAGS $ao_libs"
406 msg="no libao support for para_audiod/para_write"
407 AC_CHECK_HEADERS([ao/ao.h], [
410 AC_MSG_WARN([ao.h not found, $msg])
412 if test "$have_ao" = "yes"; then
413 AC_CHECK_LIB([ao], [ao_initialize], [], [
415 AC_MSG_WARN([ao lib not found or not working, $msg])
418 if test "$have_ao" = "yes"; then
419 AC_CHECK_HEADERS([pthread.h], [
422 AC_MSG_WARN([pthread.h not found, $msg])
425 if test "$have_ao" = "yes"; then
426 AC_CHECK_LIB([pthread], [pthread_create], [], [
428 AC_MSG_WARN([pthread lib not found or not working, $msg])
431 if test "$have_ao" = "yes"; then
432 AC_SUBST(ao_cppflags)
433 ao_ldflags="$ao_libs -lao -lpthread"
437 CPPFLAGS="$OLD_CPPFLAGS"
438 LDFLAGS="$OLD_LDFLAGS"
440 ############################################################# readline
441 OLD_CPPFLAGS="$CPPFLAGS"
442 OLD_LDFLAGS="$LDFLAGS"
446 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
447 [look for libreadline header files also in dir])])
448 if test -n "$with_readline_headers"; then
449 readline_cppflags="-I$with_readline_headers"
450 CPPFLAGS="$CPPFLAGS $readline_cppflags"
453 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
454 [look for readline library also in dir])])
455 if test -n "$with_readline_libs"; then
456 readline_libs="-L$with_readline_libs"
457 LDFLAGS="$LDFLAGS $readline_libs"
459 msg="no interactive cli support"
460 AC_CHECK_HEADERS([readline/readline.h], [
463 AC_MSG_WARN([readline/readline.h not found, $msg])
466 if test "$have_readline" = "yes"; then
467 readline_ldflags="$readline_libs"
468 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
469 readline_ldflags="$readline_ldflags -lreadline"
470 ], [have_readline="no"])
471 if test "$have_readline" = "no"; then # try with -lcurses
473 AC_MSG_NOTICE([trying again with -lcurses])
474 unset ac_cv_search_rl_free_keymap 2> /dev/null
475 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
477 readline_ldflags="$readline_ldflags -lreadline -lcurses"
480 if test "$have_readline" = "no"; then # try with -ltermcap
482 AC_MSG_NOTICE([trying again with -ltermcap])
483 unset ac_cv_search_rl_free_keymap 2> /dev/null
484 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
486 readline_ldflags="$readline_ldflags -lreadline -ltermcap"
491 if test "$have_readline" = "yes"; then
494 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
498 #include <readline/readline.h>
501 AC_SUBST(readline_cppflags)
502 AC_SUBST(readline_ldflags)
503 AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
505 AC_MSG_WARN([libreadline not found or unusable])
507 CPPFLAGS="$OLD_CPPFLAGS"
508 LDFLAGS="$OLD_LDFLAGS"
510 ############################################################# libsamplerate
511 OLD_CPPFLAGS="$CPPFLAGS"
512 OLD_LDFLAGS="$LDFLAGS"
515 have_samplerate="yes"
516 AC_ARG_WITH(samplerate_headers, [AS_HELP_STRING(--with-samplerate-headers=dir,
517 [look for samplerate headers also in dir])])
518 if test -n "$with_samplerate_headers"; then
519 samplerate_cppflags="-I$with_samplerate_headers"
520 CPPFLAGS="$CPPFLAGS $samplerate_cppflags"
522 AC_ARG_WITH(samplerate_libs, [AS_HELP_STRING(--with-samplerate-libs=dir,
523 [look for samplerate libs also in dir])])
524 if test -n "$with_samplerate_libs"; then
525 samplerate_libs="-L$with_samplerate_libs"
526 LDFLAGS="$LDFLAGS $samplerate_libs"
529 AC_CHECK_HEADER(samplerate.h, [], have_samplerate=no)
530 AC_CHECK_LIB([samplerate], [src_process], [], have_samplerate=no, [])
532 if test "$have_samplerate" = "yes"; then
533 AC_SUBST(samplerate_cppflags)
534 samplerate_ldflags="$samplerate_libs -lsamplerate"
535 AC_SUBST(samplerate_ldflags)
537 AC_MSG_WARN([no resample support in para_audiod/para_filter])
539 CPPFLAGS="$OLD_CPPFLAGS"
540 LDFLAGS="$OLD_LDFLAGS"
542 ######################################################################### server
543 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
545 executables="$executables server"
546 server_cmdline_objs="server"
547 server_errlist_objs="
586 if test "$CRYPTOLIB" = openssl; then
587 server_errlist_objs="$server_errlist_objs crypt"
589 server_errlist_objs="$server_errlist_objs gcrypt"
591 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
592 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
593 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
594 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
595 NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
596 test $HAVE_FAAD = yes && server_errlist_objs="$server_errlist_objs aac_afh aac_common"
597 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
598 AC_SUBST(server_objs, add_dot_o($server_objs))
599 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
600 objlist_to_errlist($server_errlist_objs), errors used by para_server)
604 ############################################################# client
605 if test -n "$CRYPTOLIB"; then
607 executables="$executables client"
608 client_cmdline_objs="client"
609 client_errlist_objs="
625 if test "$CRYPTOLIB" = openssl; then
626 client_errlist_objs="$client_errlist_objs crypt"
628 client_errlist_objs="$client_errlist_objs gcrypt"
630 if test "$have_readline" = "yes"; then
631 client_errlist_objs="$client_errlist_objs interactive"
633 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
634 AC_SUBST(client_objs, add_dot_o($client_objs))
635 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
636 objlist_to_errlist($client_errlist_objs), errors used by para_client)
640 ############################################################# audiod
641 if test -n "$CRYPTOLIB"; then
643 executables="$executables audiod"
644 audiod_audio_formats="wma"
645 audiod_cmdline_objs="$audiod_cmdline_objs
657 audiod_errlist_objs="$audiod_errlist_objs
695 if test "$CRYPTOLIB" = openssl; then
696 audiod_errlist_objs="$audiod_errlist_objs crypt"
698 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
700 if test "$have_core_audio" = "yes"; then
701 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
702 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
704 NEED_VORBIS_OBJECTS && {
705 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
706 audiod_audio_formats="$audiod_audio_formats ogg"
708 NEED_SPEEX_OBJECTS && {
709 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
710 audiod_audio_formats="$audiod_audio_formats spx"
712 NEED_OPUS_OBJECTS && {
713 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
714 audiod_audio_formats="$audiod_audio_formats opus"
716 NEED_FLAC_OBJECTS && {
717 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
718 audiod_audio_formats="$audiod_audio_formats flac"
720 if test $HAVE_FAAD = yes; then
721 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
722 audiod_audio_formats="$audiod_audio_formats aac"
724 if test $HAVE_MAD = yes; then
725 audiod_audio_formats="$audiod_audio_formats mp3"
726 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
727 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
729 if test "$have_oss" = "yes"; then
730 audiod_errlist_objs="$audiod_errlist_objs oss_write"
731 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
733 if test $HAVE_ALSA = yes; then
734 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
735 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
737 if test "$have_ao" = "yes"; then
738 audiod_errlist_objs="$audiod_errlist_objs ao_write"
739 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
741 if test "$have_samplerate" = "yes"; then
742 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
743 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
745 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
746 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
747 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
748 errors used by para_audiod)
750 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
751 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
752 enum of audio formats supported by audiod)
753 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
754 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
758 ########################################################################### fade
759 if test "$have_oss" = "yes" -o $HAVE_ALSA = yes; then
761 executables="$executables fade"
762 fade_cmdline_objs="fade"
763 fade_errlist_objs="fade exec string fd version ggo"
764 if test "$have_oss" = "yes"; then
765 fade_errlist_objs="$fade_errlist_objs oss_mix"
766 mixers="${mixers}oss "
767 default_mixer="OSS_MIX"
769 if test $HAVE_ALSA = yes; then
770 fade_errlist_objs="$fade_errlist_objs alsa_mix"
771 mixers="${mixers}alsa "
772 default_mixer="ALSA_MIX"
774 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
775 AC_SUBST(fade_objs, add_dot_o($fade_objs))
776 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
777 objlist_to_errlist($fade_errlist_objs),
778 errors used by para_fade)
781 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
784 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
785 enum of supported mixers)
786 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
787 use this mixer if none was specified)
788 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
789 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
792 printf 'extern void '$i'_mix_init(struct mixer *); '
795 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
796 init functions of the supported mixers)
797 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
798 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
801 AC_MSG_WARN([no mixer support])
803 ########################################################################### gui
804 if test "$have_curses" = "yes"; then
806 executables="$executables gui"
807 gui_cmdline_objs="gui"
822 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
823 AC_SUBST(gui_objs, add_dot_o($gui_objs))
824 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
825 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
828 AC_MSG_WARN([no curses lib, cannot build para_gui])
830 ######################################################################## filter
840 filter_errlist_objs="
865 filter_cmdline_objs="
872 NEED_VORBIS_OBJECTS && {
873 filters="$filters oggdec"
874 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
876 NEED_SPEEX_OBJECTS && {
877 filters="$filters spxdec"
878 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
880 NEED_OPUS_OBJECTS && {
881 filters="$filters opusdec"
882 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
884 NEED_FLAC_OBJECTS && {
885 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
886 filters="$filters flacdec"
888 if test $HAVE_FAAD = yes; then
889 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
890 filters="$filters aacdec"
892 if test $HAVE_MAD = yes; then
893 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
894 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
895 filters="$filters mp3dec"
897 if test "$have_samplerate" = "yes"; then
898 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
899 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
900 filters="$filters resample"
902 filters="$(echo $filters)"
904 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
906 AC_SUBST(filter_objs, add_dot_o($filter_objs))
907 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
908 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
910 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
911 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
912 enum of supported filters)
913 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
914 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
915 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
916 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
917 ########################################################################## recv
947 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
948 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
949 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
950 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
951 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
953 if test $HAVE_FAAD = yes; then
954 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
956 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
957 AC_SUBST(receivers, "http dccp udp afh")
958 AC_SUBST(recv_objs, add_dot_o($recv_objs))
959 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
960 errors used by para_recv)
961 ########################################################################### afh
962 audio_format_handlers="mp3 wma"
963 afh_cmdline_objs="afh"
976 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
977 NEED_VORBIS_OBJECTS && {
978 afh_errlist_objs="$afh_errlist_objs ogg_afh"
979 audio_format_handlers="$audio_format_handlers ogg"
981 NEED_SPEEX_OBJECTS && {
982 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
983 audio_format_handlers="$audio_format_handlers spx"
985 NEED_OPUS_OBJECTS && {
986 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
987 audio_format_handlers="$audio_format_handlers opus"
989 NEED_FLAC_OBJECTS && {
990 afh_errlist_objs="$afh_errlist_objs flac_afh"
991 audio_format_handlers="$audio_format_handlers flac"
993 if test $HAVE_FAAD = yes; then
994 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
995 audio_format_handlers="$audio_format_handlers aac"
998 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
1000 AC_SUBST(afh_objs, add_dot_o($afh_objs))
1001 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
1002 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
1003 ########################################################################## play
1049 if test "$have_core_audio" = "yes"; then
1050 play_errlist_objs="$play_errlist_objs osx_write ipc"
1051 play_cmdline_objs="$play_cmdline_objs osx_write"
1053 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
1054 NEED_VORBIS_OBJECTS && {
1055 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
1057 NEED_SPEEX_OBJECTS && {
1058 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
1060 NEED_OPUS_OBJECTS &&
1061 play_errlist_objs="$play_errlist_objs
1066 NEED_FLAC_OBJECTS && {
1067 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
1069 if test $HAVE_FAAD = yes; then
1070 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
1072 if test $HAVE_MAD = yes; then
1073 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
1074 play_errlist_objs="$play_errlist_objs mp3dec_filter"
1076 if test "$have_oss" = "yes"; then
1077 play_errlist_objs="$play_errlist_objs oss_write"
1078 play_cmdline_objs="$play_cmdline_objs oss_write"
1080 if test $HAVE_ALSA = yes; then
1081 play_errlist_objs="$play_errlist_objs alsa_write"
1082 play_cmdline_objs="$play_cmdline_objs alsa_write"
1084 if test "$have_ao" = "yes"; then
1085 play_errlist_objs="$play_errlist_objs ao_write"
1086 play_cmdline_objs="$play_cmdline_objs ao_write"
1088 if test "$have_readline" = "yes"; then
1089 play_errlist_objs="$play_errlist_objs interactive"
1091 if test "$have_samplerate" = "yes"; then
1092 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1093 play_cmdline_objs="$play_cmdline_objs resample_filter"
1096 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1097 AC_SUBST(play_objs, add_dot_o($play_objs))
1098 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1099 objlist_to_errlist($play_errlist_objs), errors used by para_play)
1100 ######################################################################### write
1101 write_cmdline_objs="
1105 write_errlist_objs="
1120 default_writer="FILE_WRITE"
1122 if test "$have_core_audio" = "yes"; then
1123 write_errlist_objs="$write_errlist_objs osx_write ipc"
1124 write_cmdline_objs="$write_cmdline_objs osx_write"
1125 writers="$writers osx"
1126 default_writer="OSX_WRITE"
1128 if test "$have_ao" = "yes"; then
1129 write_errlist_objs="$write_errlist_objs ao_write"
1130 write_cmdline_objs="$write_cmdline_objs ao_write"
1131 writers="$writers ao"
1132 default_writer="AO_WRITE"
1134 if test "$have_oss" = "yes"; then
1135 write_errlist_objs="$write_errlist_objs oss_write"
1136 write_cmdline_objs="$write_cmdline_objs oss_write"
1137 writers="$writers oss"
1138 default_writer="OSS_WRITE"
1140 if test $HAVE_ALSA = yes; then
1141 write_errlist_objs="$write_errlist_objs alsa_write"
1142 write_cmdline_objs="$write_cmdline_objs alsa_write"
1143 writers="$writers alsa"
1144 default_writer="ALSA_WRITE"
1147 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1148 AC_SUBST(write_objs, add_dot_o($write_objs))
1149 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1150 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1151 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1152 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1153 enum of supported writers)
1154 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1155 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1156 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1157 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1158 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1159 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1160 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1161 ######################################################################## audioc
1162 audioc_cmdline_objs="audioc"
1163 audioc_errlist_objs="
1171 if test "$have_readline" = "yes"; then
1172 audioc_errlist_objs="$audioc_errlist_objs
1179 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1180 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1181 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1182 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1183 ############################################################# error2.h
1184 # these are always built
1187 $filter_errlist_objs
1188 $audioc_errlist_objs
1194 # optional executables
1195 if test "$build_server" = "yes"; then
1196 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1198 if test "$build_gui" = "yes"; then
1199 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1201 if test "$build_fade" = "yes"; then
1202 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1204 if test "$build_client" = "yes"; then
1205 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1207 if test "$build_audiod" = "yes"; then
1208 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1211 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1213 object_executable_matrix=
1214 for i in $executables; do
1215 eval objs=\$${i}_errlist_objs
1216 object_executable_matrix="$object_executable_matrix $i: $objs"
1218 # use echo to replace newlines by space
1219 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1221 SS=$(for obj in $all_errlist_objs; do
1222 printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1223 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1224 [enum {$SS NUM_SS}],
1225 [list of all objects that use the paraslash error facility]
1227 ################################################################## status items
1229 status_items="basename status num_played mtime bitrate frequency file_size
1230 status_flags format score techinfo afs_mode
1231 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1232 offset seconds_total stream_start current_time audiod_uptime image_id
1233 lyrics_id duration directory lyrics_name image_name path hash channels
1234 last_played num_chunks chunk_time amplification artist title year album
1238 for i in $status_items; do
1239 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1241 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1242 [enum of all status items])
1245 for i in $status_items; do
1246 result="$result \"$i\", "
1248 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1249 [char * array of all status items])
1251 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1252 [formats supported by para_server and para_afh])
1254 AC_SUBST(executables)
1258 paraslash configuration:
1259 ~~~~~~~~~~~~~~~~~~~~~~~~
1260 crypto lib: ${CRYPTOLIB:-[none]}
1261 unix socket credentials: $have_ucred
1262 readline (interactive CLIs): $have_readline
1263 audio formats handlers: $audio_format_handlers
1264 id3 version 2 support: $HAVE_ID3TAG
1268 para_fade: $build_fade
1269 para_server: $build_server
1270 para_gui: $build_gui
1271 para_fade: $build_fade
1272 para_client: $build_client
1273 para_audiod: $build_audiod