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])
277 ######################################################################### vorbis
279 LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
281 AC_CHECK_HEADERS([vorbis/codec.h], [], [HAVE_VORBIS=no])
282 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [HAVE_VORBIS=no])
283 LIB_SUBST_FLAGS(vorbis)
285 ######################################################################### speex
287 LIB_ARG_WITH([speex], [-lspeex])
289 AC_CHECK_HEADERS([speex/speex.h], [], [HAVE_SPEEX=no])
290 AC_CHECK_LIB([speex], [speex_decoder_init], [], [HAVE_SPEEX=no])
291 LIB_SUBST_FLAGS(speex)
293 ######################################################################### opus
295 LIB_ARG_WITH([opus], [-lopus])
297 AC_CHECK_HEADERS([opus/opus.h], [], [HAVE_OPUS=no])
298 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [HAVE_OPUS=no])
299 LIB_SUBST_FLAGS(opus)
301 ########################################################################### flac
303 LIB_ARG_WITH([flac], [-lFLAC -lm])
305 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], HAVE_FLAC=no)
306 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
307 LIB_SUBST_FLAGS(flac)
310 # some helper functions for codecs which use the ogg container format
311 AC_DEFUN([NEED_OGG_OBJECTS], [{
312 test "$HAVE_OGG" = 'yes' -a \( \
313 "$HAVE_VORBIS" = 'yes' \
314 -o "$HAVE_SPEEX" = 'yes' \
315 -o "$HAVE_OPUS" = 'yes' \
316 -o "$HAVE_FLAC" = 'yes' \
319 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
320 test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
322 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
323 test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
325 AC_DEFUN([NEED_OPUS_OBJECTS], [{
326 test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
328 AC_DEFUN([NEED_FLAC_OBJECTS], [{
329 test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
331 ########################################################################### faad
333 LIB_ARG_WITH([faad], [-lfaad])
335 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
336 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
337 LIB_SUBST_FLAGS(faad)
339 ########################################################################### mad
341 LIB_ARG_WITH([mad], [-lmad])
343 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
344 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
347 ###################################################################### libid3tag
349 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
351 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
352 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
353 LIB_SUBST_FLAGS(id3tag)
355 ########################################################################### oss
357 LIB_ARG_WITH([oss], [])
358 AC_CHECK_HEADER(sys/soundcard.h, [HAVE_OSS=yes], [HAVE_OSS=no])
359 AC_CHECK_LIB(ossaudio, _oss_ioctl, [oss_ldflags="$oss_ldflags -lossaudio"], [])
362 ########################################################################### alsa
364 LIB_ARG_WITH([alsa], [-lasound])
366 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
367 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
368 LIB_SUBST_FLAGS(alsa)
370 ######################################################################### pthread
372 LIB_ARG_WITH([pthread], [-lpthread])
374 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
375 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
376 LIB_SUBST_FLAGS(pthread)
378 ########################################################################### libao
380 LIB_ARG_WITH([ao], [-lao])
382 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
383 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
386 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
387 ######################################################################## readline
389 AC_SEARCH_LIBS([tgetent], [tinfo curses terminfo termcap])
390 LIB_ARG_WITH([readline], [-lreadline $LIBS])
392 AC_CHECK_HEADER([readline/readline.h], [], [HAVE_READLINE=no])
393 AC_CHECK_LIB([readline], [rl_free_keymap], [], HAVE_READLINE=no)
396 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
400 #include <readline/readline.h>
403 LIB_SUBST_FLAGS(readline)
405 ############################################################# libsamplerate
407 LIB_ARG_WITH([samplerate], [-lsamplerate])
409 AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
410 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
411 LIB_SUBST_FLAGS(samplerate)
413 ######################################################################### server
414 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
416 executables="$executables server"
417 server_cmdline_objs="server"
418 server_errlist_objs="
457 if test "$CRYPTOLIB" = openssl; then
458 server_errlist_objs="$server_errlist_objs crypt"
460 server_errlist_objs="$server_errlist_objs gcrypt"
462 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
463 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
464 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
465 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
466 NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
467 test $HAVE_FAAD = yes && server_errlist_objs="$server_errlist_objs aac_afh aac_common"
468 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
469 AC_SUBST(server_objs, add_dot_o($server_objs))
470 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
471 objlist_to_errlist($server_errlist_objs), errors used by para_server)
475 ############################################################# client
476 if test -n "$CRYPTOLIB"; then
478 executables="$executables client"
479 client_cmdline_objs="client"
480 client_errlist_objs="
496 if test "$CRYPTOLIB" = openssl; then
497 client_errlist_objs="$client_errlist_objs crypt"
499 client_errlist_objs="$client_errlist_objs gcrypt"
501 if test $HAVE_READLINE = yes; then
502 client_errlist_objs="$client_errlist_objs interactive"
504 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
505 AC_SUBST(client_objs, add_dot_o($client_objs))
506 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
507 objlist_to_errlist($client_errlist_objs), errors used by para_client)
511 ############################################################# audiod
512 if test -n "$CRYPTOLIB"; then
514 executables="$executables audiod"
515 audiod_audio_formats="wma"
516 audiod_cmdline_objs="$audiod_cmdline_objs
528 audiod_errlist_objs="$audiod_errlist_objs
566 if test "$CRYPTOLIB" = openssl; then
567 audiod_errlist_objs="$audiod_errlist_objs crypt"
569 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
571 if test "$have_core_audio" = "yes"; then
572 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
573 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
575 NEED_VORBIS_OBJECTS && {
576 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
577 audiod_audio_formats="$audiod_audio_formats ogg"
579 NEED_SPEEX_OBJECTS && {
580 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
581 audiod_audio_formats="$audiod_audio_formats spx"
583 NEED_OPUS_OBJECTS && {
584 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
585 audiod_audio_formats="$audiod_audio_formats opus"
587 NEED_FLAC_OBJECTS && {
588 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
589 audiod_audio_formats="$audiod_audio_formats flac"
591 if test $HAVE_FAAD = yes; then
592 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
593 audiod_audio_formats="$audiod_audio_formats aac"
595 if test $HAVE_MAD = yes; then
596 audiod_audio_formats="$audiod_audio_formats mp3"
597 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
598 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
600 if test $HAVE_OSS = yes; then
601 audiod_errlist_objs="$audiod_errlist_objs oss_write"
602 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
604 if test $HAVE_ALSA = yes; then
605 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
606 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
609 audiod_errlist_objs="$audiod_errlist_objs ao_write"
610 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
612 if test $HAVE_SAMPLERATE = yes; then
613 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
614 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
616 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
617 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
618 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
619 errors used by para_audiod)
621 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
622 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
623 enum of audio formats supported by audiod)
624 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
625 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
629 ########################################################################### fade
630 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
632 executables="$executables fade"
633 fade_cmdline_objs="fade"
634 fade_errlist_objs="fade exec string fd version ggo"
635 if test $HAVE_OSS = yes; then
636 fade_errlist_objs="$fade_errlist_objs oss_mix"
637 mixers="${mixers}oss "
638 default_mixer="OSS_MIX"
640 if test $HAVE_ALSA = yes; then
641 fade_errlist_objs="$fade_errlist_objs alsa_mix"
642 mixers="${mixers}alsa "
643 default_mixer="ALSA_MIX"
645 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
646 AC_SUBST(fade_objs, add_dot_o($fade_objs))
647 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
648 objlist_to_errlist($fade_errlist_objs),
649 errors used by para_fade)
652 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
655 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
656 enum of supported mixers)
657 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
658 use this mixer if none was specified)
659 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
660 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
663 printf 'extern void '$i'_mix_init(struct mixer *); '
666 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
667 init functions of the supported mixers)
668 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
669 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
672 AC_MSG_WARN([no mixer support])
674 ########################################################################### gui
675 if test $HAVE_CURSES = yes; then
677 executables="$executables gui"
678 gui_cmdline_objs="gui"
693 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
694 AC_SUBST(gui_objs, add_dot_o($gui_objs))
695 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
696 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
699 AC_MSG_WARN([no curses lib, cannot build para_gui])
701 ######################################################################## filter
711 filter_errlist_objs="
736 filter_cmdline_objs="
743 NEED_VORBIS_OBJECTS && {
744 filters="$filters oggdec"
745 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
747 NEED_SPEEX_OBJECTS && {
748 filters="$filters spxdec"
749 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
751 NEED_OPUS_OBJECTS && {
752 filters="$filters opusdec"
753 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
755 NEED_FLAC_OBJECTS && {
756 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
757 filters="$filters flacdec"
759 if test $HAVE_FAAD = yes; then
760 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
761 filters="$filters aacdec"
763 if test $HAVE_MAD = yes; then
764 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
765 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
766 filters="$filters mp3dec"
768 if test $HAVE_SAMPLERATE = yes; then
769 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
770 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
771 filters="$filters resample"
773 filters="$(echo $filters)"
775 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
777 AC_SUBST(filter_objs, add_dot_o($filter_objs))
778 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
779 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
781 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
782 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
783 enum of supported filters)
784 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
785 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
786 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
787 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
788 ########################################################################## recv
818 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
819 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
820 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
821 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
822 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
824 if test $HAVE_FAAD = yes; then
825 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
827 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
828 AC_SUBST(receivers, "http dccp udp afh")
829 AC_SUBST(recv_objs, add_dot_o($recv_objs))
830 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
831 errors used by para_recv)
832 ########################################################################### afh
833 audio_format_handlers="mp3 wma"
834 afh_cmdline_objs="afh"
847 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
848 NEED_VORBIS_OBJECTS && {
849 afh_errlist_objs="$afh_errlist_objs ogg_afh"
850 audio_format_handlers="$audio_format_handlers ogg"
852 NEED_SPEEX_OBJECTS && {
853 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
854 audio_format_handlers="$audio_format_handlers spx"
856 NEED_OPUS_OBJECTS && {
857 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
858 audio_format_handlers="$audio_format_handlers opus"
860 NEED_FLAC_OBJECTS && {
861 afh_errlist_objs="$afh_errlist_objs flac_afh"
862 audio_format_handlers="$audio_format_handlers flac"
864 if test $HAVE_FAAD = yes; then
865 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
866 audio_format_handlers="$audio_format_handlers aac"
869 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
871 AC_SUBST(afh_objs, add_dot_o($afh_objs))
872 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
873 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
874 ########################################################################## play
920 if test "$have_core_audio" = "yes"; then
921 play_errlist_objs="$play_errlist_objs osx_write ipc"
922 play_cmdline_objs="$play_cmdline_objs osx_write"
924 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
925 NEED_VORBIS_OBJECTS && {
926 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
928 NEED_SPEEX_OBJECTS && {
929 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
932 play_errlist_objs="$play_errlist_objs
937 NEED_FLAC_OBJECTS && {
938 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
940 if test $HAVE_FAAD = yes; then
941 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
943 if test $HAVE_MAD = yes; then
944 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
945 play_errlist_objs="$play_errlist_objs mp3dec_filter"
947 if test $HAVE_OSS = yes; then
948 play_errlist_objs="$play_errlist_objs oss_write"
949 play_cmdline_objs="$play_cmdline_objs oss_write"
951 if test $HAVE_ALSA = yes; then
952 play_errlist_objs="$play_errlist_objs alsa_write"
953 play_cmdline_objs="$play_cmdline_objs alsa_write"
956 play_errlist_objs="$play_errlist_objs ao_write"
957 play_cmdline_objs="$play_cmdline_objs ao_write"
959 if test $HAVE_READLINE = yes; then
960 play_errlist_objs="$play_errlist_objs interactive"
962 if test $HAVE_SAMPLERATE = yes; then
963 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
964 play_cmdline_objs="$play_cmdline_objs resample_filter"
967 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
968 AC_SUBST(play_objs, add_dot_o($play_objs))
969 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
970 objlist_to_errlist($play_errlist_objs), errors used by para_play)
971 ######################################################################### write
991 default_writer="FILE_WRITE"
993 if test "$have_core_audio" = "yes"; then
994 write_errlist_objs="$write_errlist_objs osx_write ipc"
995 write_cmdline_objs="$write_cmdline_objs osx_write"
996 writers="$writers osx"
997 default_writer="OSX_WRITE"
1000 write_errlist_objs="$write_errlist_objs ao_write"
1001 write_cmdline_objs="$write_cmdline_objs ao_write"
1002 writers="$writers ao"
1003 default_writer="AO_WRITE"
1005 if test $HAVE_OSS = yes; then
1006 write_errlist_objs="$write_errlist_objs oss_write"
1007 write_cmdline_objs="$write_cmdline_objs oss_write"
1008 writers="$writers oss"
1009 default_writer="OSS_WRITE"
1011 if test $HAVE_ALSA = yes; then
1012 write_errlist_objs="$write_errlist_objs alsa_write"
1013 write_cmdline_objs="$write_cmdline_objs alsa_write"
1014 writers="$writers alsa"
1015 default_writer="ALSA_WRITE"
1018 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1019 AC_SUBST(write_objs, add_dot_o($write_objs))
1020 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1021 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1022 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1023 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1024 enum of supported writers)
1025 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1026 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1027 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1028 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1029 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1030 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1031 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1032 ######################################################################## audioc
1033 audioc_cmdline_objs="audioc"
1034 audioc_errlist_objs="
1042 if test $HAVE_READLINE = yes; then
1043 audioc_errlist_objs="$audioc_errlist_objs
1050 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1051 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1052 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1053 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1054 ############################################################# error2.h
1055 # these are always built
1058 $filter_errlist_objs
1059 $audioc_errlist_objs
1065 # optional executables
1066 if test "$build_server" = "yes"; then
1067 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1069 if test "$build_gui" = "yes"; then
1070 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1072 if test "$build_fade" = "yes"; then
1073 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1075 if test "$build_client" = "yes"; then
1076 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1078 if test "$build_audiod" = "yes"; then
1079 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1082 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1084 object_executable_matrix=
1085 for i in $executables; do
1086 eval objs=\$${i}_errlist_objs
1087 object_executable_matrix="$object_executable_matrix $i: $objs"
1089 # use echo to replace newlines by space
1090 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1092 SS=$(for obj in $all_errlist_objs; do
1093 printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1094 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1095 [enum {$SS NUM_SS}],
1096 [list of all objects that use the paraslash error facility]
1098 ################################################################## status items
1100 status_items="basename status num_played mtime bitrate frequency file_size
1101 status_flags format score techinfo afs_mode
1102 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1103 offset seconds_total stream_start current_time audiod_uptime image_id
1104 lyrics_id duration directory lyrics_name image_name path hash channels
1105 last_played num_chunks chunk_time amplification artist title year album
1109 for i in $status_items; do
1110 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1112 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1113 [enum of all status items])
1116 for i in $status_items; do
1117 result="$result \"$i\", "
1119 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1120 [char * array of all status items])
1122 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1123 [formats supported by para_server and para_afh])
1125 AC_SUBST(executables)
1129 paraslash configuration:
1130 ~~~~~~~~~~~~~~~~~~~~~~~~
1131 crypto lib: ${CRYPTOLIB:-[none]}
1132 unix socket credentials: $have_ucred
1133 readline (interactive CLIs): $HAVE_READLINE
1134 audio formats handlers: $audio_format_handlers
1135 id3 version 2 support: $HAVE_ID3TAG
1139 para_fade: $build_fade
1140 para_server: $build_server
1141 para_gui: $build_gui
1142 para_fade: $build_fade
1143 para_client: $build_client
1144 para_audiod: $build_audiod