3 AC_INIT([paraslash], [m4_esyscmd_s(./GIT-VERSION-GEN)],
4 [maan@tuebingen.mpg.de], [], [http://people.tuebingen.mpg.de/maan/paraslash/])
5 AC_CONFIG_HEADERS([config.h])
7 AC_CONFIG_FILES([Makefile])
8 AC_DEFUN([add_dot_o],[$(for i in $@; do printf "$i.o "; done)])
9 AC_DEFUN([add_cmdline],[$(for i in $@; do printf "${i}.cmdline "; done)])
10 AC_DEFUN([LIB_ARG_WITH], [
11 AC_ARG_WITH($1-headers, [AS_HELP_STRING(--with-$1-headers=dir,
12 [look for $1 headers in dir])])
13 AC_ARG_WITH($1-libs, [AS_HELP_STRING(--with-$1-libs=dir,
14 [look for $1 libraries in dir])])
15 if test -n "$with_$1_headers"; then
16 $1_cppflags="-I$with_$1_headers"
17 CPPFLAGS="$CPPFLAGS $$1_cppflags"
19 if test -n "$with_$1_libs"; then
20 $1_ldflags="-L$with_$1_libs $2"
24 LDFLAGS="$LDFLAGS $$1_ldflags"
27 AC_DEFUN([STASH_FLAGS], [
28 OLD_CPPFLAGS="$CPPFLAGS"
29 OLD_LDFLAGS="$LDFLAGS"
33 AC_DEFUN([UNSTASH_FLAGS], [
34 CPPFLAGS="$OLD_CPPFLAGS"
35 LDFLAGS="$OLD_LDFLAGS"
38 AC_DEFUN([LIB_SUBST_FLAGS], [
39 if test "$HAVE_[]m4_toupper([$1])" = 'yes'; then
40 AC_DEFINE(HAVE_[]m4_toupper([$1]), 1,
41 define to 1 to turn on $1 support)
46 AC_SUBST(HAVE_[]m4_toupper([$1]))
51 AC_USE_SYSTEM_EXTENSIONS
54 AC_PATH_PROG([GENGETOPT], [gengetopt])
55 test -z "$GENGETOPT" && AC_MSG_ERROR(
56 [gengetopt is required to build this package])
58 AC_PATH_PROG([M4], [m4])
59 test -z "$M4" && AC_MSG_ERROR(
60 [The m4 macro processor is required to build this package])
62 AC_PATH_PROG([HELP2MAN], [help2man])
63 test -z "$HELP2MAN" && AC_MSG_ERROR(
64 [help2man is required to build this package])
66 AC_PATH_PROG([INSTALL], [install])
67 test -z "$INSTALL" && AC_MSG_ERROR(
68 [The install program is required to build this package])
73 executables="recv filter audioc write afh play"
74 ################################################################## clock_gettime
76 AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
77 AC_CHECK_LIB([rt], [clock_gettime], [clock_gettime_lib=rt], [], [])
79 if test -n "$clock_gettime_lib"; then
80 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [
81 define to 1 if clock_gettime() is supported])
83 if test "$clock_gettime_lib" = "rt"; then
84 AC_SUBST(clock_gettime_ldflags, -lrt)
87 ########################################################################### osl
89 LIB_ARG_WITH([osl], [-losl])
91 AC_CHECK_HEADER(osl.h, [], [HAVE_OSL=no])
92 AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no])
95 ######################################################################## openssl
98 LIB_ARG_WITH([openssl], [-lssl -lcrypto])
99 AC_CHECK_HEADER(openssl/ssl.h, [], [HAVE_OPENSSL=no])
100 AC_CHECK_LIB([crypto], [RAND_bytes], [], [HAVE_OPENSSL=no])
101 LIB_SUBST_FLAGS(openssl)
102 if test $HAVE_OPENSSL = yes; then
103 AC_CHECK_LIB([crypto], [RSA_set0_key],
104 AC_DEFINE([HAVE_RSA_SET0_KEY], [1], [openssl-1.1]))
107 ######################################################################### gcrypt
110 LIB_ARG_WITH([gcrypt], [-lgcrypt])
111 AC_CHECK_HEADER(gcrypt.h, [], [HAVE_GCRYPT=no])
112 AC_CHECK_LIB([gcrypt], [gcry_randomize], [], [HAVE_GCRYPT=no])
113 LIB_SUBST_FLAGS(gcrypt)
115 ######################################################################### crypto
116 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
117 Force using crypto library "lib". This package requires either
118 openssl or libgcrypt being installed. Possible values for "lib"
119 are thus "openssl" and "gcrypt". If this option is not given,
120 openssl is tried first. If openssl was not found, gcrypt is
123 CRYPTOLIB="$enable_cryptolib"
124 case "$enable_cryptolib" in
126 test $HAVE_OPENSSL = no && AC_MSG_ERROR(openssl not found)
127 crypto_ldflags="$openssl_ldflags"
130 test $HAVE_GCRYPT = no && AC_MSG_ERROR(gcrypt not found)
131 crypto_ldflags="$gcrypt_ldflags"
135 if test $HAVE_GCRYPT = yes; then
137 crypto_ldflags="$gcrypt_ldflags"
139 if test $HAVE_OPENSSL = yes; then
141 crypto_ldflags="$openssl_ldflags"
145 AC_MSG_ERROR([invalid value "$enable_cryptolib" for --enable-cryptolib])
148 AC_SUBST(crypto_ldflags)
149 ########################################################################## iconv
152 AC_SEARCH_LIBS([libiconv_open], [iconv],
153 [iconv_ldflags="$LIBS"],
156 AC_SUBST(iconv_ldflags)
157 AC_MSG_CHECKING([whether iconv needs const char ** cast])
162 size_t iconv(iconv_t cd, const char **inbuf,
163 size_t *inbytesleft, char **outbuf,
164 size_t *outbytesleft);
167 [cast='(const char **)'; msg=yes],
170 AC_DEFINE_UNQUOTED(ICONV_CAST, $cast, [cast for second arg to iconv()])
173 ########################################################################### ucred
174 AC_MSG_CHECKING(for struct ucred)
175 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
176 #include <sys/types.h>
177 #include <sys/socket.h>
179 struct ucred sucred; sucred.pid=0;
180 ]])],[have_ucred=yes],[have_ucred=no])
181 AC_MSG_RESULT($have_ucred)
182 if test ${have_ucred} = yes; then
183 AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
185 ########################################################################### gengetopt
186 echo 'option "z" z "" flag off' | $GENGETOPT --file-name conftest-ggo &&
188 [gengetopt_args_info_description],
189 [ggo_descriptions_declared=yes],
190 [ggo_descriptions_declared=no],
191 [#include "conftest-ggo.h"]
193 AC_SUBST(ggo_descriptions_declared)
194 ########################################################################### curses
196 LIB_ARG_WITH([curses], [])
198 AC_CHECK_HEADER(curses.h, [], [HAVE_CURSES=no])
199 AC_SEARCH_LIBS([initscr], [ncursesw curses], [], [HAVE_CURSES=no])
200 curses_ldflags="$curses_ldflags $LIBS"
201 LIB_SUBST_FLAGS(curses)
203 ########################################################################### ip_mreqn
204 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
205 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
211 ]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
212 AC_MSG_RESULT($have_ip_mreqn)
213 if test ${have_ip_mreqn} = yes; then
214 AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
216 ########################################################################### osx
218 AC_MSG_CHECKING(for CoreAudio (MacOs))
219 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
220 #include <CoreAudio/CoreAudio.h>
223 ]])],[have_core_audio=yes],[have_core_audio=no])
224 AC_MSG_RESULT($have_core_audio)
225 if test ${have_core_audio} = yes; then
226 f1="-framework CoreAudio"
227 f2="-framework AudioToolbox"
228 f3="-framework AudioUnit"
229 f4="-framework CoreServices"
230 core_audio_ldflags="$f1 $f2 $f3 $f4"
231 AC_SUBST(core_audio_ldflags)
232 AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
234 ########################################################################### ogg
236 LIB_ARG_WITH([ogg], [-logg])
238 AC_CHECK_HEADERS([ogg/ogg.h], [], [HAVE_OGG=no])
239 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [HAVE_OGG=no])
240 AC_CHECK_LIB([ogg], [ogg_stream_flush_fill], [
241 AC_DEFINE(HAVE_OGG_STREAM_FLUSH_FILL, 1, [libogg >= 1.3.0])])
244 ######################################################################### vorbis
246 LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
248 AC_CHECK_HEADERS([vorbis/codec.h], [], [HAVE_VORBIS=no])
249 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [HAVE_VORBIS=no])
250 LIB_SUBST_FLAGS(vorbis)
252 ######################################################################### speex
254 LIB_ARG_WITH([speex], [-lspeex])
256 AC_CHECK_HEADERS([speex/speex.h], [], [HAVE_SPEEX=no])
257 AC_CHECK_LIB([speex], [speex_decoder_init], [], [HAVE_SPEEX=no])
258 LIB_SUBST_FLAGS(speex)
260 ######################################################################### opus
262 LIB_ARG_WITH([opus], [-lopus])
264 AC_CHECK_HEADERS([opus/opus.h], [], [HAVE_OPUS=no])
265 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [HAVE_OPUS=no])
266 LIB_SUBST_FLAGS(opus)
268 ########################################################################### flac
270 LIB_ARG_WITH([flac], [-lFLAC -lm])
272 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], HAVE_FLAC=no)
273 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
274 LIB_SUBST_FLAGS(flac)
277 # some helper functions for codecs which use the ogg container format
278 AC_DEFUN([NEED_OGG_OBJECTS], [{
279 test "$HAVE_OGG" = 'yes' -a \( \
280 "$HAVE_VORBIS" = 'yes' \
281 -o "$HAVE_SPEEX" = 'yes' \
282 -o "$HAVE_OPUS" = 'yes' \
283 -o "$HAVE_FLAC" = 'yes' \
286 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
287 test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
289 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
290 test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
292 AC_DEFUN([NEED_OPUS_OBJECTS], [{
293 test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
295 AC_DEFUN([NEED_FLAC_OBJECTS], [{
296 test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
298 ########################################################################### faad
300 LIB_ARG_WITH([faad], [-lfaad])
302 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
303 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
304 LIB_SUBST_FLAGS(faad)
306 ########################################################################### mad
308 LIB_ARG_WITH([mad], [-lmad])
310 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
311 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
314 ###################################################################### libid3tag
316 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
318 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
319 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
320 LIB_SUBST_FLAGS(id3tag)
322 ########################################################################### oss
324 LIB_ARG_WITH([oss], [])
325 AC_CHECK_HEADER(sys/soundcard.h, [HAVE_OSS=yes], [HAVE_OSS=no])
326 AC_CHECK_LIB(ossaudio, _oss_ioctl, [oss_ldflags="$oss_ldflags -lossaudio"], [])
329 ########################################################################### alsa
331 LIB_ARG_WITH([alsa], [-lasound])
333 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
334 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
335 LIB_SUBST_FLAGS(alsa)
337 ######################################################################### pthread
339 LIB_ARG_WITH([pthread], [-lpthread])
341 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
342 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
343 LIB_SUBST_FLAGS(pthread)
345 ########################################################################### libao
347 LIB_ARG_WITH([ao], [-lao])
349 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
350 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
353 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
354 ######################################################################## readline
356 AC_SEARCH_LIBS([tgetent], [tinfo curses terminfo termcap])
357 LIB_ARG_WITH([readline], [-lreadline $LIBS])
359 AC_CHECK_HEADER([readline/readline.h], [], [HAVE_READLINE=no])
360 AC_CHECK_LIB([readline], [rl_free_keymap], [], HAVE_READLINE=no)
363 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
367 #include <readline/readline.h>
370 LIB_SUBST_FLAGS(readline)
372 ############################################################# libsamplerate
374 LIB_ARG_WITH([samplerate], [-lsamplerate])
376 AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
377 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
378 LIB_SUBST_FLAGS(samplerate)
380 ########################################################################## mp4v2
382 LIB_ARG_WITH([mp4v2], [-lmp4v2])
384 AC_CHECK_HEADER([mp4v2/mp4v2.h], [], [HAVE_MP4V2=no])
385 AC_CHECK_LIB([mp4v2], [MP4Read], [], [HAVE_MP4V2=no])
386 LIB_SUBST_FLAGS(mp4v2)
388 ######################################################################### server
389 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
391 executables="$executables server"
392 server_cmdline_objs="server"
393 server_errlist_objs="
433 if test "$CRYPTOLIB" = openssl; then
434 server_errlist_objs="$server_errlist_objs crypt"
436 server_errlist_objs="$server_errlist_objs gcrypt"
438 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
439 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
440 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
441 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
442 NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
443 if test $HAVE_FAAD = yes && test $HAVE_MP4V2 = yes; then
444 server_errlist_objs="$server_errlist_objs aac_afh aac_common"
446 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
447 AC_SUBST(server_objs, add_dot_o($server_objs))
451 ############################################################# client
452 if test -n "$CRYPTOLIB"; then
454 executables="$executables client"
455 client_cmdline_objs="client"
456 client_errlist_objs="
473 if test "$CRYPTOLIB" = openssl; then
474 client_errlist_objs="$client_errlist_objs crypt"
476 client_errlist_objs="$client_errlist_objs gcrypt"
478 if test $HAVE_READLINE = yes; then
479 client_errlist_objs="$client_errlist_objs interactive"
481 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
482 AC_SUBST(client_objs, add_dot_o($client_objs))
486 ############################################################# audiod
487 if test -n "$CRYPTOLIB"; then
489 executables="$executables audiod"
490 audiod_audio_formats="wma"
491 audiod_cmdline_objs="$audiod_cmdline_objs
503 audiod_errlist_objs="$audiod_errlist_objs
542 if test "$CRYPTOLIB" = openssl; then
543 audiod_errlist_objs="$audiod_errlist_objs crypt"
545 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
547 if test "$have_core_audio" = "yes"; then
548 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
549 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
551 NEED_VORBIS_OBJECTS && {
552 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
553 audiod_audio_formats="$audiod_audio_formats ogg"
555 NEED_SPEEX_OBJECTS && {
556 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
557 audiod_audio_formats="$audiod_audio_formats spx"
559 NEED_OPUS_OBJECTS && {
560 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
561 audiod_audio_formats="$audiod_audio_formats opus"
563 NEED_FLAC_OBJECTS && {
564 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
565 audiod_audio_formats="$audiod_audio_formats flac"
567 if test $HAVE_FAAD = yes; then
568 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
569 audiod_audio_formats="$audiod_audio_formats aac"
571 if test $HAVE_MAD = yes; then
572 audiod_audio_formats="$audiod_audio_formats mp3"
573 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
574 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
576 if test $HAVE_OSS = yes; then
577 audiod_errlist_objs="$audiod_errlist_objs oss_write"
578 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
580 if test $HAVE_ALSA = yes; then
581 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
582 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
585 audiod_errlist_objs="$audiod_errlist_objs ao_write"
586 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
588 if test $HAVE_SAMPLERATE = yes; then
589 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
590 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
592 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
593 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
595 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
596 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
597 enum of audio formats supported by audiod)
598 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
599 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
603 ########################################################################### fade
604 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
606 executables="$executables fade"
607 fade_cmdline_objs="fade"
608 fade_errlist_objs="fade exec string fd version ggo"
609 if test $HAVE_OSS = yes; then
610 fade_errlist_objs="$fade_errlist_objs oss_mix"
611 mixers="${mixers}oss "
612 default_mixer="OSS_MIX"
614 if test $HAVE_ALSA = yes; then
615 fade_errlist_objs="$fade_errlist_objs alsa_mix"
616 mixers="${mixers}alsa "
617 default_mixer="ALSA_MIX"
619 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
620 AC_SUBST(fade_objs, add_dot_o($fade_objs))
623 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
626 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
627 enum of supported mixers)
628 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
629 use this mixer if none was specified)
630 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
631 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
634 printf 'extern void '$i'_mix_init(struct mixer *); '
637 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
638 init functions of the supported mixers)
639 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
640 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
643 AC_MSG_WARN([no mixer support])
645 ########################################################################### gui
646 if test $HAVE_CURSES = yes; then
648 executables="$executables gui"
649 gui_cmdline_objs="gui"
664 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
665 AC_SUBST(gui_objs, add_dot_o($gui_objs))
668 AC_MSG_WARN([no curses lib, cannot build para_gui])
670 ######################################################################## filter
680 filter_errlist_objs="
705 filter_cmdline_objs="
712 NEED_VORBIS_OBJECTS && {
713 filters="$filters oggdec"
714 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
716 NEED_SPEEX_OBJECTS && {
717 filters="$filters spxdec"
718 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
720 NEED_OPUS_OBJECTS && {
721 filters="$filters opusdec"
722 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
724 NEED_FLAC_OBJECTS && {
725 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
726 filters="$filters flacdec"
728 if test $HAVE_FAAD = yes; then
729 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
730 filters="$filters aacdec"
732 if test $HAVE_MAD = yes; then
733 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
734 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
735 filters="$filters mp3dec"
737 if test $HAVE_SAMPLERATE = yes; then
738 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
739 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
740 filters="$filters resample"
742 filters="$(echo $filters)"
744 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
746 AC_SUBST(filter_objs, add_dot_o($filter_objs))
748 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
749 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
750 enum of supported filters)
751 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
752 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
753 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
754 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
755 ########################################################################## recv
785 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
786 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
787 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
788 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
789 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
791 if test $HAVE_FAAD = yes -a $HAVE_MP4V2 = yes; then
792 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
794 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
795 AC_SUBST(receivers, "http dccp udp afh")
796 AC_SUBST(recv_objs, add_dot_o($recv_objs))
797 ########################################################################### afh
798 audio_format_handlers="mp3 wma"
799 afh_cmdline_objs="afh"
812 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
813 NEED_VORBIS_OBJECTS && {
814 afh_errlist_objs="$afh_errlist_objs ogg_afh"
815 audio_format_handlers="$audio_format_handlers ogg"
817 NEED_SPEEX_OBJECTS && {
818 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
819 audio_format_handlers="$audio_format_handlers spx"
821 NEED_OPUS_OBJECTS && {
822 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
823 audio_format_handlers="$audio_format_handlers opus"
825 NEED_FLAC_OBJECTS && {
826 afh_errlist_objs="$afh_errlist_objs flac_afh"
827 audio_format_handlers="$audio_format_handlers flac"
829 if test $HAVE_FAAD = yes -a $HAVE_MP4V2 = yes; then
830 afh_errlist_objs="$afh_errlist_objs aac_afh aac_common"
831 audio_format_handlers="$audio_format_handlers aac"
834 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
836 AC_SUBST(afh_objs, add_dot_o($afh_objs))
837 ########################################################################## play
883 if test "$have_core_audio" = "yes"; then
884 play_errlist_objs="$play_errlist_objs osx_write ipc"
885 play_cmdline_objs="$play_cmdline_objs osx_write"
887 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
888 NEED_VORBIS_OBJECTS && {
889 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
891 NEED_SPEEX_OBJECTS && {
892 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
895 play_errlist_objs="$play_errlist_objs
900 NEED_FLAC_OBJECTS && {
901 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
903 if test $HAVE_FAAD = yes; then
904 play_errlist_objs="$play_errlist_objs aacdec_filter"
906 if test $HAVE_MP4V2 = yes; then
907 play_errlist_objs="$play_errlist_objs aac_afh"
909 if test $HAVE_MP4V2 = yes || test $HAVE_FAAD = yes; then
910 play_errlist_objs="$play_errlist_objs aac_common"
912 if test $HAVE_MAD = yes; then
913 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
914 play_errlist_objs="$play_errlist_objs mp3dec_filter"
916 if test $HAVE_OSS = yes; then
917 play_errlist_objs="$play_errlist_objs oss_write"
918 play_cmdline_objs="$play_cmdline_objs oss_write"
920 if test $HAVE_ALSA = yes; then
921 play_errlist_objs="$play_errlist_objs alsa_write"
922 play_cmdline_objs="$play_cmdline_objs alsa_write"
925 play_errlist_objs="$play_errlist_objs ao_write"
926 play_cmdline_objs="$play_cmdline_objs ao_write"
928 if test $HAVE_READLINE = yes; then
929 play_errlist_objs="$play_errlist_objs interactive"
931 if test $HAVE_SAMPLERATE = yes; then
932 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
933 play_cmdline_objs="$play_cmdline_objs resample_filter"
936 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
937 AC_SUBST(play_objs, add_dot_o($play_objs))
938 ######################################################################### write
958 default_writer="FILE_WRITE"
960 if test "$have_core_audio" = "yes"; then
961 write_errlist_objs="$write_errlist_objs osx_write ipc"
962 write_cmdline_objs="$write_cmdline_objs osx_write"
963 writers="$writers osx"
964 default_writer="OSX_WRITE"
967 write_errlist_objs="$write_errlist_objs ao_write"
968 write_cmdline_objs="$write_cmdline_objs ao_write"
969 writers="$writers ao"
970 default_writer="AO_WRITE"
972 if test $HAVE_OSS = yes; then
973 write_errlist_objs="$write_errlist_objs oss_write"
974 write_cmdline_objs="$write_cmdline_objs oss_write"
975 writers="$writers oss"
976 default_writer="OSS_WRITE"
978 if test $HAVE_ALSA = yes; then
979 write_errlist_objs="$write_errlist_objs alsa_write"
980 write_cmdline_objs="$write_cmdline_objs alsa_write"
981 writers="$writers alsa"
982 default_writer="ALSA_WRITE"
985 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
986 AC_SUBST(write_objs, add_dot_o($write_objs))
987 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
988 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
989 enum of supported writers)
990 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
991 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
992 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
993 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
994 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
995 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
996 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
997 ######################################################################## audioc
998 audioc_cmdline_objs="audioc"
999 audioc_errlist_objs="
1007 if test $HAVE_READLINE = yes; then
1008 audioc_errlist_objs="$audioc_errlist_objs
1015 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1016 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1017 ################################################################## status items
1019 status_items="basename status num_played mtime bitrate frequency file_size
1020 status_flags format score techinfo afs_mode
1021 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1022 offset seconds_total stream_start current_time audiod_uptime image_id
1023 lyrics_id duration directory lyrics_name image_name path hash channels
1024 last_played num_chunks chunk_time amplification artist title year album
1028 for i in $status_items; do
1029 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1031 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1032 [enum of all status items])
1035 for i in $status_items; do
1036 result="$result \"$i\", "
1038 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1039 [char * array of all status items])
1041 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1042 [formats supported by para_server and para_afh])
1044 AC_SUBST(executables)
1048 paraslash configuration:
1049 ~~~~~~~~~~~~~~~~~~~~~~~~
1050 crypto lib: ${CRYPTOLIB:-[none]}
1051 unix socket credentials: $have_ucred
1052 readline (interactive CLIs): $HAVE_READLINE
1053 id3 version 2 support: $HAVE_ID3TAG
1057 audio format handlers: $audio_format_handlers
1058 filters: $(echo $filters)
1061 para_server: $build_server
1062 para_gui: $build_gui
1063 para_fade: $build_fade
1064 para_client: $build_client
1065 para_audiod: $build_audiod