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 -lmp4ff])
302 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
303 AC_CHECK_HEADER(mp4ff.h, [], HAVE_FAAD=no)
304 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
305 AC_CHECK_LIB([mp4ff], [mp4ff_meta_get_artist], [], HAVE_FAAD=no)
306 LIB_SUBST_FLAGS(faad)
308 ########################################################################### mad
310 LIB_ARG_WITH([mad], [-lmad])
312 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
313 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
316 ###################################################################### libid3tag
318 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
320 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
321 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
322 LIB_SUBST_FLAGS(id3tag)
324 ########################################################################### oss
326 LIB_ARG_WITH([oss], [])
327 AC_CHECK_HEADER(sys/soundcard.h, [HAVE_OSS=yes], [HAVE_OSS=no])
328 AC_CHECK_LIB(ossaudio, _oss_ioctl, [oss_ldflags="$oss_ldflags -lossaudio"], [])
331 ########################################################################### alsa
333 LIB_ARG_WITH([alsa], [-lasound])
335 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
336 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
337 LIB_SUBST_FLAGS(alsa)
339 ######################################################################### pthread
341 LIB_ARG_WITH([pthread], [-lpthread])
343 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
344 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
345 LIB_SUBST_FLAGS(pthread)
347 ########################################################################### libao
349 LIB_ARG_WITH([ao], [-lao])
351 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
352 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
355 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
356 ######################################################################## readline
358 AC_SEARCH_LIBS([tgetent], [tinfo curses terminfo termcap])
359 LIB_ARG_WITH([readline], [-lreadline $LIBS])
361 AC_CHECK_HEADER([readline/readline.h], [], [HAVE_READLINE=no])
362 AC_CHECK_LIB([readline], [rl_free_keymap], [], HAVE_READLINE=no)
365 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
369 #include <readline/readline.h>
372 LIB_SUBST_FLAGS(readline)
374 ############################################################# libsamplerate
376 LIB_ARG_WITH([samplerate], [-lsamplerate])
378 AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
379 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
380 LIB_SUBST_FLAGS(samplerate)
382 ######################################################################### server
383 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
385 executables="$executables server"
386 server_cmdline_objs="server"
387 server_errlist_objs="
427 if test "$CRYPTOLIB" = openssl; then
428 server_errlist_objs="$server_errlist_objs crypt"
430 server_errlist_objs="$server_errlist_objs gcrypt"
432 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
433 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
434 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
435 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
436 NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
437 if test $HAVE_FAAD = yes; then
438 server_errlist_objs="$server_errlist_objs aac_afh"
440 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
441 AC_SUBST(server_objs, add_dot_o($server_objs))
445 ############################################################# client
446 if test -n "$CRYPTOLIB"; then
448 executables="$executables client"
449 client_cmdline_objs="client"
450 client_errlist_objs="
467 if test "$CRYPTOLIB" = openssl; then
468 client_errlist_objs="$client_errlist_objs crypt"
470 client_errlist_objs="$client_errlist_objs gcrypt"
472 if test $HAVE_READLINE = yes; then
473 client_errlist_objs="$client_errlist_objs interactive"
475 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
476 AC_SUBST(client_objs, add_dot_o($client_objs))
480 ############################################################# audiod
481 if test -n "$CRYPTOLIB"; then
483 executables="$executables audiod"
484 audiod_audio_formats="wma"
485 audiod_cmdline_objs="$audiod_cmdline_objs
497 audiod_errlist_objs="$audiod_errlist_objs
536 if test "$CRYPTOLIB" = openssl; then
537 audiod_errlist_objs="$audiod_errlist_objs crypt"
539 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
541 if test "$have_core_audio" = "yes"; then
542 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
543 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
545 NEED_VORBIS_OBJECTS && {
546 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
547 audiod_audio_formats="$audiod_audio_formats ogg"
549 NEED_SPEEX_OBJECTS && {
550 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
551 audiod_audio_formats="$audiod_audio_formats spx"
553 NEED_OPUS_OBJECTS && {
554 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
555 audiod_audio_formats="$audiod_audio_formats opus"
557 NEED_FLAC_OBJECTS && {
558 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
559 audiod_audio_formats="$audiod_audio_formats flac"
561 if test $HAVE_FAAD = yes; then
562 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter"
563 audiod_audio_formats="$audiod_audio_formats aac"
565 if test $HAVE_MAD = yes; then
566 audiod_audio_formats="$audiod_audio_formats mp3"
567 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
568 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
570 if test $HAVE_OSS = yes; then
571 audiod_errlist_objs="$audiod_errlist_objs oss_write"
572 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
574 if test $HAVE_ALSA = yes; then
575 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
576 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
579 audiod_errlist_objs="$audiod_errlist_objs ao_write"
580 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
582 if test $HAVE_SAMPLERATE = yes; then
583 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
584 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
586 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
587 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
589 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
590 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
591 enum of audio formats supported by audiod)
592 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
593 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
597 ########################################################################### fade
598 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
600 executables="$executables fade"
601 fade_cmdline_objs="fade"
602 fade_errlist_objs="fade exec string fd version ggo"
603 if test $HAVE_OSS = yes; then
604 fade_errlist_objs="$fade_errlist_objs oss_mix"
605 mixers="${mixers}oss "
606 default_mixer="OSS_MIX"
608 if test $HAVE_ALSA = yes; then
609 fade_errlist_objs="$fade_errlist_objs alsa_mix"
610 mixers="${mixers}alsa "
611 default_mixer="ALSA_MIX"
613 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
614 AC_SUBST(fade_objs, add_dot_o($fade_objs))
617 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
620 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
621 enum of supported mixers)
622 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
623 use this mixer if none was specified)
624 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
625 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
628 printf 'extern void '$i'_mix_init(struct mixer *); '
631 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
632 init functions of the supported mixers)
633 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
634 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
637 AC_MSG_WARN([no mixer support])
639 ########################################################################### gui
640 if test $HAVE_CURSES = yes; then
642 executables="$executables gui"
643 gui_cmdline_objs="gui"
658 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
659 AC_SUBST(gui_objs, add_dot_o($gui_objs))
662 AC_MSG_WARN([no curses lib, cannot build para_gui])
664 ######################################################################## filter
674 filter_errlist_objs="
699 filter_cmdline_objs="
706 NEED_VORBIS_OBJECTS && {
707 filters="$filters oggdec"
708 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
710 NEED_SPEEX_OBJECTS && {
711 filters="$filters spxdec"
712 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
714 NEED_OPUS_OBJECTS && {
715 filters="$filters opusdec"
716 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
718 NEED_FLAC_OBJECTS && {
719 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
720 filters="$filters flacdec"
722 if test $HAVE_FAAD = yes; then
723 filter_errlist_objs="$filter_errlist_objs aacdec_filter"
724 filters="$filters aacdec"
726 if test $HAVE_MAD = yes; then
727 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
728 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
729 filters="$filters mp3dec"
731 if test $HAVE_SAMPLERATE = yes; then
732 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
733 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
734 filters="$filters resample"
736 filters="$(echo $filters)"
738 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
740 AC_SUBST(filter_objs, add_dot_o($filter_objs))
742 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
743 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
744 enum of supported filters)
745 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
746 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
747 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
748 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
749 ########################################################################## recv
779 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
780 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
781 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
782 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
783 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
785 if test $HAVE_FAAD = yes; then
786 recv_errlist_objs="$recv_errlist_objs aac_afh"
788 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
789 AC_SUBST(receivers, "http dccp udp afh")
790 AC_SUBST(recv_objs, add_dot_o($recv_objs))
791 ########################################################################### afh
792 audio_format_handlers="mp3 wma"
793 afh_cmdline_objs="afh"
806 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
807 NEED_VORBIS_OBJECTS && {
808 afh_errlist_objs="$afh_errlist_objs ogg_afh"
809 audio_format_handlers="$audio_format_handlers ogg"
811 NEED_SPEEX_OBJECTS && {
812 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
813 audio_format_handlers="$audio_format_handlers spx"
815 NEED_OPUS_OBJECTS && {
816 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
817 audio_format_handlers="$audio_format_handlers opus"
819 NEED_FLAC_OBJECTS && {
820 afh_errlist_objs="$afh_errlist_objs flac_afh"
821 audio_format_handlers="$audio_format_handlers flac"
823 if test $HAVE_FAAD = yes; then
824 afh_errlist_objs="$afh_errlist_objs aac_afh"
825 audio_format_handlers="$audio_format_handlers aac"
828 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
830 AC_SUBST(afh_objs, add_dot_o($afh_objs))
831 ########################################################################## play
877 if test "$have_core_audio" = "yes"; then
878 play_errlist_objs="$play_errlist_objs osx_write ipc"
879 play_cmdline_objs="$play_cmdline_objs osx_write"
881 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
882 NEED_VORBIS_OBJECTS && {
883 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
885 NEED_SPEEX_OBJECTS && {
886 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
889 play_errlist_objs="$play_errlist_objs
894 NEED_FLAC_OBJECTS && {
895 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
897 if test $HAVE_FAAD = yes; then
898 play_errlist_objs="$play_errlist_objs aac_afh aacdec_filter"
900 if test $HAVE_MAD = yes; then
901 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
902 play_errlist_objs="$play_errlist_objs mp3dec_filter"
904 if test $HAVE_OSS = yes; then
905 play_errlist_objs="$play_errlist_objs oss_write"
906 play_cmdline_objs="$play_cmdline_objs oss_write"
908 if test $HAVE_ALSA = yes; then
909 play_errlist_objs="$play_errlist_objs alsa_write"
910 play_cmdline_objs="$play_cmdline_objs alsa_write"
913 play_errlist_objs="$play_errlist_objs ao_write"
914 play_cmdline_objs="$play_cmdline_objs ao_write"
916 if test $HAVE_READLINE = yes; then
917 play_errlist_objs="$play_errlist_objs interactive"
919 if test $HAVE_SAMPLERATE = yes; then
920 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
921 play_cmdline_objs="$play_cmdline_objs resample_filter"
924 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
925 AC_SUBST(play_objs, add_dot_o($play_objs))
926 ######################################################################### write
946 default_writer="FILE_WRITE"
948 if test "$have_core_audio" = "yes"; then
949 write_errlist_objs="$write_errlist_objs osx_write ipc"
950 write_cmdline_objs="$write_cmdline_objs osx_write"
951 writers="$writers osx"
952 default_writer="OSX_WRITE"
955 write_errlist_objs="$write_errlist_objs ao_write"
956 write_cmdline_objs="$write_cmdline_objs ao_write"
957 writers="$writers ao"
958 default_writer="AO_WRITE"
960 if test $HAVE_OSS = yes; then
961 write_errlist_objs="$write_errlist_objs oss_write"
962 write_cmdline_objs="$write_cmdline_objs oss_write"
963 writers="$writers oss"
964 default_writer="OSS_WRITE"
966 if test $HAVE_ALSA = yes; then
967 write_errlist_objs="$write_errlist_objs alsa_write"
968 write_cmdline_objs="$write_cmdline_objs alsa_write"
969 writers="$writers alsa"
970 default_writer="ALSA_WRITE"
973 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
974 AC_SUBST(write_objs, add_dot_o($write_objs))
975 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
976 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
977 enum of supported writers)
978 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
979 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
980 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
981 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
982 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
983 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
984 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
985 ######################################################################## audioc
986 audioc_cmdline_objs="audioc"
987 audioc_errlist_objs="
995 if test $HAVE_READLINE = yes; then
996 audioc_errlist_objs="$audioc_errlist_objs
1003 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1004 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1005 ################################################################## status items
1007 status_items="basename status num_played mtime bitrate frequency file_size
1008 status_flags format score techinfo afs_mode
1009 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1010 offset seconds_total stream_start current_time audiod_uptime image_id
1011 lyrics_id duration directory lyrics_name image_name path hash channels
1012 last_played num_chunks chunk_time amplification artist title year album
1013 comment max_chunk_size"
1016 for i in $status_items; do
1017 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1019 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1020 [enum of all status items])
1023 for i in $status_items; do
1024 result="$result \"$i\", "
1026 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1027 [char * array of all status items])
1029 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1030 [formats supported by para_server and para_afh])
1032 AC_SUBST(executables)
1036 paraslash configuration:
1037 ~~~~~~~~~~~~~~~~~~~~~~~~
1038 crypto lib: ${CRYPTOLIB:-[none]}
1039 unix socket credentials: $have_ucred
1040 readline (interactive CLIs): $HAVE_READLINE
1041 id3 version 2 support: $HAVE_ID3TAG
1044 audio format handlers: $audio_format_handlers
1045 filters: $(echo $filters)
1048 para_server: $build_server
1049 para_gui: $build_gui
1050 para_fade: $build_fade
1051 para_client: $build_client
1052 para_audiod: $build_audiod