build: Convert libao detection to new macros.
[paraslash.git] / configure.ac
1 #                                               -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 AC_PREREQ([2.61])
5
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])
9
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], \
14         $(for i in $@; do \
15                 printf "DEFINE_ERRLIST($(echo $i | tr 'a-z' 'A-Z'));"; \
16         done) \
17 )
18 AC_DEFUN([make_para_errlists], \
19         $(for i in $@; do \
20                 printf "PARA_ERRLIST($(echo $i | tr 'a-z' 'A-Z')), "; \
21         done) \
22 )
23 AC_DEFUN([objlist_to_errlist],[ \
24         make_errlist_defines($@) \
25         [const char **para_errlist[[]]] = {make_para_errlists($@)} \
26 ])
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"
35         fi
36         if test -n "$with_$1_libs"; then
37                 $1_ldflags="-L$with_$1_libs $2"
38         else
39                 $1_ldflags="$2"
40         fi
41         LDFLAGS="$LDFLAGS $$1_ldflags"
42 ])
43
44 AC_DEFUN([STASH_FLAGS], [
45         OLD_CPPFLAGS="$CPPFLAGS"
46         OLD_LDFLAGS="$LDFLAGS"
47         OLD_LIBS="$LIBS"
48 ])
49
50 AC_DEFUN([UNSTASH_FLAGS], [
51         CPPFLAGS="$OLD_CPPFLAGS"
52         LDFLAGS="$OLD_LDFLAGS"
53         LIBS="$OLD_LIBS"
54 ])
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)
59         else
60                 $1_cppflags=
61                 $1_ldflags=
62         fi
63         AC_SUBST(HAVE_[]m4_toupper([$1]))
64         AC_SUBST($1_cppflags)
65         AC_SUBST($1_ldflags)
66 ])
67
68 AC_PATH_PROG(UNAMEPATH, uname, no)
69 if test "$UNAMEPATH" = "no"; then
70         AC_MSG_ERROR(unable to determine system type)
71 fi
72 AC_MSG_CHECKING(os type)
73 OSTYPE="`$UNAMEPATH -s`"
74 AC_MSG_RESULT("$OSTYPE")
75
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)
80 fi
81
82 AC_C_BIGENDIAN()
83
84 AC_PATH_PROG([gengetopt], [gengetopt])
85 test -z "$gengetopt" && AC_MSG_ERROR(
86         [gengetopt is required to build this package])
87
88 AC_PATH_PROG([help2man], [help2man])
89 test -z "$help2man" && AC_MSG_ERROR(
90         [help2man is required to build this package])
91
92 AC_PATH_PROG([install], [install])
93 test -z "$install" && AC_MSG_ERROR(
94         [The install program is required to build this package])
95
96 AC_PROG_CC
97 AC_PROG_CPP
98
99 executables="recv filter audioc write afh play"
100 ################################################################## clock_gettime
101 clock_gettime_lib=
102 AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
103         AC_CHECK_LIB([rt], [clock_gettime], [clock_gettime_lib=rt], [], [])
104 ])
105 if test -n "$clock_gettime_lib"; then
106         AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [
107                 define to 1 if clock_gettime() is supported])
108 fi
109 if test "$clock_gettime_lib" = "rt"; then
110         AC_SUBST(clock_gettime_ldflags, -lrt)
111 fi
112
113 ########################################################################### osl
114 STASH_FLAGS
115 LIB_ARG_WITH([osl], [-losl])
116 HAVE_OSL=yes
117 AC_CHECK_HEADER(osl.h, [], [HAVE_OSL=no])
118 AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no])
119 LIB_SUBST_FLAGS(osl)
120 UNSTASH_FLAGS
121 ######################################################################## openssl
122 STASH_FLAGS
123 HAVE_OPENSSL=yes
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)
128 UNSTASH_FLAGS
129 ######################################################################### gcrypt
130 STASH_FLAGS
131 HAVE_GCRYPT=yes
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)
136 UNSTASH_FLAGS
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
143         tried next.])])
144
145 CRYPTOLIB="$enable_cryptolib"
146 case "$enable_cryptolib" in
147 "openssl")
148         test $HAVE_OPENSSL = no && AC_MSG_ERROR(openssl not found)
149         crypto_ldflags="$openssl_ldflags"
150         ;;
151 "gcrypt")
152         test $HAVE_GCRYPT = no && AC_MSG_ERROR(gcrypt not found)
153         crypto_ldflags="$gcrypt_ldflags"
154         ;;
155 "")
156         crypto_ldflags=
157         if test $HAVE_GCRYPT = yes; then
158                 CRYPTOLIB=gcrypt
159                 crypto_ldflags="$gcrypt_ldflags"
160         fi
161         if test $HAVE_OPENSSL = yes; then
162                 CRYPTOLIB=openssl
163                 crypto_ldflags="$openssl_ldflags"
164         fi
165         ;;
166 *)
167         AC_MSG_ERROR([invalid value "$enable_cryptolib" for --enable-cryptolib])
168         ;;
169 esac
170 AC_SUBST(crypto_ldflags)
171 ########################################################################### libsocket
172 AC_CHECK_LIB([c], [socket],
173         [socket_ldlflags=],
174         [socket_ldflags="-lsocket"]
175 )
176 AC_SUBST(socket_ldflags)
177 ########################################################################### libnsl
178 AC_CHECK_LIB([c], [gethostbyname],
179         [nsl_ldflags=],
180         [nsl_ldflags="-lnsl"]
181 )
182 AC_SUBST(nsl_ldflags)
183 ########################################################################### ucred
184 AC_MSG_CHECKING(for struct ucred)
185 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
186         #define _GNU_SOURCE
187         #include <sys/types.h>
188         #include <sys/socket.h>
189 ]], [[
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)
195 fi
196 ########################################################################### gengetopt
197 echo 'option "z" z "" flag off' | $gengetopt --file-name conftest-ggo &&
198 AC_CHECK_DECL(
199         [gengetopt_args_info_description],
200         [ggo_descriptions_declared=yes],
201         [ggo_descriptions_declared=no],
202         [#include "conftest-ggo.h"]
203 )
204 AC_SUBST(ggo_descriptions_declared)
205 ########################################################################### curses
206 have_curses="yes"
207 OLD_CPPFLAGS="$CPPFLAGS"
208 OLD_LDFLAGS="$LDFLAGS"
209 OLD_LIBS="$LIBS"
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"
215 fi
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"
221 fi
222 AC_CHECK_HEADER(curses.h, [], [
223         have_curses="no"
224 ])
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"],
230                         [have_curses="no"]
231                 )
232         ]
233 )
234 AC_SUBST(curses_cppflags)
235 AC_SUBST(curses_ldflags)
236 CPPFLAGS="$OLD_CPPFLAGS"
237 LDFLAGS="$OLD_LDFLAGS"
238 LIBS="$OLD_LIBS"
239 ########################################################################### ip_mreqn
240 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
241 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
242         #include <netdb.h>
243         #include <net/if.h>
244 ]], [[
245         struct ip_mreqn mn;
246         mn.imr_ifindex = 0;
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)
251 fi
252 ########################################################################### osx
253
254 AC_MSG_CHECKING(for CoreAudio (MacOs))
255 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
256         #include <CoreAudio/CoreAudio.h>
257 ]], [[
258         AudioDeviceID id;
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)
269 fi
270 ########################################################################### ogg
271 STASH_FLAGS
272 LIB_ARG_WITH([ogg], [-logg])
273 HAVE_OGG=yes
274 AC_CHECK_HEADERS([ogg/ogg.h], [], [HAVE_OGG=no])
275 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [HAVE_OGG=no])
276 LIB_SUBST_FLAGS(ogg)
277 UNSTASH_FLAGS
278 ######################################################################### vorbis
279 STASH_FLAGS
280 LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
281 HAVE_VORBIS=yes
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)
285 UNSTASH_FLAGS
286 ######################################################################### speex
287 STASH_FLAGS
288 LIB_ARG_WITH([speex], [-lspeex])
289 HAVE_SPEEX=yes
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)
293 UNSTASH_FLAGS
294 ######################################################################### opus
295 STASH_FLAGS
296 LIB_ARG_WITH([opus], [-lopus])
297 HAVE_OPUS=yes
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)
301 UNSTASH_FLAGS
302 ########################################################################### flac
303 STASH_FLAGS
304 LIB_ARG_WITH([flac], [-lFLAC -lm])
305 HAVE_FLAC=yes
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)
309 UNSTASH_FLAGS
310
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' \
318         \)
319 }])
320 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
321         test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
322 }])
323 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
324         test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
325 }])
326 AC_DEFUN([NEED_OPUS_OBJECTS], [{
327         test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
328 }])
329 AC_DEFUN([NEED_FLAC_OBJECTS], [{
330         test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
331 }])
332 ########################################################################### faad
333 STASH_FLAGS
334 LIB_ARG_WITH([faad], [-lfaad])
335 HAVE_FAAD=yes
336 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
337 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
338 LIB_SUBST_FLAGS(faad)
339 UNSTASH_FLAGS
340 ########################################################################### mad
341 STASH_FLAGS
342 LIB_ARG_WITH([mad], [-lmad])
343 HAVE_MAD=yes
344 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
345 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
346 LIB_SUBST_FLAGS(mad)
347 UNSTASH_FLAGS
348 ###################################################################### libid3tag
349 STASH_FLAGS
350 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
351 HAVE_ID3TAG=yes
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)
355 UNSTASH_FLAGS
356 ########################################################################### oss
357 OLD_CPPFLAGS="$CPPFLAGS"
358 OLD_LDFLAGS="$LDFLAGS"
359 OLD_LIBS="$LIBS"
360
361 have_oss="yes"
362 msg="=> will not build oss writer"
363
364 AC_CHECK_HEADER(sys/soundcard.h, [
365         AC_CHECK_LIB(ossaudio, _oss_ioctl, [
366                         oss_ldflags="-lossaudio"
367                         AC_SUBST(oss_ldflags)
368                 ]
369         )
370         ],
371         [
372                 have_oss="no"
373                 AC_MSG_WARN([no sys/soundcard.h $msg])
374         ]
375 )
376 CPPFLAGS="$OLD_CPPFLAGS"
377 LDFLAGS="$OLD_LDFLAGS"
378 LIBS="$OLD_LIBS"
379
380 ########################################################################### alsa
381 STASH_FLAGS
382 LIB_ARG_WITH([alsa], [-lasound])
383 HAVE_ALSA=yes
384 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
385 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
386 LIB_SUBST_FLAGS(alsa)
387 UNSTASH_FLAGS
388 ######################################################################### pthread
389 STASH_FLAGS
390 LIB_ARG_WITH([pthread], [-lpthread])
391 HAVE_PTHREAD=yes
392 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
393 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
394 LIB_SUBST_FLAGS(pthread)
395 UNSTASH_FLAGS
396 ########################################################################### libao
397 STASH_FLAGS
398 LIB_ARG_WITH([ao], [-lao])
399 HAVE_AO=yes
400 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
401 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
402 LIB_SUBST_FLAGS(ao)
403 UNSTASH_FLAGS
404 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
405 ############################################################# readline
406 OLD_CPPFLAGS="$CPPFLAGS"
407 OLD_LDFLAGS="$LDFLAGS"
408 OLD_LIBS="$LIBS"
409
410 have_readline="yes"
411 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
412         [look for libreadline header files also in dir])])
413 if test -n "$with_readline_headers"; then
414         readline_cppflags="-I$with_readline_headers"
415         CPPFLAGS="$CPPFLAGS $readline_cppflags"
416 fi
417
418 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
419         [look for readline library also in dir])])
420 if test -n "$with_readline_libs"; then
421         readline_libs="-L$with_readline_libs"
422         LDFLAGS="$LDFLAGS $readline_libs"
423 fi
424 msg="no interactive cli support"
425 AC_CHECK_HEADERS([readline/readline.h], [
426         ], [
427         have_readline="no"
428         AC_MSG_WARN([readline/readline.h not found, $msg])
429 ])
430
431 if test "$have_readline" = "yes"; then
432         readline_ldflags="$readline_libs"
433         AC_SEARCH_LIBS([rl_free_keymap], [readline], [
434                 readline_ldflags="$readline_ldflags -lreadline"
435         ], [have_readline="no"])
436         if test "$have_readline" = "no"; then # try with -lcurses
437                 # clear cache
438                 AC_MSG_NOTICE([trying again with -lcurses])
439                 unset ac_cv_search_rl_free_keymap 2> /dev/null
440                 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
441                         have_readline=yes
442                         readline_ldflags="$readline_ldflags -lreadline -lcurses"
443                 ], [], [-lcurses])
444         fi
445         if test "$have_readline" = "no"; then # try with -ltermcap
446                 # clear cache
447                 AC_MSG_NOTICE([trying again with -ltermcap])
448                 unset ac_cv_search_rl_free_keymap 2> /dev/null
449                 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
450                         have_readline=yes
451                         readline_ldflags="$readline_ldflags -lreadline -ltermcap"
452                 ], [], [-ltermcap])
453         fi
454 fi
455
456 if test "$have_readline" = "yes"; then
457         AC_CHECK_DECL(
458                 [rl_free_keymap],
459                 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
460                 [],
461                 [
462                         #include <stdio.h>
463                         #include <readline/readline.h>
464                 ]
465         )
466         AC_SUBST(readline_cppflags)
467         AC_SUBST(readline_ldflags)
468         AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
469 else
470         AC_MSG_WARN([libreadline not found or unusable])
471 fi
472 CPPFLAGS="$OLD_CPPFLAGS"
473 LDFLAGS="$OLD_LDFLAGS"
474 LIBS="$OLD_LIBS"
475 ############################################################# libsamplerate
476 OLD_CPPFLAGS="$CPPFLAGS"
477 OLD_LDFLAGS="$LDFLAGS"
478 OLD_LIBS="$LIBS"
479
480 have_samplerate="yes"
481 AC_ARG_WITH(samplerate_headers, [AS_HELP_STRING(--with-samplerate-headers=dir,
482         [look for samplerate headers also in dir])])
483 if test -n "$with_samplerate_headers"; then
484         samplerate_cppflags="-I$with_samplerate_headers"
485         CPPFLAGS="$CPPFLAGS $samplerate_cppflags"
486 fi
487 AC_ARG_WITH(samplerate_libs, [AS_HELP_STRING(--with-samplerate-libs=dir,
488         [look for samplerate libs also in dir])])
489 if test -n "$with_samplerate_libs"; then
490         samplerate_libs="-L$with_samplerate_libs"
491         LDFLAGS="$LDFLAGS $samplerate_libs"
492 fi
493
494 AC_CHECK_HEADER(samplerate.h, [], have_samplerate=no)
495 AC_CHECK_LIB([samplerate], [src_process], [], have_samplerate=no, [])
496
497 if test "$have_samplerate" = "yes"; then
498         AC_SUBST(samplerate_cppflags)
499         samplerate_ldflags="$samplerate_libs -lsamplerate"
500         AC_SUBST(samplerate_ldflags)
501 else
502         AC_MSG_WARN([no resample support in para_audiod/para_filter])
503 fi
504 CPPFLAGS="$OLD_CPPFLAGS"
505 LDFLAGS="$OLD_LDFLAGS"
506 LIBS="$OLD_LIBS"
507 ######################################################################### server
508 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
509         build_server="yes"
510         executables="$executables server"
511         server_cmdline_objs="server"
512         server_errlist_objs="
513                 server
514                 afh_common
515                 mp3_afh
516                 vss
517                 command
518                 net
519                 string
520                 signal
521                 time
522                 daemon
523                 http_send
524                 close_on_fork
525                 mm
526                 crypt_common
527                 ipc
528                 dccp_send
529                 fd
530                 user_list
531                 chunk_queue
532                 afs
533                 aft
534                 mood
535                 score
536                 attribute
537                 blob
538                 playlist
539                 sched
540                 acl
541                 send_common
542                 udp_send
543                 color
544                 fec
545                 wma_afh
546                 wma_common
547                 sideband
548                 version
549                 ggo
550         "
551         if test "$CRYPTOLIB" = openssl; then
552                 server_errlist_objs="$server_errlist_objs crypt"
553         else
554                 server_errlist_objs="$server_errlist_objs gcrypt"
555         fi
556         NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
557         NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
558         NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
559         NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
560         NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
561         test $HAVE_FAAD = yes && server_errlist_objs="$server_errlist_objs aac_afh aac_common"
562         server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
563         AC_SUBST(server_objs, add_dot_o($server_objs))
564         AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
565                 objlist_to_errlist($server_errlist_objs), errors used by para_server)
566 else
567         build_server="no"
568 fi
569 ############################################################# client
570 if test -n "$CRYPTOLIB"; then
571         build_client="yes"
572         executables="$executables client"
573         client_cmdline_objs="client"
574         client_errlist_objs="
575                 client
576                 net
577                 string
578                 fd
579                 sched
580                 stdin
581                 stdout
582                 time
583                 sideband
584                 client_common
585                 buffer_tree
586                 crypt_common
587                 version
588                 ggo
589         "
590         if test "$CRYPTOLIB" = openssl; then
591                 client_errlist_objs="$client_errlist_objs crypt"
592         else
593                 client_errlist_objs="$client_errlist_objs gcrypt"
594         fi
595         if test "$have_readline" = "yes"; then
596                 client_errlist_objs="$client_errlist_objs interactive"
597         fi
598         client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
599         AC_SUBST(client_objs, add_dot_o($client_objs))
600         AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
601                 objlist_to_errlist($client_errlist_objs), errors used by para_client)
602 else
603         build_client="no"
604 fi
605 ############################################################# audiod
606 if test -n "$CRYPTOLIB"; then
607         build_audiod="yes"
608         executables="$executables audiod"
609         audiod_audio_formats="wma"
610         audiod_cmdline_objs="$audiod_cmdline_objs
611                 audiod
612                 compress_filter
613                 http_recv
614                 dccp_recv
615                 file_write
616                 client
617                 amp_filter
618                 udp_recv
619                 prebuffer_filter
620                 sync_filter
621         "
622         audiod_errlist_objs="$audiod_errlist_objs
623                 audiod
624                 signal
625                 string
626                 daemon
627                 stat
628                 net
629                 crypt_common
630                 sideband
631                 time
632                 grab_client
633                 filter_common
634                 wav_filter
635                 compress_filter
636                 amp_filter
637                 http_recv
638                 dccp_recv
639                 recv_common
640                 fd
641                 sched
642                 write_common
643                 file_write
644                 audiod_command
645                 fecdec_filter
646                 client_common
647                 ggo
648                 udp_recv
649                 color
650                 fec
651                 prebuffer_filter
652                 version
653                 bitstream
654                 imdct
655                 wma_common
656                 wmadec_filter
657                 buffer_tree
658                 sync_filter
659         "
660         if test "$CRYPTOLIB" = openssl; then
661                 audiod_errlist_objs="$audiod_errlist_objs crypt"
662         else
663                 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
664         fi
665         if test "$have_core_audio" = "yes"; then
666                 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
667                 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
668         fi
669         NEED_VORBIS_OBJECTS && {
670                 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
671                 audiod_audio_formats="$audiod_audio_formats ogg"
672         }
673         NEED_SPEEX_OBJECTS && {
674                 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
675                 audiod_audio_formats="$audiod_audio_formats spx"
676         }
677         NEED_OPUS_OBJECTS && {
678                 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
679                 audiod_audio_formats="$audiod_audio_formats opus"
680         }
681         NEED_FLAC_OBJECTS && {
682                 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
683                 audiod_audio_formats="$audiod_audio_formats flac"
684         }
685         if test $HAVE_FAAD = yes; then
686                 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
687                 audiod_audio_formats="$audiod_audio_formats aac"
688         fi
689         if test $HAVE_MAD = yes; then
690                 audiod_audio_formats="$audiod_audio_formats mp3"
691                 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
692                 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
693         fi
694         if test "$have_oss" = "yes"; then
695                 audiod_errlist_objs="$audiod_errlist_objs oss_write"
696                 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
697         fi
698         if test $HAVE_ALSA = yes; then
699                 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
700                 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
701         fi
702         NEED_AO_OBJECTS && {
703                 audiod_errlist_objs="$audiod_errlist_objs ao_write"
704                 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
705         }
706         if test "$have_samplerate" = "yes"; then
707                 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
708                 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
709         fi
710         audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
711         AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
712         AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
713                 errors used by para_audiod)
714
715         enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
716         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
717                 enum of audio formats supported by audiod)
718         names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
719         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
720 else
721         build_audiod="no"
722 fi
723 ########################################################################### fade
724 if test "$have_oss" = "yes" -o $HAVE_ALSA = yes; then
725         build_fade="yes"
726         executables="$executables fade"
727         fade_cmdline_objs="fade"
728         fade_errlist_objs="fade exec string fd version ggo"
729         if test "$have_oss" = "yes"; then
730                 fade_errlist_objs="$fade_errlist_objs oss_mix"
731                 mixers="${mixers}oss "
732                 default_mixer="OSS_MIX"
733         fi
734         if test $HAVE_ALSA = yes; then
735                 fade_errlist_objs="$fade_errlist_objs alsa_mix"
736                 mixers="${mixers}alsa "
737                 default_mixer="ALSA_MIX"
738         fi
739         fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
740         AC_SUBST(fade_objs, add_dot_o($fade_objs))
741         AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
742                 objlist_to_errlist($fade_errlist_objs),
743                 errors used by para_fade)
744         enum="$(
745                 for i in $mixers; do
746                         printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
747                 done
748         )"
749         AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
750                 enum of supported mixers)
751         AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
752                 use this mixer if none was specified)
753         names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
754         AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
755         inits="$(
756                 for i in $mixers; do
757                         printf 'extern void '$i'_mix_init(struct mixer *); '
758                 done
759         )"
760         AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
761                 init functions of the supported mixers)
762         array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
763         AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
764 else
765         build_fade="no"
766         AC_MSG_WARN([no mixer support])
767 fi
768 ########################################################################### gui
769 if test "$have_curses" = "yes"; then
770         build_gui="yes"
771         executables="$executables gui"
772         gui_cmdline_objs="gui"
773         gui_errlist_objs="
774                 exec
775                 signal
776                 string
777                 stat
778                 ringbuffer
779                 fd
780                 gui
781                 gui_theme
782                 time
783                 sched
784                 version
785                 ggo
786         "
787         gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
788         AC_SUBST(gui_objs, add_dot_o($gui_objs))
789         AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
790                 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
791 else
792         build_gui="no"
793         AC_MSG_WARN([no curses lib, cannot build para_gui])
794 fi
795 ######################################################################## filter
796 filters="
797         compress
798         wav
799         amp
800         fecdec
801         wmadec
802         prebuffer
803         sync
804 "
805 filter_errlist_objs="
806         filter_common
807         wav_filter
808         compress_filter
809         filter
810         string
811         stdin
812         stdout
813         sched
814         fd
815         amp_filter
816         ggo
817         fecdec_filter
818         fec
819         version
820         prebuffer_filter
821         time
822         bitstream
823         imdct
824         wma_common
825         wmadec_filter
826         buffer_tree
827         net
828         sync_filter
829 "
830 filter_cmdline_objs="
831         filter
832         compress_filter
833         amp_filter
834         prebuffer_filter
835         sync_filter
836 "
837 NEED_VORBIS_OBJECTS && {
838         filters="$filters oggdec"
839         filter_errlist_objs="$filter_errlist_objs oggdec_filter"
840 }
841 NEED_SPEEX_OBJECTS && {
842         filters="$filters spxdec"
843         filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
844 }
845 NEED_OPUS_OBJECTS && {
846         filters="$filters opusdec"
847         filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
848 }
849 NEED_FLAC_OBJECTS && {
850         filter_errlist_objs="$filter_errlist_objs flacdec_filter"
851         filters="$filters flacdec"
852 }
853 if test $HAVE_FAAD = yes; then
854         filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
855         filters="$filters aacdec"
856 fi
857 if test $HAVE_MAD = yes; then
858         filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
859         filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
860         filters="$filters mp3dec"
861 fi
862 if test "$have_samplerate" = "yes"; then
863         filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
864         filter_cmdline_objs="$filter_cmdline_objs resample_filter"
865         filters="$filters resample"
866 fi
867 filters="$(echo $filters)"
868 AC_SUBST(filters)
869 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
870
871 AC_SUBST(filter_objs, add_dot_o($filter_objs))
872 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
873         objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
874
875 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
876 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
877         enum of supported filters)
878 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
879 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
880 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
881 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
882 ########################################################################## recv
883 recv_cmdline_objs="
884         recv
885         http_recv
886         dccp_recv
887         udp_recv
888         afh_recv
889 "
890
891 recv_errlist_objs="
892         http_recv
893         recv_common
894         recv
895         time
896         string
897         net
898         dccp_recv
899         fd
900         sched
901         stdout
902         ggo
903         udp_recv
904         buffer_tree
905         afh_recv
906         afh_common
907         wma_afh
908         wma_common
909         mp3_afh
910         version
911 "
912 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
913 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
914 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
915 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
916 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
917
918 if test $HAVE_FAAD = yes; then
919         recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
920 fi
921 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
922 AC_SUBST(receivers, "http dccp udp afh")
923 AC_SUBST(recv_objs, add_dot_o($recv_objs))
924 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
925         errors used by para_recv)
926 ########################################################################### afh
927 audio_format_handlers="mp3 wma"
928 afh_cmdline_objs="afh"
929 afh_errlist_objs="
930         afh
931         string
932         fd
933         mp3_afh
934         afh_common
935         time
936         wma_afh
937         wma_common
938         version
939         ggo
940 "
941 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
942 NEED_VORBIS_OBJECTS && {
943         afh_errlist_objs="$afh_errlist_objs ogg_afh"
944         audio_format_handlers="$audio_format_handlers ogg"
945 }
946 NEED_SPEEX_OBJECTS && {
947         afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
948         audio_format_handlers="$audio_format_handlers spx"
949 }
950 NEED_OPUS_OBJECTS && {
951         afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
952         audio_format_handlers="$audio_format_handlers opus"
953 }
954 NEED_FLAC_OBJECTS && {
955         afh_errlist_objs="$afh_errlist_objs flac_afh"
956         audio_format_handlers="$audio_format_handlers flac"
957 }
958 if test $HAVE_FAAD = yes; then
959         afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
960         audio_format_handlers="$audio_format_handlers aac"
961 fi
962
963 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
964
965 AC_SUBST(afh_objs, add_dot_o($afh_objs))
966 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
967         objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
968 ########################################################################## play
969 play_errlist_objs="
970         play
971         fd
972         sched
973         ggo
974         buffer_tree
975         time
976         string
977         net
978         afh_recv
979         afh_common
980         wma_afh
981         wma_common
982         mp3_afh
983         recv_common
984         udp_recv
985         http_recv
986         dccp_recv
987         filter_common
988         fec
989         bitstream
990         imdct
991         wav_filter
992         compress_filter
993         amp_filter
994         prebuffer_filter
995         fecdec_filter
996         wmadec_filter
997         write_common
998         file_write
999         version
1000         sync_filter
1001 "
1002 play_cmdline_objs="
1003         http_recv
1004         dccp_recv
1005         udp_recv
1006         afh_recv
1007         compress_filter
1008         amp_filter
1009         prebuffer_filter
1010         file_write
1011         play
1012         sync_filter
1013 "
1014 if test "$have_core_audio" = "yes"; then
1015         play_errlist_objs="$play_errlist_objs osx_write ipc"
1016         play_cmdline_objs="$play_cmdline_objs osx_write"
1017 fi
1018 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
1019 NEED_VORBIS_OBJECTS && {
1020         play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
1021 }
1022 NEED_SPEEX_OBJECTS && {
1023         play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
1024 }
1025 NEED_OPUS_OBJECTS &&
1026         play_errlist_objs="$play_errlist_objs
1027                 opusdec_filter
1028                 opus_afh
1029                 opus_common
1030         "
1031 NEED_FLAC_OBJECTS && {
1032         play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
1033 }
1034 if test $HAVE_FAAD = yes; then
1035         play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
1036 fi
1037 if test $HAVE_MAD = yes; then
1038         play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
1039         play_errlist_objs="$play_errlist_objs mp3dec_filter"
1040 fi
1041 if test "$have_oss" = "yes"; then
1042         play_errlist_objs="$play_errlist_objs oss_write"
1043         play_cmdline_objs="$play_cmdline_objs oss_write"
1044 fi
1045 if test $HAVE_ALSA = yes; then
1046         play_errlist_objs="$play_errlist_objs alsa_write"
1047         play_cmdline_objs="$play_cmdline_objs alsa_write"
1048 fi
1049 NEED_AO_OBJECTS && {
1050         play_errlist_objs="$play_errlist_objs ao_write"
1051         play_cmdline_objs="$play_cmdline_objs ao_write"
1052 }
1053 if test "$have_readline" = "yes"; then
1054         play_errlist_objs="$play_errlist_objs interactive"
1055 fi
1056 if test "$have_samplerate" = "yes"; then
1057         play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1058         play_cmdline_objs="$play_cmdline_objs resample_filter"
1059 fi
1060
1061 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1062 AC_SUBST(play_objs, add_dot_o($play_objs))
1063 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1064         objlist_to_errlist($play_errlist_objs), errors used by para_play)
1065 ######################################################################### write
1066 write_cmdline_objs="
1067         write
1068         file_write
1069 "
1070 write_errlist_objs="
1071         write
1072         write_common
1073         file_write
1074         time
1075         fd
1076         string
1077         sched
1078         stdin
1079         buffer_tree
1080         ggo
1081         check_wav
1082         version
1083 "
1084 writers="file"
1085 default_writer="FILE_WRITE"
1086
1087 if test "$have_core_audio" = "yes"; then
1088         write_errlist_objs="$write_errlist_objs osx_write ipc"
1089         write_cmdline_objs="$write_cmdline_objs osx_write"
1090         writers="$writers osx"
1091         default_writer="OSX_WRITE"
1092 fi
1093 NEED_AO_OBJECTS && {
1094         write_errlist_objs="$write_errlist_objs ao_write"
1095         write_cmdline_objs="$write_cmdline_objs ao_write"
1096         writers="$writers ao"
1097         default_writer="AO_WRITE"
1098 }
1099 if test "$have_oss" = "yes"; then
1100         write_errlist_objs="$write_errlist_objs oss_write"
1101         write_cmdline_objs="$write_cmdline_objs oss_write"
1102         writers="$writers oss"
1103         default_writer="OSS_WRITE"
1104 fi
1105 if test $HAVE_ALSA = yes; then
1106         write_errlist_objs="$write_errlist_objs alsa_write"
1107         write_cmdline_objs="$write_cmdline_objs alsa_write"
1108         writers="$writers alsa"
1109         default_writer="ALSA_WRITE"
1110 fi
1111 AC_SUBST(writers)
1112 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1113 AC_SUBST(write_objs, add_dot_o($write_objs))
1114 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1115         objlist_to_errlist($write_errlist_objs), errors used by para_write)
1116 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1117 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1118         enum of supported writers)
1119 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1120 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1121 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1122 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1123 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1124 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1125 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1126 ######################################################################## audioc
1127 audioc_cmdline_objs="audioc"
1128 audioc_errlist_objs="
1129         audioc
1130         string
1131         net
1132         fd
1133         version
1134         ggo
1135 "
1136 if test "$have_readline" = "yes"; then
1137         audioc_errlist_objs="$audioc_errlist_objs
1138                 buffer_tree
1139                 interactive
1140                 sched
1141                 time
1142         "
1143 fi
1144 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1145 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1146 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1147         objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1148 ############################################################# error2.h
1149 # these are always built
1150 all_errlist_objs="
1151         $recv_errlist_objs
1152         $filter_errlist_objs
1153         $audioc_errlist_objs
1154         $write_errlist_objs
1155         $afh_errlist_objs
1156         $play_errlist_objs
1157 "
1158
1159 # optional executables
1160 if test "$build_server" = "yes"; then
1161         all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1162 fi
1163 if test "$build_gui" = "yes"; then
1164         all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1165 fi
1166 if test "$build_fade" = "yes"; then
1167         all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1168 fi
1169 if test "$build_client" = "yes"; then
1170         all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1171 fi
1172 if test "$build_audiod" = "yes"; then
1173         all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1174 fi
1175
1176 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1177
1178 object_executable_matrix=
1179 for i in $executables; do
1180         eval objs=\$${i}_errlist_objs
1181         object_executable_matrix="$object_executable_matrix $i: $objs"
1182 done
1183 # use echo to replace newlines by space
1184 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1185
1186 SS=$(for obj in $all_errlist_objs; do
1187         printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1188 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1189         [enum {$SS NUM_SS}],
1190         [list of all objects that use the paraslash error facility]
1191 )
1192 ################################################################## status items
1193
1194 status_items="basename status num_played mtime bitrate frequency file_size
1195 status_flags format score techinfo afs_mode
1196 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1197 offset seconds_total stream_start current_time audiod_uptime image_id
1198 lyrics_id duration directory lyrics_name image_name path hash channels
1199 last_played num_chunks chunk_time amplification artist title year album
1200 comment"
1201
1202 result=
1203 for i in $status_items; do
1204         result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1205 done
1206 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1207         [enum of all status items])
1208
1209 result=
1210 for i in $status_items; do
1211         result="$result \"$i\", "
1212 done
1213 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1214         [char * array of all status items])
1215
1216 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1217         [formats supported by para_server and para_afh])
1218
1219 AC_SUBST(executables)
1220
1221 AC_OUTPUT
1222 AC_MSG_NOTICE([
1223 paraslash configuration:
1224 ~~~~~~~~~~~~~~~~~~~~~~~~
1225 crypto lib: ${CRYPTOLIB:-[none]}
1226 unix socket credentials: $have_ucred
1227 readline (interactive CLIs): $have_readline
1228 audio formats handlers: $audio_format_handlers
1229 id3 version 2 support: $HAVE_ID3TAG
1230 filters: $filters
1231 writers: $writers
1232
1233 para_fade: $build_fade
1234 para_server: $build_server
1235 para_gui: $build_gui
1236 para_fade: $build_fade
1237 para_client: $build_client
1238 para_audiod: $build_audiod
1239 ])