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 ########################################################################### libnsl
178 AC_CHECK_LIB([c], [gethostbyname],
180 [nsl_ldflags="-lnsl"]
182 AC_SUBST(nsl_ldflags)
183 ########################################################################### ucred
184 AC_MSG_CHECKING(for struct ucred)
185 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
187 #include <sys/types.h>
188 #include <sys/socket.h>
190 struct ucred sucred; sucred.pid=0;
191 ]])],[have_ucred=yes],[have_ucred=no])
192 AC_MSG_RESULT($have_ucred)
193 if test ${have_ucred} = yes; then
194 AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
196 ########################################################################### gengetopt
197 echo 'option "z" z "" flag off' | $gengetopt --file-name conftest-ggo &&
199 [gengetopt_args_info_description],
200 [ggo_descriptions_declared=yes],
201 [ggo_descriptions_declared=no],
202 [#include "conftest-ggo.h"]
204 AC_SUBST(ggo_descriptions_declared)
205 ########################################################################### curses
207 OLD_CPPFLAGS="$CPPFLAGS"
208 OLD_LDFLAGS="$LDFLAGS"
210 AC_ARG_WITH(curses_headers, [AS_HELP_STRING(--with-curses-headers=dir,
211 [look for curses.h also in dir])])
212 if test -n "$with_curses_headers"; then
213 curses_cppflags="-I$with_curses_headers"
214 CPPFLAGS="$CPPFLAGS $curses_cppflags"
216 AC_ARG_WITH(curses_libs, [AS_HELP_STRING(--with-curses-libs=dir,
217 [look for libcurses also in dir])])
218 if test -n "$with_curses_libs"; then
219 curses_libs="-L$with_curses_libs"
220 LDFLAGS="$LDFLAGS $curses_libs"
222 AC_CHECK_HEADER(curses.h, [], [
225 curses_ldflags="$curses_libs"
226 AC_CHECK_LIB([ncursesw], [initscr],
227 [curses_ldflags="$curses_libs -lncursesw"], [
228 AC_CHECK_LIB([curses], [initscr],
229 [curses_ldflags="$curses_libs -lcurses"],
234 AC_SUBST(curses_cppflags)
235 AC_SUBST(curses_ldflags)
236 CPPFLAGS="$OLD_CPPFLAGS"
237 LDFLAGS="$OLD_LDFLAGS"
239 ########################################################################### ip_mreqn
240 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
241 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
247 ]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
248 AC_MSG_RESULT($have_ip_mreqn)
249 if test ${have_ip_mreqn} = yes; then
250 AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
252 ########################################################################### osx
254 AC_MSG_CHECKING(for CoreAudio (MacOs))
255 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
256 #include <CoreAudio/CoreAudio.h>
259 ]])],[have_core_audio=yes],[have_core_audio=no])
260 AC_MSG_RESULT($have_core_audio)
261 if test ${have_core_audio} = yes; then
262 f1="-framework CoreAudio"
263 f2="-framework AudioToolbox"
264 f3="-framework AudioUnit"
265 f4="-framework CoreServices"
266 core_audio_ldflags="$f1 $f2 $f3 $f4"
267 AC_SUBST(core_audio_ldflags)
268 AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
270 ########################################################################### ogg
272 LIB_ARG_WITH([ogg], [-logg])
274 AC_CHECK_HEADERS([ogg/ogg.h], [], [HAVE_OGG=no])
275 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [HAVE_OGG=no])
278 ######################################################################### vorbis
280 LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
282 AC_CHECK_HEADERS([vorbis/codec.h], [], [HAVE_VORBIS=no])
283 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [HAVE_VORBIS=no])
284 LIB_SUBST_FLAGS(vorbis)
286 ######################################################################### speex
288 LIB_ARG_WITH([speex], [-lspeex])
290 AC_CHECK_HEADERS([speex/speex.h], [], [HAVE_SPEEX=no])
291 AC_CHECK_LIB([speex], [speex_decoder_init], [], [HAVE_SPEEX=no])
292 LIB_SUBST_FLAGS(speex)
294 ######################################################################### opus
296 LIB_ARG_WITH([opus], [-lopus])
298 AC_CHECK_HEADERS([opus/opus.h], [], [HAVE_OPUS=no])
299 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [HAVE_OPUS=no])
300 LIB_SUBST_FLAGS(opus)
302 ########################################################################### flac
304 LIB_ARG_WITH([flac], [-lFLAC -lm])
306 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], HAVE_FLAC=no)
307 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
308 LIB_SUBST_FLAGS(flac)
311 # some helper functions for codecs which use the ogg container format
312 AC_DEFUN([NEED_OGG_OBJECTS], [{
313 test "$HAVE_OGG" = 'yes' -a \( \
314 "$HAVE_VORBIS" = 'yes' \
315 -o "$HAVE_SPEEX" = 'yes' \
316 -o "$HAVE_OPUS" = 'yes' \
317 -o "$HAVE_FLAC" = 'yes' \
320 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
321 test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
323 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
324 test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
326 AC_DEFUN([NEED_OPUS_OBJECTS], [{
327 test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
329 AC_DEFUN([NEED_FLAC_OBJECTS], [{
330 test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
332 ########################################################################### faad
334 LIB_ARG_WITH([faad], [-lfaad])
336 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
337 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
338 LIB_SUBST_FLAGS(faad)
340 ########################################################################### mad
342 LIB_ARG_WITH([mad], [-lmad])
344 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
345 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
348 ###################################################################### libid3tag
350 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
352 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
353 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
354 LIB_SUBST_FLAGS(id3tag)
356 ########################################################################### oss
358 LIB_ARG_WITH([oss], [])
359 AC_CHECK_HEADER(sys/soundcard.h, [HAVE_OSS=yes], [HAVE_OSS=no])
360 AC_CHECK_LIB(ossaudio, _oss_ioctl, [oss_ldflags="$oss_ldflags -lossaudio"], [])
363 ########################################################################### alsa
365 LIB_ARG_WITH([alsa], [-lasound])
367 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
368 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
369 LIB_SUBST_FLAGS(alsa)
371 ######################################################################### pthread
373 LIB_ARG_WITH([pthread], [-lpthread])
375 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
376 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
377 LIB_SUBST_FLAGS(pthread)
379 ########################################################################### libao
381 LIB_ARG_WITH([ao], [-lao])
383 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
384 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
387 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
388 ############################################################# readline
389 OLD_CPPFLAGS="$CPPFLAGS"
390 OLD_LDFLAGS="$LDFLAGS"
394 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
395 [look for libreadline header files also in dir])])
396 if test -n "$with_readline_headers"; then
397 readline_cppflags="-I$with_readline_headers"
398 CPPFLAGS="$CPPFLAGS $readline_cppflags"
401 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
402 [look for readline library also in dir])])
403 if test -n "$with_readline_libs"; then
404 readline_libs="-L$with_readline_libs"
405 LDFLAGS="$LDFLAGS $readline_libs"
407 msg="no interactive cli support"
408 AC_CHECK_HEADERS([readline/readline.h], [
411 AC_MSG_WARN([readline/readline.h not found, $msg])
414 if test "$have_readline" = "yes"; then
415 readline_ldflags="$readline_libs"
416 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
417 readline_ldflags="$readline_ldflags -lreadline"
418 ], [have_readline="no"])
419 if test "$have_readline" = "no"; then # try with -lcurses
421 AC_MSG_NOTICE([trying again with -lcurses])
422 unset ac_cv_search_rl_free_keymap 2> /dev/null
423 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
425 readline_ldflags="$readline_ldflags -lreadline -lcurses"
428 if test "$have_readline" = "no"; then # try with -ltermcap
430 AC_MSG_NOTICE([trying again with -ltermcap])
431 unset ac_cv_search_rl_free_keymap 2> /dev/null
432 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
434 readline_ldflags="$readline_ldflags -lreadline -ltermcap"
439 if test "$have_readline" = "yes"; then
442 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
446 #include <readline/readline.h>
449 AC_SUBST(readline_cppflags)
450 AC_SUBST(readline_ldflags)
451 AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
453 AC_MSG_WARN([libreadline not found or unusable])
455 CPPFLAGS="$OLD_CPPFLAGS"
456 LDFLAGS="$OLD_LDFLAGS"
458 ############################################################# libsamplerate
460 LIB_ARG_WITH([samplerate], [-lsamplerate])
462 AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
463 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
464 LIB_SUBST_FLAGS(samplerate)
466 ######################################################################### server
467 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
469 executables="$executables server"
470 server_cmdline_objs="server"
471 server_errlist_objs="
510 if test "$CRYPTOLIB" = openssl; then
511 server_errlist_objs="$server_errlist_objs crypt"
513 server_errlist_objs="$server_errlist_objs gcrypt"
515 NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
516 NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
517 NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
518 NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
519 NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
520 test $HAVE_FAAD = yes && server_errlist_objs="$server_errlist_objs aac_afh aac_common"
521 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
522 AC_SUBST(server_objs, add_dot_o($server_objs))
523 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
524 objlist_to_errlist($server_errlist_objs), errors used by para_server)
528 ############################################################# client
529 if test -n "$CRYPTOLIB"; then
531 executables="$executables client"
532 client_cmdline_objs="client"
533 client_errlist_objs="
549 if test "$CRYPTOLIB" = openssl; then
550 client_errlist_objs="$client_errlist_objs crypt"
552 client_errlist_objs="$client_errlist_objs gcrypt"
554 if test "$have_readline" = "yes"; then
555 client_errlist_objs="$client_errlist_objs interactive"
557 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
558 AC_SUBST(client_objs, add_dot_o($client_objs))
559 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
560 objlist_to_errlist($client_errlist_objs), errors used by para_client)
564 ############################################################# audiod
565 if test -n "$CRYPTOLIB"; then
567 executables="$executables audiod"
568 audiod_audio_formats="wma"
569 audiod_cmdline_objs="$audiod_cmdline_objs
581 audiod_errlist_objs="$audiod_errlist_objs
619 if test "$CRYPTOLIB" = openssl; then
620 audiod_errlist_objs="$audiod_errlist_objs crypt"
622 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
624 if test "$have_core_audio" = "yes"; then
625 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
626 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
628 NEED_VORBIS_OBJECTS && {
629 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
630 audiod_audio_formats="$audiod_audio_formats ogg"
632 NEED_SPEEX_OBJECTS && {
633 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
634 audiod_audio_formats="$audiod_audio_formats spx"
636 NEED_OPUS_OBJECTS && {
637 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
638 audiod_audio_formats="$audiod_audio_formats opus"
640 NEED_FLAC_OBJECTS && {
641 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
642 audiod_audio_formats="$audiod_audio_formats flac"
644 if test $HAVE_FAAD = yes; then
645 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
646 audiod_audio_formats="$audiod_audio_formats aac"
648 if test $HAVE_MAD = yes; then
649 audiod_audio_formats="$audiod_audio_formats mp3"
650 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
651 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
653 if test $HAVE_OSS = yes; then
654 audiod_errlist_objs="$audiod_errlist_objs oss_write"
655 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
657 if test $HAVE_ALSA = yes; then
658 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
659 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
662 audiod_errlist_objs="$audiod_errlist_objs ao_write"
663 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
665 if test $HAVE_SAMPLERATE = yes; then
666 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
667 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
669 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
670 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
671 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
672 errors used by para_audiod)
674 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
675 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
676 enum of audio formats supported by audiod)
677 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
678 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
682 ########################################################################### fade
683 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
685 executables="$executables fade"
686 fade_cmdline_objs="fade"
687 fade_errlist_objs="fade exec string fd version ggo"
688 if test $HAVE_OSS = yes; then
689 fade_errlist_objs="$fade_errlist_objs oss_mix"
690 mixers="${mixers}oss "
691 default_mixer="OSS_MIX"
693 if test $HAVE_ALSA = yes; then
694 fade_errlist_objs="$fade_errlist_objs alsa_mix"
695 mixers="${mixers}alsa "
696 default_mixer="ALSA_MIX"
698 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
699 AC_SUBST(fade_objs, add_dot_o($fade_objs))
700 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
701 objlist_to_errlist($fade_errlist_objs),
702 errors used by para_fade)
705 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
708 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
709 enum of supported mixers)
710 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
711 use this mixer if none was specified)
712 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
713 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
716 printf 'extern void '$i'_mix_init(struct mixer *); '
719 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
720 init functions of the supported mixers)
721 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
722 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
725 AC_MSG_WARN([no mixer support])
727 ########################################################################### gui
728 if test "$have_curses" = "yes"; then
730 executables="$executables gui"
731 gui_cmdline_objs="gui"
746 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
747 AC_SUBST(gui_objs, add_dot_o($gui_objs))
748 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
749 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
752 AC_MSG_WARN([no curses lib, cannot build para_gui])
754 ######################################################################## filter
764 filter_errlist_objs="
789 filter_cmdline_objs="
796 NEED_VORBIS_OBJECTS && {
797 filters="$filters oggdec"
798 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
800 NEED_SPEEX_OBJECTS && {
801 filters="$filters spxdec"
802 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
804 NEED_OPUS_OBJECTS && {
805 filters="$filters opusdec"
806 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
808 NEED_FLAC_OBJECTS && {
809 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
810 filters="$filters flacdec"
812 if test $HAVE_FAAD = yes; then
813 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
814 filters="$filters aacdec"
816 if test $HAVE_MAD = yes; then
817 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
818 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
819 filters="$filters mp3dec"
821 if test $HAVE_SAMPLERATE = yes; then
822 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
823 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
824 filters="$filters resample"
826 filters="$(echo $filters)"
828 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
830 AC_SUBST(filter_objs, add_dot_o($filter_objs))
831 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
832 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
834 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
835 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
836 enum of supported filters)
837 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
838 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
839 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
840 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
841 ########################################################################## recv
871 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
872 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
873 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
874 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
875 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
877 if test $HAVE_FAAD = yes; then
878 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
880 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
881 AC_SUBST(receivers, "http dccp udp afh")
882 AC_SUBST(recv_objs, add_dot_o($recv_objs))
883 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
884 errors used by para_recv)
885 ########################################################################### afh
886 audio_format_handlers="mp3 wma"
887 afh_cmdline_objs="afh"
900 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
901 NEED_VORBIS_OBJECTS && {
902 afh_errlist_objs="$afh_errlist_objs ogg_afh"
903 audio_format_handlers="$audio_format_handlers ogg"
905 NEED_SPEEX_OBJECTS && {
906 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
907 audio_format_handlers="$audio_format_handlers spx"
909 NEED_OPUS_OBJECTS && {
910 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
911 audio_format_handlers="$audio_format_handlers opus"
913 NEED_FLAC_OBJECTS && {
914 afh_errlist_objs="$afh_errlist_objs flac_afh"
915 audio_format_handlers="$audio_format_handlers flac"
917 if test $HAVE_FAAD = yes; then
918 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
919 audio_format_handlers="$audio_format_handlers aac"
922 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
924 AC_SUBST(afh_objs, add_dot_o($afh_objs))
925 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
926 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
927 ########################################################################## play
973 if test "$have_core_audio" = "yes"; then
974 play_errlist_objs="$play_errlist_objs osx_write ipc"
975 play_cmdline_objs="$play_cmdline_objs osx_write"
977 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
978 NEED_VORBIS_OBJECTS && {
979 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
981 NEED_SPEEX_OBJECTS && {
982 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
985 play_errlist_objs="$play_errlist_objs
990 NEED_FLAC_OBJECTS && {
991 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
993 if test $HAVE_FAAD = yes; then
994 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
996 if test $HAVE_MAD = yes; then
997 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
998 play_errlist_objs="$play_errlist_objs mp3dec_filter"
1000 if test $HAVE_OSS = yes; then
1001 play_errlist_objs="$play_errlist_objs oss_write"
1002 play_cmdline_objs="$play_cmdline_objs oss_write"
1004 if test $HAVE_ALSA = yes; then
1005 play_errlist_objs="$play_errlist_objs alsa_write"
1006 play_cmdline_objs="$play_cmdline_objs alsa_write"
1008 NEED_AO_OBJECTS && {
1009 play_errlist_objs="$play_errlist_objs ao_write"
1010 play_cmdline_objs="$play_cmdline_objs ao_write"
1012 if test "$have_readline" = "yes"; then
1013 play_errlist_objs="$play_errlist_objs interactive"
1015 if test $HAVE_SAMPLERATE = yes; then
1016 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1017 play_cmdline_objs="$play_cmdline_objs resample_filter"
1020 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1021 AC_SUBST(play_objs, add_dot_o($play_objs))
1022 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1023 objlist_to_errlist($play_errlist_objs), errors used by para_play)
1024 ######################################################################### write
1025 write_cmdline_objs="
1029 write_errlist_objs="
1044 default_writer="FILE_WRITE"
1046 if test "$have_core_audio" = "yes"; then
1047 write_errlist_objs="$write_errlist_objs osx_write ipc"
1048 write_cmdline_objs="$write_cmdline_objs osx_write"
1049 writers="$writers osx"
1050 default_writer="OSX_WRITE"
1052 NEED_AO_OBJECTS && {
1053 write_errlist_objs="$write_errlist_objs ao_write"
1054 write_cmdline_objs="$write_cmdline_objs ao_write"
1055 writers="$writers ao"
1056 default_writer="AO_WRITE"
1058 if test $HAVE_OSS = yes; then
1059 write_errlist_objs="$write_errlist_objs oss_write"
1060 write_cmdline_objs="$write_cmdline_objs oss_write"
1061 writers="$writers oss"
1062 default_writer="OSS_WRITE"
1064 if test $HAVE_ALSA = yes; then
1065 write_errlist_objs="$write_errlist_objs alsa_write"
1066 write_cmdline_objs="$write_cmdline_objs alsa_write"
1067 writers="$writers alsa"
1068 default_writer="ALSA_WRITE"
1071 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1072 AC_SUBST(write_objs, add_dot_o($write_objs))
1073 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1074 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1075 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1076 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1077 enum of supported writers)
1078 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1079 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1080 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1081 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1082 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1083 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1084 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1085 ######################################################################## audioc
1086 audioc_cmdline_objs="audioc"
1087 audioc_errlist_objs="
1095 if test "$have_readline" = "yes"; then
1096 audioc_errlist_objs="$audioc_errlist_objs
1103 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1104 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1105 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1106 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1107 ############################################################# error2.h
1108 # these are always built
1111 $filter_errlist_objs
1112 $audioc_errlist_objs
1118 # optional executables
1119 if test "$build_server" = "yes"; then
1120 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1122 if test "$build_gui" = "yes"; then
1123 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1125 if test "$build_fade" = "yes"; then
1126 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1128 if test "$build_client" = "yes"; then
1129 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1131 if test "$build_audiod" = "yes"; then
1132 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1135 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1137 object_executable_matrix=
1138 for i in $executables; do
1139 eval objs=\$${i}_errlist_objs
1140 object_executable_matrix="$object_executable_matrix $i: $objs"
1142 # use echo to replace newlines by space
1143 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1145 SS=$(for obj in $all_errlist_objs; do
1146 printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1147 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1148 [enum {$SS NUM_SS}],
1149 [list of all objects that use the paraslash error facility]
1151 ################################################################## status items
1153 status_items="basename status num_played mtime bitrate frequency file_size
1154 status_flags format score techinfo afs_mode
1155 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1156 offset seconds_total stream_start current_time audiod_uptime image_id
1157 lyrics_id duration directory lyrics_name image_name path hash channels
1158 last_played num_chunks chunk_time amplification artist title year album
1162 for i in $status_items; do
1163 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1165 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1166 [enum of all status items])
1169 for i in $status_items; do
1170 result="$result \"$i\", "
1172 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1173 [char * array of all status items])
1175 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1176 [formats supported by para_server and para_afh])
1178 AC_SUBST(executables)
1182 paraslash configuration:
1183 ~~~~~~~~~~~~~~~~~~~~~~~~
1184 crypto lib: ${CRYPTOLIB:-[none]}
1185 unix socket credentials: $have_ucred
1186 readline (interactive CLIs): $have_readline
1187 audio formats handlers: $audio_format_handlers
1188 id3 version 2 support: $HAVE_ID3TAG
1192 para_fade: $build_fade
1193 para_server: $build_server
1194 para_gui: $build_gui
1195 para_fade: $build_fade
1196 para_client: $build_client
1197 para_audiod: $build_audiod