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 ########################################################################## iconv
180 AC_SEARCH_LIBS([libiconv_open], [iconv],
181 [iconv_ldflags="$LIBS"],
184 AC_SUBST(iconv_ldflags)
185 AC_MSG_CHECKING([whether iconv needs const char ** cast])
190 size_t iconv(iconv_t cd, const char **inbuf,
191 size_t *inbytesleft, char **outbuf,
192 size_t *outbytesleft);
195 [cast='(const char **)'; msg=yes],
198 AC_DEFINE_UNQUOTED(ICONV_CAST, $cast, [cast for second arg to iconv()])
201 ########################################################################### libnsl
202 AC_CHECK_LIB([c], [gethostbyname],
204 [nsl_ldflags="-lnsl"]
206 AC_SUBST(nsl_ldflags)
207 ########################################################################### ucred
208 AC_MSG_CHECKING(for struct ucred)
209 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
211 #include <sys/types.h>
212 #include <sys/socket.h>
214 struct ucred sucred; sucred.pid=0;
215 ]])],[have_ucred=yes],[have_ucred=no])
216 AC_MSG_RESULT($have_ucred)
217 if test ${have_ucred} = yes; then
218 AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
220 ########################################################################### gengetopt
221 echo 'option "z" z "" flag off' | $gengetopt --file-name conftest-ggo &&
223 [gengetopt_args_info_description],
224 [ggo_descriptions_declared=yes],
225 [ggo_descriptions_declared=no],
226 [#include "conftest-ggo.h"]
228 AC_SUBST(ggo_descriptions_declared)
229 ########################################################################### curses
231 LIB_ARG_WITH([curses], [])
233 AC_CHECK_HEADER(curses.h, [], [HAVE_CURSES=no])
234 AC_SEARCH_LIBS([initscr], [ncursesw curses], [], [HAVE_CURSES=no])
235 curses_ldflags="$curses_ldflags $LIBS"
236 LIB_SUBST_FLAGS(curses)
238 ########################################################################### ip_mreqn
239 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
240 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
246 ]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
247 AC_MSG_RESULT($have_ip_mreqn)
248 if test ${have_ip_mreqn} = yes; then
249 AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
251 ########################################################################### osx
253 AC_MSG_CHECKING(for CoreAudio (MacOs))
254 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
255 #include <CoreAudio/CoreAudio.h>
258 ]])],[have_core_audio=yes],[have_core_audio=no])
259 AC_MSG_RESULT($have_core_audio)
260 if test ${have_core_audio} = yes; then
261 f1="-framework CoreAudio"
262 f2="-framework AudioToolbox"
263 f3="-framework AudioUnit"
264 f4="-framework CoreServices"
265 core_audio_ldflags="$f1 $f2 $f3 $f4"
266 AC_SUBST(core_audio_ldflags)
267 AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
269 ########################################################################### ogg
271 LIB_ARG_WITH([ogg], [-logg])
273 AC_CHECK_HEADERS([ogg/ogg.h], [], [HAVE_OGG=no])
274 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [HAVE_OGG=no])
275 AC_CHECK_LIB([ogg], [ogg_stream_flush_fill], [
276 AC_DEFINE(HAVE_OGG_STREAM_FLUSH_FILL, 1, [libogg >= 1.3.0])])
279 ######################################################################### vorbis
281 LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
283 AC_CHECK_HEADERS([vorbis/codec.h], [], [HAVE_VORBIS=no])
284 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [HAVE_VORBIS=no])
285 LIB_SUBST_FLAGS(vorbis)
287 ######################################################################### speex
289 LIB_ARG_WITH([speex], [-lspeex])
291 AC_CHECK_HEADERS([speex/speex.h], [], [HAVE_SPEEX=no])
292 AC_CHECK_LIB([speex], [speex_decoder_init], [], [HAVE_SPEEX=no])
293 LIB_SUBST_FLAGS(speex)
295 ######################################################################### opus
297 LIB_ARG_WITH([opus], [-lopus])
299 AC_CHECK_HEADERS([opus/opus.h], [], [HAVE_OPUS=no])
300 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [HAVE_OPUS=no])
301 LIB_SUBST_FLAGS(opus)
303 ########################################################################### flac
305 LIB_ARG_WITH([flac], [-lFLAC -lm])
307 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], HAVE_FLAC=no)
308 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
309 LIB_SUBST_FLAGS(flac)
312 # some helper functions for codecs which use the ogg container format
313 AC_DEFUN([NEED_OGG_OBJECTS], [{
314 test "$HAVE_OGG" = 'yes' -a \( \
315 "$HAVE_VORBIS" = 'yes' \
316 -o "$HAVE_SPEEX" = 'yes' \
317 -o "$HAVE_OPUS" = 'yes' \
318 -o "$HAVE_FLAC" = 'yes' \
321 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
322 test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
324 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
325 test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
327 AC_DEFUN([NEED_OPUS_OBJECTS], [{
328 test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
330 AC_DEFUN([NEED_FLAC_OBJECTS], [{
331 test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
333 ########################################################################### faad
335 LIB_ARG_WITH([faad], [-lfaad])
337 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
338 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
339 LIB_SUBST_FLAGS(faad)
341 ########################################################################### mad
343 LIB_ARG_WITH([mad], [-lmad])
345 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
346 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
349 ###################################################################### libid3tag
351 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
353 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
354 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
355 LIB_SUBST_FLAGS(id3tag)
357 ########################################################################### oss
359 LIB_ARG_WITH([oss], [])
360 AC_CHECK_HEADER(sys/soundcard.h, [HAVE_OSS=yes], [HAVE_OSS=no])
361 AC_CHECK_LIB(ossaudio, _oss_ioctl, [oss_ldflags="$oss_ldflags -lossaudio"], [])
364 ########################################################################### alsa
366 LIB_ARG_WITH([alsa], [-lasound])
368 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
369 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
370 LIB_SUBST_FLAGS(alsa)
372 ######################################################################### pthread
374 LIB_ARG_WITH([pthread], [-lpthread])
376 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
377 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
378 LIB_SUBST_FLAGS(pthread)
380 ########################################################################### libao
382 LIB_ARG_WITH([ao], [-lao])
384 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
385 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
388 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
389 ######################################################################## readline
391 AC_SEARCH_LIBS([tgetent], [tinfo curses terminfo termcap])
392 LIB_ARG_WITH([readline], [-lreadline $LIBS])
394 AC_CHECK_HEADER([readline/readline.h], [], [HAVE_READLINE=no])
395 AC_CHECK_LIB([readline], [rl_free_keymap], [], HAVE_READLINE=no)
398 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
402 #include <readline/readline.h>
405 LIB_SUBST_FLAGS(readline)
407 ############################################################# libsamplerate
409 LIB_ARG_WITH([samplerate], [-lsamplerate])
411 AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
412 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
413 LIB_SUBST_FLAGS(samplerate)
415 ######################################################################### server
416 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
418 executables="$executables server"
419 server_cmdline_objs="server"
420 server_errlist_objs="
459 if test "$CRYPTOLIB" = openssl; then
460 server_errlist_objs="$server_errlist_objs crypt"
462 server_errlist_objs="$server_errlist_objs gcrypt"
464 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
465 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
466 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
467 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
468 NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
469 test $HAVE_FAAD = yes && server_errlist_objs="$server_errlist_objs aac_afh aac_common"
470 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
471 AC_SUBST(server_objs, add_dot_o($server_objs))
472 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
473 objlist_to_errlist($server_errlist_objs), errors used by para_server)
477 ############################################################# client
478 if test -n "$CRYPTOLIB"; then
480 executables="$executables client"
481 client_cmdline_objs="client"
482 client_errlist_objs="
498 if test "$CRYPTOLIB" = openssl; then
499 client_errlist_objs="$client_errlist_objs crypt"
501 client_errlist_objs="$client_errlist_objs gcrypt"
503 if test $HAVE_READLINE = yes; then
504 client_errlist_objs="$client_errlist_objs interactive"
506 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
507 AC_SUBST(client_objs, add_dot_o($client_objs))
508 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
509 objlist_to_errlist($client_errlist_objs), errors used by para_client)
513 ############################################################# audiod
514 if test -n "$CRYPTOLIB"; then
516 executables="$executables audiod"
517 audiod_audio_formats="wma"
518 audiod_cmdline_objs="$audiod_cmdline_objs
530 audiod_errlist_objs="$audiod_errlist_objs
568 if test "$CRYPTOLIB" = openssl; then
569 audiod_errlist_objs="$audiod_errlist_objs crypt"
571 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
573 if test "$have_core_audio" = "yes"; then
574 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
575 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
577 NEED_VORBIS_OBJECTS && {
578 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
579 audiod_audio_formats="$audiod_audio_formats ogg"
581 NEED_SPEEX_OBJECTS && {
582 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
583 audiod_audio_formats="$audiod_audio_formats spx"
585 NEED_OPUS_OBJECTS && {
586 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
587 audiod_audio_formats="$audiod_audio_formats opus"
589 NEED_FLAC_OBJECTS && {
590 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
591 audiod_audio_formats="$audiod_audio_formats flac"
593 if test $HAVE_FAAD = yes; then
594 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
595 audiod_audio_formats="$audiod_audio_formats aac"
597 if test $HAVE_MAD = yes; then
598 audiod_audio_formats="$audiod_audio_formats mp3"
599 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
600 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
602 if test $HAVE_OSS = yes; then
603 audiod_errlist_objs="$audiod_errlist_objs oss_write"
604 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
606 if test $HAVE_ALSA = yes; then
607 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
608 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
611 audiod_errlist_objs="$audiod_errlist_objs ao_write"
612 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
614 if test $HAVE_SAMPLERATE = yes; then
615 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
616 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
618 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
619 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
620 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
621 errors used by para_audiod)
623 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
624 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
625 enum of audio formats supported by audiod)
626 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
627 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
631 ########################################################################### fade
632 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
634 executables="$executables fade"
635 fade_cmdline_objs="fade"
636 fade_errlist_objs="fade exec string fd version ggo"
637 if test $HAVE_OSS = yes; then
638 fade_errlist_objs="$fade_errlist_objs oss_mix"
639 mixers="${mixers}oss "
640 default_mixer="OSS_MIX"
642 if test $HAVE_ALSA = yes; then
643 fade_errlist_objs="$fade_errlist_objs alsa_mix"
644 mixers="${mixers}alsa "
645 default_mixer="ALSA_MIX"
647 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
648 AC_SUBST(fade_objs, add_dot_o($fade_objs))
649 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
650 objlist_to_errlist($fade_errlist_objs),
651 errors used by para_fade)
654 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
657 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
658 enum of supported mixers)
659 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
660 use this mixer if none was specified)
661 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
662 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
665 printf 'extern void '$i'_mix_init(struct mixer *); '
668 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
669 init functions of the supported mixers)
670 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
671 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
674 AC_MSG_WARN([no mixer support])
676 ########################################################################### gui
677 if test $HAVE_CURSES = yes; then
679 executables="$executables gui"
680 gui_cmdline_objs="gui"
695 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
696 AC_SUBST(gui_objs, add_dot_o($gui_objs))
697 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
698 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
701 AC_MSG_WARN([no curses lib, cannot build para_gui])
703 ######################################################################## filter
713 filter_errlist_objs="
738 filter_cmdline_objs="
745 NEED_VORBIS_OBJECTS && {
746 filters="$filters oggdec"
747 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
749 NEED_SPEEX_OBJECTS && {
750 filters="$filters spxdec"
751 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
753 NEED_OPUS_OBJECTS && {
754 filters="$filters opusdec"
755 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
757 NEED_FLAC_OBJECTS && {
758 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
759 filters="$filters flacdec"
761 if test $HAVE_FAAD = yes; then
762 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
763 filters="$filters aacdec"
765 if test $HAVE_MAD = yes; then
766 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
767 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
768 filters="$filters mp3dec"
770 if test $HAVE_SAMPLERATE = yes; then
771 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
772 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
773 filters="$filters resample"
775 filters="$(echo $filters)"
777 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
779 AC_SUBST(filter_objs, add_dot_o($filter_objs))
780 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
781 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
783 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
784 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
785 enum of supported filters)
786 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
787 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
788 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
789 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
790 ########################################################################## recv
820 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
821 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
822 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
823 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
824 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
826 if test $HAVE_FAAD = yes; then
827 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
829 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
830 AC_SUBST(receivers, "http dccp udp afh")
831 AC_SUBST(recv_objs, add_dot_o($recv_objs))
832 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
833 errors used by para_recv)
834 ########################################################################### afh
835 audio_format_handlers="mp3 wma"
836 afh_cmdline_objs="afh"
849 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
850 NEED_VORBIS_OBJECTS && {
851 afh_errlist_objs="$afh_errlist_objs ogg_afh"
852 audio_format_handlers="$audio_format_handlers ogg"
854 NEED_SPEEX_OBJECTS && {
855 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
856 audio_format_handlers="$audio_format_handlers spx"
858 NEED_OPUS_OBJECTS && {
859 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
860 audio_format_handlers="$audio_format_handlers opus"
862 NEED_FLAC_OBJECTS && {
863 afh_errlist_objs="$afh_errlist_objs flac_afh"
864 audio_format_handlers="$audio_format_handlers flac"
866 if test $HAVE_FAAD = yes; then
867 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
868 audio_format_handlers="$audio_format_handlers aac"
871 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
873 AC_SUBST(afh_objs, add_dot_o($afh_objs))
874 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
875 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
876 ########################################################################## play
922 if test "$have_core_audio" = "yes"; then
923 play_errlist_objs="$play_errlist_objs osx_write ipc"
924 play_cmdline_objs="$play_cmdline_objs osx_write"
926 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
927 NEED_VORBIS_OBJECTS && {
928 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
930 NEED_SPEEX_OBJECTS && {
931 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
934 play_errlist_objs="$play_errlist_objs
939 NEED_FLAC_OBJECTS && {
940 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
942 if test $HAVE_FAAD = yes; then
943 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
945 if test $HAVE_MAD = yes; then
946 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
947 play_errlist_objs="$play_errlist_objs mp3dec_filter"
949 if test $HAVE_OSS = yes; then
950 play_errlist_objs="$play_errlist_objs oss_write"
951 play_cmdline_objs="$play_cmdline_objs oss_write"
953 if test $HAVE_ALSA = yes; then
954 play_errlist_objs="$play_errlist_objs alsa_write"
955 play_cmdline_objs="$play_cmdline_objs alsa_write"
958 play_errlist_objs="$play_errlist_objs ao_write"
959 play_cmdline_objs="$play_cmdline_objs ao_write"
961 if test $HAVE_READLINE = yes; then
962 play_errlist_objs="$play_errlist_objs interactive"
964 if test $HAVE_SAMPLERATE = yes; then
965 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
966 play_cmdline_objs="$play_cmdline_objs resample_filter"
969 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
970 AC_SUBST(play_objs, add_dot_o($play_objs))
971 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
972 objlist_to_errlist($play_errlist_objs), errors used by para_play)
973 ######################################################################### write
993 default_writer="FILE_WRITE"
995 if test "$have_core_audio" = "yes"; then
996 write_errlist_objs="$write_errlist_objs osx_write ipc"
997 write_cmdline_objs="$write_cmdline_objs osx_write"
998 writers="$writers osx"
999 default_writer="OSX_WRITE"
1001 NEED_AO_OBJECTS && {
1002 write_errlist_objs="$write_errlist_objs ao_write"
1003 write_cmdline_objs="$write_cmdline_objs ao_write"
1004 writers="$writers ao"
1005 default_writer="AO_WRITE"
1007 if test $HAVE_OSS = yes; then
1008 write_errlist_objs="$write_errlist_objs oss_write"
1009 write_cmdline_objs="$write_cmdline_objs oss_write"
1010 writers="$writers oss"
1011 default_writer="OSS_WRITE"
1013 if test $HAVE_ALSA = yes; then
1014 write_errlist_objs="$write_errlist_objs alsa_write"
1015 write_cmdline_objs="$write_cmdline_objs alsa_write"
1016 writers="$writers alsa"
1017 default_writer="ALSA_WRITE"
1020 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1021 AC_SUBST(write_objs, add_dot_o($write_objs))
1022 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1023 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1024 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1025 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1026 enum of supported writers)
1027 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1028 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1029 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1030 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1031 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1032 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1033 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1034 ######################################################################## audioc
1035 audioc_cmdline_objs="audioc"
1036 audioc_errlist_objs="
1044 if test $HAVE_READLINE = yes; then
1045 audioc_errlist_objs="$audioc_errlist_objs
1052 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1053 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1054 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1055 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1056 ############################################################# error2.h
1057 # these are always built
1060 $filter_errlist_objs
1061 $audioc_errlist_objs
1067 # optional executables
1068 if test "$build_server" = "yes"; then
1069 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1071 if test "$build_gui" = "yes"; then
1072 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1074 if test "$build_fade" = "yes"; then
1075 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1077 if test "$build_client" = "yes"; then
1078 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1080 if test "$build_audiod" = "yes"; then
1081 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1084 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1086 object_executable_matrix=
1087 for i in $executables; do
1088 eval objs=\$${i}_errlist_objs
1089 object_executable_matrix="$object_executable_matrix $i: $objs"
1091 # use echo to replace newlines by space
1092 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1094 SS=$(for obj in $all_errlist_objs; do
1095 printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1096 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1097 [enum {$SS NUM_SS}],
1098 [list of all objects that use the paraslash error facility]
1100 ################################################################## status items
1102 status_items="basename status num_played mtime bitrate frequency file_size
1103 status_flags format score techinfo afs_mode
1104 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1105 offset seconds_total stream_start current_time audiod_uptime image_id
1106 lyrics_id duration directory lyrics_name image_name path hash channels
1107 last_played num_chunks chunk_time amplification artist title year album
1111 for i in $status_items; do
1112 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1114 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1115 [enum of all status items])
1118 for i in $status_items; do
1119 result="$result \"$i\", "
1121 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1122 [char * array of all status items])
1124 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1125 [formats supported by para_server and para_afh])
1127 AC_SUBST(executables)
1131 paraslash configuration:
1132 ~~~~~~~~~~~~~~~~~~~~~~~~
1133 crypto lib: ${CRYPTOLIB:-[none]}
1134 unix socket credentials: $have_ucred
1135 readline (interactive CLIs): $HAVE_READLINE
1136 audio formats handlers: $audio_format_handlers
1137 id3 version 2 support: $HAVE_ID3TAG
1141 para_fade: $build_fade
1142 para_server: $build_server
1143 para_gui: $build_gui
1144 para_fade: $build_fade
1145 para_client: $build_client
1146 para_audiod: $build_audiod