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 ######################################################################### pthread
390 LIB_ARG_WITH([pthread], [-lpthread])
392 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
393 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
394 LIB_SUBST_FLAGS(pthread)
396 ########################################################################### libao
398 LIB_ARG_WITH([ao], [-lao])
400 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
401 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
404 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
405 ############################################################# readline
406 OLD_CPPFLAGS="$CPPFLAGS"
407 OLD_LDFLAGS="$LDFLAGS"
411 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
412 [look for libreadline header files also in dir])])
413 if test -n "$with_readline_headers"; then
414 readline_cppflags="-I$with_readline_headers"
415 CPPFLAGS="$CPPFLAGS $readline_cppflags"
418 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
419 [look for readline library also in dir])])
420 if test -n "$with_readline_libs"; then
421 readline_libs="-L$with_readline_libs"
422 LDFLAGS="$LDFLAGS $readline_libs"
424 msg="no interactive cli support"
425 AC_CHECK_HEADERS([readline/readline.h], [
428 AC_MSG_WARN([readline/readline.h not found, $msg])
431 if test "$have_readline" = "yes"; then
432 readline_ldflags="$readline_libs"
433 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
434 readline_ldflags="$readline_ldflags -lreadline"
435 ], [have_readline="no"])
436 if test "$have_readline" = "no"; then # try with -lcurses
438 AC_MSG_NOTICE([trying again with -lcurses])
439 unset ac_cv_search_rl_free_keymap 2> /dev/null
440 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
442 readline_ldflags="$readline_ldflags -lreadline -lcurses"
445 if test "$have_readline" = "no"; then # try with -ltermcap
447 AC_MSG_NOTICE([trying again with -ltermcap])
448 unset ac_cv_search_rl_free_keymap 2> /dev/null
449 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
451 readline_ldflags="$readline_ldflags -lreadline -ltermcap"
456 if test "$have_readline" = "yes"; then
459 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
463 #include <readline/readline.h>
466 AC_SUBST(readline_cppflags)
467 AC_SUBST(readline_ldflags)
468 AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
470 AC_MSG_WARN([libreadline not found or unusable])
472 CPPFLAGS="$OLD_CPPFLAGS"
473 LDFLAGS="$OLD_LDFLAGS"
475 ############################################################# libsamplerate
477 LIB_ARG_WITH([samplerate], [-lsamplerate])
479 AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
480 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
481 LIB_SUBST_FLAGS(samplerate)
483 ######################################################################### server
484 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
486 executables="$executables server"
487 server_cmdline_objs="server"
488 server_errlist_objs="
527 if test "$CRYPTOLIB" = openssl; then
528 server_errlist_objs="$server_errlist_objs crypt"
530 server_errlist_objs="$server_errlist_objs gcrypt"
532 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
533 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
534 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
535 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
536 NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
537 test $HAVE_FAAD = yes && server_errlist_objs="$server_errlist_objs aac_afh aac_common"
538 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
539 AC_SUBST(server_objs, add_dot_o($server_objs))
540 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
541 objlist_to_errlist($server_errlist_objs), errors used by para_server)
545 ############################################################# client
546 if test -n "$CRYPTOLIB"; then
548 executables="$executables client"
549 client_cmdline_objs="client"
550 client_errlist_objs="
566 if test "$CRYPTOLIB" = openssl; then
567 client_errlist_objs="$client_errlist_objs crypt"
569 client_errlist_objs="$client_errlist_objs gcrypt"
571 if test "$have_readline" = "yes"; then
572 client_errlist_objs="$client_errlist_objs interactive"
574 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
575 AC_SUBST(client_objs, add_dot_o($client_objs))
576 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
577 objlist_to_errlist($client_errlist_objs), errors used by para_client)
581 ############################################################# audiod
582 if test -n "$CRYPTOLIB"; then
584 executables="$executables audiod"
585 audiod_audio_formats="wma"
586 audiod_cmdline_objs="$audiod_cmdline_objs
598 audiod_errlist_objs="$audiod_errlist_objs
636 if test "$CRYPTOLIB" = openssl; then
637 audiod_errlist_objs="$audiod_errlist_objs crypt"
639 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
641 if test "$have_core_audio" = "yes"; then
642 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
643 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
645 NEED_VORBIS_OBJECTS && {
646 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
647 audiod_audio_formats="$audiod_audio_formats ogg"
649 NEED_SPEEX_OBJECTS && {
650 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
651 audiod_audio_formats="$audiod_audio_formats spx"
653 NEED_OPUS_OBJECTS && {
654 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
655 audiod_audio_formats="$audiod_audio_formats opus"
657 NEED_FLAC_OBJECTS && {
658 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
659 audiod_audio_formats="$audiod_audio_formats flac"
661 if test $HAVE_FAAD = yes; then
662 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
663 audiod_audio_formats="$audiod_audio_formats aac"
665 if test $HAVE_MAD = yes; then
666 audiod_audio_formats="$audiod_audio_formats mp3"
667 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
668 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
670 if test "$have_oss" = "yes"; then
671 audiod_errlist_objs="$audiod_errlist_objs oss_write"
672 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
674 if test $HAVE_ALSA = yes; then
675 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
676 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
679 audiod_errlist_objs="$audiod_errlist_objs ao_write"
680 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
682 if test $HAVE_SAMPLERATE = yes; then
683 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
684 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
686 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
687 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
688 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
689 errors used by para_audiod)
691 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
692 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
693 enum of audio formats supported by audiod)
694 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
695 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
699 ########################################################################### fade
700 if test "$have_oss" = "yes" -o $HAVE_ALSA = yes; then
702 executables="$executables fade"
703 fade_cmdline_objs="fade"
704 fade_errlist_objs="fade exec string fd version ggo"
705 if test "$have_oss" = "yes"; then
706 fade_errlist_objs="$fade_errlist_objs oss_mix"
707 mixers="${mixers}oss "
708 default_mixer="OSS_MIX"
710 if test $HAVE_ALSA = yes; then
711 fade_errlist_objs="$fade_errlist_objs alsa_mix"
712 mixers="${mixers}alsa "
713 default_mixer="ALSA_MIX"
715 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
716 AC_SUBST(fade_objs, add_dot_o($fade_objs))
717 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
718 objlist_to_errlist($fade_errlist_objs),
719 errors used by para_fade)
722 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
725 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
726 enum of supported mixers)
727 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
728 use this mixer if none was specified)
729 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
730 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
733 printf 'extern void '$i'_mix_init(struct mixer *); '
736 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
737 init functions of the supported mixers)
738 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
739 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
742 AC_MSG_WARN([no mixer support])
744 ########################################################################### gui
745 if test "$have_curses" = "yes"; then
747 executables="$executables gui"
748 gui_cmdline_objs="gui"
763 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
764 AC_SUBST(gui_objs, add_dot_o($gui_objs))
765 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
766 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
769 AC_MSG_WARN([no curses lib, cannot build para_gui])
771 ######################################################################## filter
781 filter_errlist_objs="
806 filter_cmdline_objs="
813 NEED_VORBIS_OBJECTS && {
814 filters="$filters oggdec"
815 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
817 NEED_SPEEX_OBJECTS && {
818 filters="$filters spxdec"
819 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
821 NEED_OPUS_OBJECTS && {
822 filters="$filters opusdec"
823 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
825 NEED_FLAC_OBJECTS && {
826 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
827 filters="$filters flacdec"
829 if test $HAVE_FAAD = yes; then
830 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
831 filters="$filters aacdec"
833 if test $HAVE_MAD = yes; then
834 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
835 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
836 filters="$filters mp3dec"
838 if test $HAVE_SAMPLERATE = yes; then
839 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
840 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
841 filters="$filters resample"
843 filters="$(echo $filters)"
845 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
847 AC_SUBST(filter_objs, add_dot_o($filter_objs))
848 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
849 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
851 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
852 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
853 enum of supported filters)
854 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
855 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
856 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
857 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
858 ########################################################################## recv
888 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
889 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
890 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
891 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
892 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
894 if test $HAVE_FAAD = yes; then
895 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
897 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
898 AC_SUBST(receivers, "http dccp udp afh")
899 AC_SUBST(recv_objs, add_dot_o($recv_objs))
900 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
901 errors used by para_recv)
902 ########################################################################### afh
903 audio_format_handlers="mp3 wma"
904 afh_cmdline_objs="afh"
917 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
918 NEED_VORBIS_OBJECTS && {
919 afh_errlist_objs="$afh_errlist_objs ogg_afh"
920 audio_format_handlers="$audio_format_handlers ogg"
922 NEED_SPEEX_OBJECTS && {
923 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
924 audio_format_handlers="$audio_format_handlers spx"
926 NEED_OPUS_OBJECTS && {
927 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
928 audio_format_handlers="$audio_format_handlers opus"
930 NEED_FLAC_OBJECTS && {
931 afh_errlist_objs="$afh_errlist_objs flac_afh"
932 audio_format_handlers="$audio_format_handlers flac"
934 if test $HAVE_FAAD = yes; then
935 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
936 audio_format_handlers="$audio_format_handlers aac"
939 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
941 AC_SUBST(afh_objs, add_dot_o($afh_objs))
942 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
943 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
944 ########################################################################## play
990 if test "$have_core_audio" = "yes"; then
991 play_errlist_objs="$play_errlist_objs osx_write ipc"
992 play_cmdline_objs="$play_cmdline_objs osx_write"
994 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
995 NEED_VORBIS_OBJECTS && {
996 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
998 NEED_SPEEX_OBJECTS && {
999 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
1001 NEED_OPUS_OBJECTS &&
1002 play_errlist_objs="$play_errlist_objs
1007 NEED_FLAC_OBJECTS && {
1008 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
1010 if test $HAVE_FAAD = yes; then
1011 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
1013 if test $HAVE_MAD = yes; then
1014 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
1015 play_errlist_objs="$play_errlist_objs mp3dec_filter"
1017 if test "$have_oss" = "yes"; then
1018 play_errlist_objs="$play_errlist_objs oss_write"
1019 play_cmdline_objs="$play_cmdline_objs oss_write"
1021 if test $HAVE_ALSA = yes; then
1022 play_errlist_objs="$play_errlist_objs alsa_write"
1023 play_cmdline_objs="$play_cmdline_objs alsa_write"
1025 NEED_AO_OBJECTS && {
1026 play_errlist_objs="$play_errlist_objs ao_write"
1027 play_cmdline_objs="$play_cmdline_objs ao_write"
1029 if test "$have_readline" = "yes"; then
1030 play_errlist_objs="$play_errlist_objs interactive"
1032 if test $HAVE_SAMPLERATE = yes; then
1033 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1034 play_cmdline_objs="$play_cmdline_objs resample_filter"
1037 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1038 AC_SUBST(play_objs, add_dot_o($play_objs))
1039 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1040 objlist_to_errlist($play_errlist_objs), errors used by para_play)
1041 ######################################################################### write
1042 write_cmdline_objs="
1046 write_errlist_objs="
1061 default_writer="FILE_WRITE"
1063 if test "$have_core_audio" = "yes"; then
1064 write_errlist_objs="$write_errlist_objs osx_write ipc"
1065 write_cmdline_objs="$write_cmdline_objs osx_write"
1066 writers="$writers osx"
1067 default_writer="OSX_WRITE"
1069 NEED_AO_OBJECTS && {
1070 write_errlist_objs="$write_errlist_objs ao_write"
1071 write_cmdline_objs="$write_cmdline_objs ao_write"
1072 writers="$writers ao"
1073 default_writer="AO_WRITE"
1075 if test "$have_oss" = "yes"; then
1076 write_errlist_objs="$write_errlist_objs oss_write"
1077 write_cmdline_objs="$write_cmdline_objs oss_write"
1078 writers="$writers oss"
1079 default_writer="OSS_WRITE"
1081 if test $HAVE_ALSA = yes; then
1082 write_errlist_objs="$write_errlist_objs alsa_write"
1083 write_cmdline_objs="$write_cmdline_objs alsa_write"
1084 writers="$writers alsa"
1085 default_writer="ALSA_WRITE"
1088 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1089 AC_SUBST(write_objs, add_dot_o($write_objs))
1090 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1091 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1092 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1093 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1094 enum of supported writers)
1095 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1096 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1097 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1098 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1099 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1100 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1101 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1102 ######################################################################## audioc
1103 audioc_cmdline_objs="audioc"
1104 audioc_errlist_objs="
1112 if test "$have_readline" = "yes"; then
1113 audioc_errlist_objs="$audioc_errlist_objs
1120 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1121 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1122 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1123 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1124 ############################################################# error2.h
1125 # these are always built
1128 $filter_errlist_objs
1129 $audioc_errlist_objs
1135 # optional executables
1136 if test "$build_server" = "yes"; then
1137 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1139 if test "$build_gui" = "yes"; then
1140 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1142 if test "$build_fade" = "yes"; then
1143 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1145 if test "$build_client" = "yes"; then
1146 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1148 if test "$build_audiod" = "yes"; then
1149 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1152 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1154 object_executable_matrix=
1155 for i in $executables; do
1156 eval objs=\$${i}_errlist_objs
1157 object_executable_matrix="$object_executable_matrix $i: $objs"
1159 # use echo to replace newlines by space
1160 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1162 SS=$(for obj in $all_errlist_objs; do
1163 printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1164 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1165 [enum {$SS NUM_SS}],
1166 [list of all objects that use the paraslash error facility]
1168 ################################################################## status items
1170 status_items="basename status num_played mtime bitrate frequency file_size
1171 status_flags format score techinfo afs_mode
1172 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1173 offset seconds_total stream_start current_time audiod_uptime image_id
1174 lyrics_id duration directory lyrics_name image_name path hash channels
1175 last_played num_chunks chunk_time amplification artist title year album
1179 for i in $status_items; do
1180 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1182 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1183 [enum of all status items])
1186 for i in $status_items; do
1187 result="$result \"$i\", "
1189 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1190 [char * array of all status items])
1192 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1193 [formats supported by para_server and para_afh])
1195 AC_SUBST(executables)
1199 paraslash configuration:
1200 ~~~~~~~~~~~~~~~~~~~~~~~~
1201 crypto lib: ${CRYPTOLIB:-[none]}
1202 unix socket credentials: $have_ucred
1203 readline (interactive CLIs): $have_readline
1204 audio formats handlers: $audio_format_handlers
1205 id3 version 2 support: $HAVE_ID3TAG
1209 para_fade: $build_fade
1210 para_server: $build_server
1211 para_gui: $build_gui
1212 para_fade: $build_fade
1213 para_client: $build_client
1214 para_audiod: $build_audiod