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_USE_SYSTEM_EXTENSIONS
71 AC_PATH_PROG([GENGETOPT], [gengetopt])
72 test -z "$GENGETOPT" && AC_MSG_ERROR(
73 [gengetopt is required to build this package])
75 AC_PATH_PROG([M4], [m4])
76 test -z "$M4" && AC_MSG_ERROR(
77 [The m4 macro processor is required to build this package])
79 AC_PATH_PROG([HELP2MAN], [help2man])
80 test -z "$HELP2MAN" && AC_MSG_ERROR(
81 [help2man is required to build this package])
83 AC_PATH_PROG([INSTALL], [install])
84 test -z "$INSTALL" && AC_MSG_ERROR(
85 [The install program is required to build this package])
90 executables="recv filter audioc write afh play"
91 ################################################################## clock_gettime
93 AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
94 AC_CHECK_LIB([rt], [clock_gettime], [clock_gettime_lib=rt], [], [])
96 if test -n "$clock_gettime_lib"; then
97 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [
98 define to 1 if clock_gettime() is supported])
100 if test "$clock_gettime_lib" = "rt"; then
101 AC_SUBST(clock_gettime_ldflags, -lrt)
104 ########################################################################### osl
106 LIB_ARG_WITH([osl], [-losl])
108 AC_CHECK_HEADER(osl.h, [], [HAVE_OSL=no])
109 AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no])
112 ######################################################################## openssl
115 LIB_ARG_WITH([openssl], [-lssl -lcrypto])
116 AC_CHECK_HEADER(openssl/ssl.h, [], [HAVE_OPENSSL=no])
117 AC_CHECK_LIB([crypto], [RAND_bytes], [], [HAVE_OPENSSL=no])
118 LIB_SUBST_FLAGS(openssl)
120 ######################################################################### gcrypt
123 LIB_ARG_WITH([gcrypt], [-lgcrypt])
124 AC_CHECK_HEADER(gcrypt.h, [], [HAVE_GCRYPT=no])
125 AC_CHECK_LIB([gcrypt], [gcry_randomize], [], [HAVE_GCRYPT=no])
126 LIB_SUBST_FLAGS(gcrypt)
128 ######################################################################### crypto
129 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
130 Force using crypto library "lib". This package requires either
131 openssl or libgcrypt being installed. Possible values for "lib"
132 are thus "openssl" and "gcrypt". If this option is not given,
133 openssl is tried first. If openssl was not found, gcrypt is
136 CRYPTOLIB="$enable_cryptolib"
137 case "$enable_cryptolib" in
139 test $HAVE_OPENSSL = no && AC_MSG_ERROR(openssl not found)
140 crypto_ldflags="$openssl_ldflags"
143 test $HAVE_GCRYPT = no && AC_MSG_ERROR(gcrypt not found)
144 crypto_ldflags="$gcrypt_ldflags"
148 if test $HAVE_GCRYPT = yes; then
150 crypto_ldflags="$gcrypt_ldflags"
152 if test $HAVE_OPENSSL = yes; then
154 crypto_ldflags="$openssl_ldflags"
158 AC_MSG_ERROR([invalid value "$enable_cryptolib" for --enable-cryptolib])
161 AC_SUBST(crypto_ldflags)
162 ########################################################################## iconv
165 AC_SEARCH_LIBS([libiconv_open], [iconv],
166 [iconv_ldflags="$LIBS"],
169 AC_SUBST(iconv_ldflags)
170 AC_MSG_CHECKING([whether iconv needs const char ** cast])
175 size_t iconv(iconv_t cd, const char **inbuf,
176 size_t *inbytesleft, char **outbuf,
177 size_t *outbytesleft);
180 [cast='(const char **)'; msg=yes],
183 AC_DEFINE_UNQUOTED(ICONV_CAST, $cast, [cast for second arg to iconv()])
186 ########################################################################### ucred
187 AC_MSG_CHECKING(for struct ucred)
188 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
189 #include <sys/types.h>
190 #include <sys/socket.h>
192 struct ucred sucred; sucred.pid=0;
193 ]])],[have_ucred=yes],[have_ucred=no])
194 AC_MSG_RESULT($have_ucred)
195 if test ${have_ucred} = yes; then
196 AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
198 ########################################################################### gengetopt
199 echo 'option "z" z "" flag off' | $GENGETOPT --file-name conftest-ggo &&
201 [gengetopt_args_info_description],
202 [ggo_descriptions_declared=yes],
203 [ggo_descriptions_declared=no],
204 [#include "conftest-ggo.h"]
206 AC_SUBST(ggo_descriptions_declared)
207 ########################################################################### curses
209 LIB_ARG_WITH([curses], [])
211 AC_CHECK_HEADER(curses.h, [], [HAVE_CURSES=no])
212 AC_SEARCH_LIBS([initscr], [ncursesw curses], [], [HAVE_CURSES=no])
213 curses_ldflags="$curses_ldflags $LIBS"
214 LIB_SUBST_FLAGS(curses)
216 ########################################################################### ip_mreqn
217 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
218 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
224 ]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
225 AC_MSG_RESULT($have_ip_mreqn)
226 if test ${have_ip_mreqn} = yes; then
227 AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
229 ########################################################################### osx
231 AC_MSG_CHECKING(for CoreAudio (MacOs))
232 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
233 #include <CoreAudio/CoreAudio.h>
236 ]])],[have_core_audio=yes],[have_core_audio=no])
237 AC_MSG_RESULT($have_core_audio)
238 if test ${have_core_audio} = yes; then
239 f1="-framework CoreAudio"
240 f2="-framework AudioToolbox"
241 f3="-framework AudioUnit"
242 f4="-framework CoreServices"
243 core_audio_ldflags="$f1 $f2 $f3 $f4"
244 AC_SUBST(core_audio_ldflags)
245 AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
247 ########################################################################### ogg
249 LIB_ARG_WITH([ogg], [-logg])
251 AC_CHECK_HEADERS([ogg/ogg.h], [], [HAVE_OGG=no])
252 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [HAVE_OGG=no])
253 AC_CHECK_LIB([ogg], [ogg_stream_flush_fill], [
254 AC_DEFINE(HAVE_OGG_STREAM_FLUSH_FILL, 1, [libogg >= 1.3.0])])
257 ######################################################################### vorbis
259 LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
261 AC_CHECK_HEADERS([vorbis/codec.h], [], [HAVE_VORBIS=no])
262 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [HAVE_VORBIS=no])
263 LIB_SUBST_FLAGS(vorbis)
265 ######################################################################### speex
267 LIB_ARG_WITH([speex], [-lspeex])
269 AC_CHECK_HEADERS([speex/speex.h], [], [HAVE_SPEEX=no])
270 AC_CHECK_LIB([speex], [speex_decoder_init], [], [HAVE_SPEEX=no])
271 LIB_SUBST_FLAGS(speex)
273 ######################################################################### opus
275 LIB_ARG_WITH([opus], [-lopus])
277 AC_CHECK_HEADERS([opus/opus.h], [], [HAVE_OPUS=no])
278 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [HAVE_OPUS=no])
279 LIB_SUBST_FLAGS(opus)
281 ########################################################################### flac
283 LIB_ARG_WITH([flac], [-lFLAC -lm])
285 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], HAVE_FLAC=no)
286 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
287 LIB_SUBST_FLAGS(flac)
290 # some helper functions for codecs which use the ogg container format
291 AC_DEFUN([NEED_OGG_OBJECTS], [{
292 test "$HAVE_OGG" = 'yes' -a \( \
293 "$HAVE_VORBIS" = 'yes' \
294 -o "$HAVE_SPEEX" = 'yes' \
295 -o "$HAVE_OPUS" = 'yes' \
296 -o "$HAVE_FLAC" = 'yes' \
299 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
300 test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
302 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
303 test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
305 AC_DEFUN([NEED_OPUS_OBJECTS], [{
306 test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
308 AC_DEFUN([NEED_FLAC_OBJECTS], [{
309 test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
311 ########################################################################### faad
313 LIB_ARG_WITH([faad], [-lfaad])
315 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
316 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
317 LIB_SUBST_FLAGS(faad)
319 ########################################################################### mad
321 LIB_ARG_WITH([mad], [-lmad])
323 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
324 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
327 ###################################################################### libid3tag
329 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
331 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
332 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
333 LIB_SUBST_FLAGS(id3tag)
335 ########################################################################### oss
337 LIB_ARG_WITH([oss], [])
338 AC_CHECK_HEADER(sys/soundcard.h, [HAVE_OSS=yes], [HAVE_OSS=no])
339 AC_CHECK_LIB(ossaudio, _oss_ioctl, [oss_ldflags="$oss_ldflags -lossaudio"], [])
342 ########################################################################### alsa
344 LIB_ARG_WITH([alsa], [-lasound])
346 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
347 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
348 LIB_SUBST_FLAGS(alsa)
350 ######################################################################### pthread
352 LIB_ARG_WITH([pthread], [-lpthread])
354 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
355 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
356 LIB_SUBST_FLAGS(pthread)
358 ########################################################################### libao
360 LIB_ARG_WITH([ao], [-lao])
362 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
363 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
366 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
367 ######################################################################## readline
369 AC_SEARCH_LIBS([tgetent], [tinfo curses terminfo termcap])
370 LIB_ARG_WITH([readline], [-lreadline $LIBS])
372 AC_CHECK_HEADER([readline/readline.h], [], [HAVE_READLINE=no])
373 AC_CHECK_LIB([readline], [rl_free_keymap], [], HAVE_READLINE=no)
376 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
380 #include <readline/readline.h>
383 LIB_SUBST_FLAGS(readline)
385 ############################################################# libsamplerate
387 LIB_ARG_WITH([samplerate], [-lsamplerate])
389 AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
390 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
391 LIB_SUBST_FLAGS(samplerate)
393 ########################################################################## mp4v2
395 LIB_ARG_WITH([mp4v2], [-lmp4v2])
397 AC_CHECK_HEADER([mp4v2/mp4v2.h], [], [HAVE_MP4V2=no])
398 AC_CHECK_LIB([mp4v2], [MP4Read], [], [HAVE_MP4V2=no])
399 LIB_SUBST_FLAGS(mp4v2)
401 ######################################################################### server
402 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
404 executables="$executables server"
405 server_cmdline_objs="server"
406 server_errlist_objs="
446 if test "$CRYPTOLIB" = openssl; then
447 server_errlist_objs="$server_errlist_objs crypt"
449 server_errlist_objs="$server_errlist_objs gcrypt"
451 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
452 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
453 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
454 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
455 NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
456 if test $HAVE_FAAD = yes && test $HAVE_MP4V2 = yes; then
457 server_errlist_objs="$server_errlist_objs aac_afh aac_common"
459 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
460 AC_SUBST(server_objs, add_dot_o($server_objs))
461 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
462 objlist_to_errlist($server_errlist_objs), errors used by para_server)
466 ############################################################# client
467 if test -n "$CRYPTOLIB"; then
469 executables="$executables client"
470 client_cmdline_objs="client"
471 client_errlist_objs="
488 if test "$CRYPTOLIB" = openssl; then
489 client_errlist_objs="$client_errlist_objs crypt"
491 client_errlist_objs="$client_errlist_objs gcrypt"
493 if test $HAVE_READLINE = yes; then
494 client_errlist_objs="$client_errlist_objs interactive"
496 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
497 AC_SUBST(client_objs, add_dot_o($client_objs))
498 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
499 objlist_to_errlist($client_errlist_objs), errors used by para_client)
503 ############################################################# audiod
504 if test -n "$CRYPTOLIB"; then
506 executables="$executables audiod"
507 audiod_audio_formats="wma"
508 audiod_cmdline_objs="$audiod_cmdline_objs
520 audiod_errlist_objs="$audiod_errlist_objs
559 if test "$CRYPTOLIB" = openssl; then
560 audiod_errlist_objs="$audiod_errlist_objs crypt"
562 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
564 if test "$have_core_audio" = "yes"; then
565 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
566 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
568 NEED_VORBIS_OBJECTS && {
569 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
570 audiod_audio_formats="$audiod_audio_formats ogg"
572 NEED_SPEEX_OBJECTS && {
573 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
574 audiod_audio_formats="$audiod_audio_formats spx"
576 NEED_OPUS_OBJECTS && {
577 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
578 audiod_audio_formats="$audiod_audio_formats opus"
580 NEED_FLAC_OBJECTS && {
581 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
582 audiod_audio_formats="$audiod_audio_formats flac"
584 if test $HAVE_FAAD = yes; then
585 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
586 audiod_audio_formats="$audiod_audio_formats aac"
588 if test $HAVE_MAD = yes; then
589 audiod_audio_formats="$audiod_audio_formats mp3"
590 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
591 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
593 if test $HAVE_OSS = yes; then
594 audiod_errlist_objs="$audiod_errlist_objs oss_write"
595 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
597 if test $HAVE_ALSA = yes; then
598 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
599 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
602 audiod_errlist_objs="$audiod_errlist_objs ao_write"
603 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
605 if test $HAVE_SAMPLERATE = yes; then
606 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
607 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
609 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
610 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
611 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
612 errors used by para_audiod)
614 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
615 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
616 enum of audio formats supported by audiod)
617 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
618 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
622 ########################################################################### fade
623 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
625 executables="$executables fade"
626 fade_cmdline_objs="fade"
627 fade_errlist_objs="fade exec string fd version ggo"
628 if test $HAVE_OSS = yes; then
629 fade_errlist_objs="$fade_errlist_objs oss_mix"
630 mixers="${mixers}oss "
631 default_mixer="OSS_MIX"
633 if test $HAVE_ALSA = yes; then
634 fade_errlist_objs="$fade_errlist_objs alsa_mix"
635 mixers="${mixers}alsa "
636 default_mixer="ALSA_MIX"
638 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
639 AC_SUBST(fade_objs, add_dot_o($fade_objs))
640 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
641 objlist_to_errlist($fade_errlist_objs),
642 errors used by para_fade)
645 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
648 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
649 enum of supported mixers)
650 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
651 use this mixer if none was specified)
652 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
653 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
656 printf 'extern void '$i'_mix_init(struct mixer *); '
659 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
660 init functions of the supported mixers)
661 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
662 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
665 AC_MSG_WARN([no mixer support])
667 ########################################################################### gui
668 if test $HAVE_CURSES = yes; then
670 executables="$executables gui"
671 gui_cmdline_objs="gui"
686 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
687 AC_SUBST(gui_objs, add_dot_o($gui_objs))
688 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
689 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
692 AC_MSG_WARN([no curses lib, cannot build para_gui])
694 ######################################################################## filter
704 filter_errlist_objs="
729 filter_cmdline_objs="
736 NEED_VORBIS_OBJECTS && {
737 filters="$filters oggdec"
738 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
740 NEED_SPEEX_OBJECTS && {
741 filters="$filters spxdec"
742 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
744 NEED_OPUS_OBJECTS && {
745 filters="$filters opusdec"
746 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
748 NEED_FLAC_OBJECTS && {
749 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
750 filters="$filters flacdec"
752 if test $HAVE_FAAD = yes; then
753 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
754 filters="$filters aacdec"
756 if test $HAVE_MAD = yes; then
757 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
758 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
759 filters="$filters mp3dec"
761 if test $HAVE_SAMPLERATE = yes; then
762 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
763 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
764 filters="$filters resample"
766 filters="$(echo $filters)"
768 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
770 AC_SUBST(filter_objs, add_dot_o($filter_objs))
771 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
772 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
774 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
775 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
776 enum of supported filters)
777 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
778 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
779 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
780 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
781 ########################################################################## recv
811 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
812 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
813 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
814 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
815 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
817 if test $HAVE_FAAD = yes -a $HAVE_MP4V2 = yes; then
818 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
820 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
821 AC_SUBST(receivers, "http dccp udp afh")
822 AC_SUBST(recv_objs, add_dot_o($recv_objs))
823 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
824 errors used by para_recv)
825 ########################################################################### afh
826 audio_format_handlers="mp3 wma"
827 afh_cmdline_objs="afh"
840 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
841 NEED_VORBIS_OBJECTS && {
842 afh_errlist_objs="$afh_errlist_objs ogg_afh"
843 audio_format_handlers="$audio_format_handlers ogg"
845 NEED_SPEEX_OBJECTS && {
846 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
847 audio_format_handlers="$audio_format_handlers spx"
849 NEED_OPUS_OBJECTS && {
850 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
851 audio_format_handlers="$audio_format_handlers opus"
853 NEED_FLAC_OBJECTS && {
854 afh_errlist_objs="$afh_errlist_objs flac_afh"
855 audio_format_handlers="$audio_format_handlers flac"
857 if test $HAVE_FAAD = yes -a $HAVE_MP4V2 = yes; then
858 afh_errlist_objs="$afh_errlist_objs aac_afh aac_common"
859 audio_format_handlers="$audio_format_handlers aac"
862 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
864 AC_SUBST(afh_objs, add_dot_o($afh_objs))
865 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
866 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
867 ########################################################################## play
913 if test "$have_core_audio" = "yes"; then
914 play_errlist_objs="$play_errlist_objs osx_write ipc"
915 play_cmdline_objs="$play_cmdline_objs osx_write"
917 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
918 NEED_VORBIS_OBJECTS && {
919 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
921 NEED_SPEEX_OBJECTS && {
922 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
925 play_errlist_objs="$play_errlist_objs
930 NEED_FLAC_OBJECTS && {
931 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
933 if test $HAVE_FAAD = yes; then
934 play_errlist_objs="$play_errlist_objs aacdec_filter"
936 if test $HAVE_MP4V2 = yes; then
937 play_errlist_objs="$play_errlist_objs aac_afh"
939 if test $HAVE_MP4V2 = yes || test $HAVE_FAAD = yes; then
940 play_errlist_objs="$play_errlist_objs aac_common"
942 if test $HAVE_MAD = yes; then
943 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
944 play_errlist_objs="$play_errlist_objs mp3dec_filter"
946 if test $HAVE_OSS = yes; then
947 play_errlist_objs="$play_errlist_objs oss_write"
948 play_cmdline_objs="$play_cmdline_objs oss_write"
950 if test $HAVE_ALSA = yes; then
951 play_errlist_objs="$play_errlist_objs alsa_write"
952 play_cmdline_objs="$play_cmdline_objs alsa_write"
955 play_errlist_objs="$play_errlist_objs ao_write"
956 play_cmdline_objs="$play_cmdline_objs ao_write"
958 if test $HAVE_READLINE = yes; then
959 play_errlist_objs="$play_errlist_objs interactive"
961 if test $HAVE_SAMPLERATE = yes; then
962 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
963 play_cmdline_objs="$play_cmdline_objs resample_filter"
966 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
967 AC_SUBST(play_objs, add_dot_o($play_objs))
968 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
969 objlist_to_errlist($play_errlist_objs), errors used by para_play)
970 ######################################################################### write
990 default_writer="FILE_WRITE"
992 if test "$have_core_audio" = "yes"; then
993 write_errlist_objs="$write_errlist_objs osx_write ipc"
994 write_cmdline_objs="$write_cmdline_objs osx_write"
995 writers="$writers osx"
996 default_writer="OSX_WRITE"
999 write_errlist_objs="$write_errlist_objs ao_write"
1000 write_cmdline_objs="$write_cmdline_objs ao_write"
1001 writers="$writers ao"
1002 default_writer="AO_WRITE"
1004 if test $HAVE_OSS = yes; then
1005 write_errlist_objs="$write_errlist_objs oss_write"
1006 write_cmdline_objs="$write_cmdline_objs oss_write"
1007 writers="$writers oss"
1008 default_writer="OSS_WRITE"
1010 if test $HAVE_ALSA = yes; then
1011 write_errlist_objs="$write_errlist_objs alsa_write"
1012 write_cmdline_objs="$write_cmdline_objs alsa_write"
1013 writers="$writers alsa"
1014 default_writer="ALSA_WRITE"
1017 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1018 AC_SUBST(write_objs, add_dot_o($write_objs))
1019 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1020 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1021 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1022 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1023 enum of supported writers)
1024 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1025 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1026 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1027 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1028 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1029 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1030 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1031 ######################################################################## audioc
1032 audioc_cmdline_objs="audioc"
1033 audioc_errlist_objs="
1041 if test $HAVE_READLINE = yes; then
1042 audioc_errlist_objs="$audioc_errlist_objs
1049 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1050 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1051 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1052 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1053 ############################################################# error2.h
1054 # these are always built
1057 $filter_errlist_objs
1058 $audioc_errlist_objs
1064 # optional executables
1065 if test "$build_server" = "yes"; then
1066 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1068 if test "$build_gui" = "yes"; then
1069 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1071 if test "$build_fade" = "yes"; then
1072 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1074 if test "$build_client" = "yes"; then
1075 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1077 if test "$build_audiod" = "yes"; then
1078 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1081 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1083 object_executable_matrix=
1084 for i in $executables; do
1085 eval objs=\$${i}_errlist_objs
1086 object_executable_matrix="$object_executable_matrix $i: $objs"
1088 # use echo to replace newlines by space
1089 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1091 SS=$(for obj in $all_errlist_objs; do
1092 printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1093 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1094 [enum {$SS NUM_SS}],
1095 [list of all objects that use the paraslash error facility]
1097 ################################################################## status items
1099 status_items="basename status num_played mtime bitrate frequency file_size
1100 status_flags format score techinfo afs_mode
1101 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1102 offset seconds_total stream_start current_time audiod_uptime image_id
1103 lyrics_id duration directory lyrics_name image_name path hash channels
1104 last_played num_chunks chunk_time amplification artist title year album
1108 for i in $status_items; do
1109 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1111 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1112 [enum of all status items])
1115 for i in $status_items; do
1116 result="$result \"$i\", "
1118 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1119 [char * array of all status items])
1121 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1122 [formats supported by para_server and para_afh])
1124 AC_SUBST(executables)
1128 paraslash configuration:
1129 ~~~~~~~~~~~~~~~~~~~~~~~~
1130 crypto lib: ${CRYPTOLIB:-[none]}
1131 unix socket credentials: $have_ucred
1132 readline (interactive CLIs): $HAVE_READLINE
1133 id3 version 2 support: $HAVE_ID3TAG
1137 audio format handlers: $audio_format_handlers
1138 filters: $(echo $filters)
1141 para_server: $build_server
1142 para_gui: $build_gui
1143 para_fade: $build_fade
1144 para_client: $build_client
1145 para_audiod: $build_audiod