]> git.tuebingen.mpg.de Git - paraslash.git/blob - configure.ac
80fff1e016f690fe55814ee2d5c21e3b60383269
[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 ########################################################################### libao
389 OLD_CPPFLAGS="$CPPFLAGS"
390 OLD_LDFLAGS="$LDFLAGS"
391 OLD_LIBS="$LIBS"
392
393 have_ao="yes"
394 AC_ARG_WITH(ao_headers, [AS_HELP_STRING(--with-ao-headers=dir,
395         [look for ao/ao.h also in dir])])
396 if test -n "$with_ao_headers"; then
397         ao_cppflags="-I$with_ao_headers"
398         CPPFLAGS="$CPPFLAGS $ao_cppflags"
399 fi
400 AC_ARG_WITH(ao_libs, [AS_HELP_STRING(--with-ao-libs=dir,
401         [look for libao also in dir])])
402 if test -n "$with_ao_libs"; then
403         ao_libs="-L$with_ao_libs"
404         LDFLAGS="$LDFLAGS $ao_libs"
405 fi
406 msg="no libao support for para_audiod/para_write"
407 AC_CHECK_HEADERS([ao/ao.h], [
408         ], [
409         have_ao="no"
410         AC_MSG_WARN([ao.h not found, $msg])
411 ])
412 if test "$have_ao" = "yes"; then
413         AC_CHECK_LIB([ao], [ao_initialize], [], [
414                 have_ao="no"
415                 AC_MSG_WARN([ao lib not found or not working, $msg])
416         ])
417 fi
418 if test "$have_ao" = "yes"; then
419         AC_CHECK_HEADERS([pthread.h], [
420                 ], [
421                 have_ao="no"
422                 AC_MSG_WARN([pthread.h not found, $msg])
423         ])
424 fi
425 if test "$have_ao" = "yes"; then
426         AC_CHECK_LIB([pthread], [pthread_create], [], [
427                 have_ao="no"
428                 AC_MSG_WARN([pthread lib not found or not working, $msg])
429         ])
430 fi
431 if test "$have_ao" = "yes"; then
432         AC_SUBST(ao_cppflags)
433         ao_ldflags="$ao_libs -lao -lpthread"
434         AC_SUBST(ao_ldflags)
435 fi
436
437 CPPFLAGS="$OLD_CPPFLAGS"
438 LDFLAGS="$OLD_LDFLAGS"
439 LIBS="$OLD_LIBS"
440 ############################################################# readline
441 OLD_CPPFLAGS="$CPPFLAGS"
442 OLD_LDFLAGS="$LDFLAGS"
443 OLD_LIBS="$LIBS"
444
445 have_readline="yes"
446 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
447         [look for libreadline header files also in dir])])
448 if test -n "$with_readline_headers"; then
449         readline_cppflags="-I$with_readline_headers"
450         CPPFLAGS="$CPPFLAGS $readline_cppflags"
451 fi
452
453 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
454         [look for readline library also in dir])])
455 if test -n "$with_readline_libs"; then
456         readline_libs="-L$with_readline_libs"
457         LDFLAGS="$LDFLAGS $readline_libs"
458 fi
459 msg="no interactive cli support"
460 AC_CHECK_HEADERS([readline/readline.h], [
461         ], [
462         have_readline="no"
463         AC_MSG_WARN([readline/readline.h not found, $msg])
464 ])
465
466 if test "$have_readline" = "yes"; then
467         readline_ldflags="$readline_libs"
468         AC_SEARCH_LIBS([rl_free_keymap], [readline], [
469                 readline_ldflags="$readline_ldflags -lreadline"
470         ], [have_readline="no"])
471         if test "$have_readline" = "no"; then # try with -lcurses
472                 # clear cache
473                 AC_MSG_NOTICE([trying again with -lcurses])
474                 unset ac_cv_search_rl_free_keymap 2> /dev/null
475                 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
476                         have_readline=yes
477                         readline_ldflags="$readline_ldflags -lreadline -lcurses"
478                 ], [], [-lcurses])
479         fi
480         if test "$have_readline" = "no"; then # try with -ltermcap
481                 # clear cache
482                 AC_MSG_NOTICE([trying again with -ltermcap])
483                 unset ac_cv_search_rl_free_keymap 2> /dev/null
484                 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
485                         have_readline=yes
486                         readline_ldflags="$readline_ldflags -lreadline -ltermcap"
487                 ], [], [-ltermcap])
488         fi
489 fi
490
491 if test "$have_readline" = "yes"; then
492         AC_CHECK_DECL(
493                 [rl_free_keymap],
494                 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
495                 [],
496                 [
497                         #include <stdio.h>
498                         #include <readline/readline.h>
499                 ]
500         )
501         AC_SUBST(readline_cppflags)
502         AC_SUBST(readline_ldflags)
503         AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
504 else
505         AC_MSG_WARN([libreadline not found or unusable])
506 fi
507 CPPFLAGS="$OLD_CPPFLAGS"
508 LDFLAGS="$OLD_LDFLAGS"
509 LIBS="$OLD_LIBS"
510 ############################################################# libsamplerate
511 OLD_CPPFLAGS="$CPPFLAGS"
512 OLD_LDFLAGS="$LDFLAGS"
513 OLD_LIBS="$LIBS"
514
515 have_samplerate="yes"
516 AC_ARG_WITH(samplerate_headers, [AS_HELP_STRING(--with-samplerate-headers=dir,
517         [look for samplerate headers also in dir])])
518 if test -n "$with_samplerate_headers"; then
519         samplerate_cppflags="-I$with_samplerate_headers"
520         CPPFLAGS="$CPPFLAGS $samplerate_cppflags"
521 fi
522 AC_ARG_WITH(samplerate_libs, [AS_HELP_STRING(--with-samplerate-libs=dir,
523         [look for samplerate libs also in dir])])
524 if test -n "$with_samplerate_libs"; then
525         samplerate_libs="-L$with_samplerate_libs"
526         LDFLAGS="$LDFLAGS $samplerate_libs"
527 fi
528
529 AC_CHECK_HEADER(samplerate.h, [], have_samplerate=no)
530 AC_CHECK_LIB([samplerate], [src_process], [], have_samplerate=no, [])
531
532 if test "$have_samplerate" = "yes"; then
533         AC_SUBST(samplerate_cppflags)
534         samplerate_ldflags="$samplerate_libs -lsamplerate"
535         AC_SUBST(samplerate_ldflags)
536 else
537         AC_MSG_WARN([no resample support in para_audiod/para_filter])
538 fi
539 CPPFLAGS="$OLD_CPPFLAGS"
540 LDFLAGS="$OLD_LDFLAGS"
541 LIBS="$OLD_LIBS"
542 ######################################################################### server
543 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
544         build_server="yes"
545         executables="$executables server"
546         server_cmdline_objs="server"
547         server_errlist_objs="
548                 server
549                 afh_common
550                 mp3_afh
551                 vss
552                 command
553                 net
554                 string
555                 signal
556                 time
557                 daemon
558                 http_send
559                 close_on_fork
560                 mm
561                 crypt_common
562                 ipc
563                 dccp_send
564                 fd
565                 user_list
566                 chunk_queue
567                 afs
568                 aft
569                 mood
570                 score
571                 attribute
572                 blob
573                 playlist
574                 sched
575                 acl
576                 send_common
577                 udp_send
578                 color
579                 fec
580                 wma_afh
581                 wma_common
582                 sideband
583                 version
584                 ggo
585         "
586         if test "$CRYPTOLIB" = openssl; then
587                 server_errlist_objs="$server_errlist_objs crypt"
588         else
589                 server_errlist_objs="$server_errlist_objs gcrypt"
590         fi
591         NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
592         NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
593         NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
594         NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
595         NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
596         test $HAVE_FAAD = yes && server_errlist_objs="$server_errlist_objs aac_afh aac_common"
597         server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
598         AC_SUBST(server_objs, add_dot_o($server_objs))
599         AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
600                 objlist_to_errlist($server_errlist_objs), errors used by para_server)
601 else
602         build_server="no"
603 fi
604 ############################################################# client
605 if test -n "$CRYPTOLIB"; then
606         build_client="yes"
607         executables="$executables client"
608         client_cmdline_objs="client"
609         client_errlist_objs="
610                 client
611                 net
612                 string
613                 fd
614                 sched
615                 stdin
616                 stdout
617                 time
618                 sideband
619                 client_common
620                 buffer_tree
621                 crypt_common
622                 version
623                 ggo
624         "
625         if test "$CRYPTOLIB" = openssl; then
626                 client_errlist_objs="$client_errlist_objs crypt"
627         else
628                 client_errlist_objs="$client_errlist_objs gcrypt"
629         fi
630         if test "$have_readline" = "yes"; then
631                 client_errlist_objs="$client_errlist_objs interactive"
632         fi
633         client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
634         AC_SUBST(client_objs, add_dot_o($client_objs))
635         AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
636                 objlist_to_errlist($client_errlist_objs), errors used by para_client)
637 else
638         build_client="no"
639 fi
640 ############################################################# audiod
641 if test -n "$CRYPTOLIB"; then
642         build_audiod="yes"
643         executables="$executables audiod"
644         audiod_audio_formats="wma"
645         audiod_cmdline_objs="$audiod_cmdline_objs
646                 audiod
647                 compress_filter
648                 http_recv
649                 dccp_recv
650                 file_write
651                 client
652                 amp_filter
653                 udp_recv
654                 prebuffer_filter
655                 sync_filter
656         "
657         audiod_errlist_objs="$audiod_errlist_objs
658                 audiod
659                 signal
660                 string
661                 daemon
662                 stat
663                 net
664                 crypt_common
665                 sideband
666                 time
667                 grab_client
668                 filter_common
669                 wav_filter
670                 compress_filter
671                 amp_filter
672                 http_recv
673                 dccp_recv
674                 recv_common
675                 fd
676                 sched
677                 write_common
678                 file_write
679                 audiod_command
680                 fecdec_filter
681                 client_common
682                 ggo
683                 udp_recv
684                 color
685                 fec
686                 prebuffer_filter
687                 version
688                 bitstream
689                 imdct
690                 wma_common
691                 wmadec_filter
692                 buffer_tree
693                 sync_filter
694         "
695         if test "$CRYPTOLIB" = openssl; then
696                 audiod_errlist_objs="$audiod_errlist_objs crypt"
697         else
698                 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
699         fi
700         if test "$have_core_audio" = "yes"; then
701                 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
702                 audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
703         fi
704         NEED_VORBIS_OBJECTS && {
705                 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
706                 audiod_audio_formats="$audiod_audio_formats ogg"
707         }
708         NEED_SPEEX_OBJECTS && {
709                 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
710                 audiod_audio_formats="$audiod_audio_formats spx"
711         }
712         NEED_OPUS_OBJECTS && {
713                 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
714                 audiod_audio_formats="$audiod_audio_formats opus"
715         }
716         NEED_FLAC_OBJECTS && {
717                 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
718                 audiod_audio_formats="$audiod_audio_formats flac"
719         }
720         if test $HAVE_FAAD = yes; then
721                 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
722                 audiod_audio_formats="$audiod_audio_formats aac"
723         fi
724         if test $HAVE_MAD = yes; then
725                 audiod_audio_formats="$audiod_audio_formats mp3"
726                 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
727                 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
728         fi
729         if test "$have_oss" = "yes"; then
730                 audiod_errlist_objs="$audiod_errlist_objs oss_write"
731                 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
732         fi
733         if test $HAVE_ALSA = yes; then
734                 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
735                 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
736         fi
737         if test "$have_ao" = "yes"; then
738                 audiod_errlist_objs="$audiod_errlist_objs ao_write"
739                 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
740         fi
741         if test "$have_samplerate" = "yes"; then
742                 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
743                 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
744         fi
745         audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
746         AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
747         AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
748                 errors used by para_audiod)
749
750         enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
751         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
752                 enum of audio formats supported by audiod)
753         names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
754         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
755 else
756         build_audiod="no"
757 fi
758 ########################################################################### fade
759 if test "$have_oss" = "yes" -o $HAVE_ALSA = yes; then
760         build_fade="yes"
761         executables="$executables fade"
762         fade_cmdline_objs="fade"
763         fade_errlist_objs="fade exec string fd version ggo"
764         if test "$have_oss" = "yes"; then
765                 fade_errlist_objs="$fade_errlist_objs oss_mix"
766                 mixers="${mixers}oss "
767                 default_mixer="OSS_MIX"
768         fi
769         if test $HAVE_ALSA = yes; then
770                 fade_errlist_objs="$fade_errlist_objs alsa_mix"
771                 mixers="${mixers}alsa "
772                 default_mixer="ALSA_MIX"
773         fi
774         fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
775         AC_SUBST(fade_objs, add_dot_o($fade_objs))
776         AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
777                 objlist_to_errlist($fade_errlist_objs),
778                 errors used by para_fade)
779         enum="$(
780                 for i in $mixers; do
781                         printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
782                 done
783         )"
784         AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
785                 enum of supported mixers)
786         AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
787                 use this mixer if none was specified)
788         names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
789         AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
790         inits="$(
791                 for i in $mixers; do
792                         printf 'extern void '$i'_mix_init(struct mixer *); '
793                 done
794         )"
795         AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
796                 init functions of the supported mixers)
797         array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
798         AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
799 else
800         build_fade="no"
801         AC_MSG_WARN([no mixer support])
802 fi
803 ########################################################################### gui
804 if test "$have_curses" = "yes"; then
805         build_gui="yes"
806         executables="$executables gui"
807         gui_cmdline_objs="gui"
808         gui_errlist_objs="
809                 exec
810                 signal
811                 string
812                 stat
813                 ringbuffer
814                 fd
815                 gui
816                 gui_theme
817                 time
818                 sched
819                 version
820                 ggo
821         "
822         gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
823         AC_SUBST(gui_objs, add_dot_o($gui_objs))
824         AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
825                 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
826 else
827         build_gui="no"
828         AC_MSG_WARN([no curses lib, cannot build para_gui])
829 fi
830 ######################################################################## filter
831 filters="
832         compress
833         wav
834         amp
835         fecdec
836         wmadec
837         prebuffer
838         sync
839 "
840 filter_errlist_objs="
841         filter_common
842         wav_filter
843         compress_filter
844         filter
845         string
846         stdin
847         stdout
848         sched
849         fd
850         amp_filter
851         ggo
852         fecdec_filter
853         fec
854         version
855         prebuffer_filter
856         time
857         bitstream
858         imdct
859         wma_common
860         wmadec_filter
861         buffer_tree
862         net
863         sync_filter
864 "
865 filter_cmdline_objs="
866         filter
867         compress_filter
868         amp_filter
869         prebuffer_filter
870         sync_filter
871 "
872 NEED_VORBIS_OBJECTS && {
873         filters="$filters oggdec"
874         filter_errlist_objs="$filter_errlist_objs oggdec_filter"
875 }
876 NEED_SPEEX_OBJECTS && {
877         filters="$filters spxdec"
878         filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
879 }
880 NEED_OPUS_OBJECTS && {
881         filters="$filters opusdec"
882         filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
883 }
884 NEED_FLAC_OBJECTS && {
885         filter_errlist_objs="$filter_errlist_objs flacdec_filter"
886         filters="$filters flacdec"
887 }
888 if test $HAVE_FAAD = yes; then
889         filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
890         filters="$filters aacdec"
891 fi
892 if test $HAVE_MAD = yes; then
893         filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
894         filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
895         filters="$filters mp3dec"
896 fi
897 if test "$have_samplerate" = "yes"; then
898         filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
899         filter_cmdline_objs="$filter_cmdline_objs resample_filter"
900         filters="$filters resample"
901 fi
902 filters="$(echo $filters)"
903 AC_SUBST(filters)
904 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
905
906 AC_SUBST(filter_objs, add_dot_o($filter_objs))
907 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
908         objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
909
910 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
911 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
912         enum of supported filters)
913 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
914 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
915 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
916 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
917 ########################################################################## recv
918 recv_cmdline_objs="
919         recv
920         http_recv
921         dccp_recv
922         udp_recv
923         afh_recv
924 "
925
926 recv_errlist_objs="
927         http_recv
928         recv_common
929         recv
930         time
931         string
932         net
933         dccp_recv
934         fd
935         sched
936         stdout
937         ggo
938         udp_recv
939         buffer_tree
940         afh_recv
941         afh_common
942         wma_afh
943         wma_common
944         mp3_afh
945         version
946 "
947 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
948 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
949 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
950 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
951 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
952
953 if test $HAVE_FAAD = yes; then
954         recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
955 fi
956 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
957 AC_SUBST(receivers, "http dccp udp afh")
958 AC_SUBST(recv_objs, add_dot_o($recv_objs))
959 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
960         errors used by para_recv)
961 ########################################################################### afh
962 audio_format_handlers="mp3 wma"
963 afh_cmdline_objs="afh"
964 afh_errlist_objs="
965         afh
966         string
967         fd
968         mp3_afh
969         afh_common
970         time
971         wma_afh
972         wma_common
973         version
974         ggo
975 "
976 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
977 NEED_VORBIS_OBJECTS && {
978         afh_errlist_objs="$afh_errlist_objs ogg_afh"
979         audio_format_handlers="$audio_format_handlers ogg"
980 }
981 NEED_SPEEX_OBJECTS && {
982         afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
983         audio_format_handlers="$audio_format_handlers spx"
984 }
985 NEED_OPUS_OBJECTS && {
986         afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
987         audio_format_handlers="$audio_format_handlers opus"
988 }
989 NEED_FLAC_OBJECTS && {
990         afh_errlist_objs="$afh_errlist_objs flac_afh"
991         audio_format_handlers="$audio_format_handlers flac"
992 }
993 if test $HAVE_FAAD = yes; then
994         afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
995         audio_format_handlers="$audio_format_handlers aac"
996 fi
997
998 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
999
1000 AC_SUBST(afh_objs, add_dot_o($afh_objs))
1001 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
1002         objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
1003 ########################################################################## play
1004 play_errlist_objs="
1005         play
1006         fd
1007         sched
1008         ggo
1009         buffer_tree
1010         time
1011         string
1012         net
1013         afh_recv
1014         afh_common
1015         wma_afh
1016         wma_common
1017         mp3_afh
1018         recv_common
1019         udp_recv
1020         http_recv
1021         dccp_recv
1022         filter_common
1023         fec
1024         bitstream
1025         imdct
1026         wav_filter
1027         compress_filter
1028         amp_filter
1029         prebuffer_filter
1030         fecdec_filter
1031         wmadec_filter
1032         write_common
1033         file_write
1034         version
1035         sync_filter
1036 "
1037 play_cmdline_objs="
1038         http_recv
1039         dccp_recv
1040         udp_recv
1041         afh_recv
1042         compress_filter
1043         amp_filter
1044         prebuffer_filter
1045         file_write
1046         play
1047         sync_filter
1048 "
1049 if test "$have_core_audio" = "yes"; then
1050         play_errlist_objs="$play_errlist_objs osx_write ipc"
1051         play_cmdline_objs="$play_cmdline_objs osx_write"
1052 fi
1053 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
1054 NEED_VORBIS_OBJECTS && {
1055         play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
1056 }
1057 NEED_SPEEX_OBJECTS && {
1058         play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
1059 }
1060 NEED_OPUS_OBJECTS &&
1061         play_errlist_objs="$play_errlist_objs
1062                 opusdec_filter
1063                 opus_afh
1064                 opus_common
1065         "
1066 NEED_FLAC_OBJECTS && {
1067         play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
1068 }
1069 if test $HAVE_FAAD = yes; then
1070         play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
1071 fi
1072 if test $HAVE_MAD = yes; then
1073         play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
1074         play_errlist_objs="$play_errlist_objs mp3dec_filter"
1075 fi
1076 if test "$have_oss" = "yes"; then
1077         play_errlist_objs="$play_errlist_objs oss_write"
1078         play_cmdline_objs="$play_cmdline_objs oss_write"
1079 fi
1080 if test $HAVE_ALSA = yes; then
1081         play_errlist_objs="$play_errlist_objs alsa_write"
1082         play_cmdline_objs="$play_cmdline_objs alsa_write"
1083 fi
1084 if test "$have_ao" = "yes"; then
1085         play_errlist_objs="$play_errlist_objs ao_write"
1086         play_cmdline_objs="$play_cmdline_objs ao_write"
1087 fi
1088 if test "$have_readline" = "yes"; then
1089         play_errlist_objs="$play_errlist_objs interactive"
1090 fi
1091 if test "$have_samplerate" = "yes"; then
1092         play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1093         play_cmdline_objs="$play_cmdline_objs resample_filter"
1094 fi
1095
1096 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1097 AC_SUBST(play_objs, add_dot_o($play_objs))
1098 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1099         objlist_to_errlist($play_errlist_objs), errors used by para_play)
1100 ######################################################################### write
1101 write_cmdline_objs="
1102         write
1103         file_write
1104 "
1105 write_errlist_objs="
1106         write
1107         write_common
1108         file_write
1109         time
1110         fd
1111         string
1112         sched
1113         stdin
1114         buffer_tree
1115         ggo
1116         check_wav
1117         version
1118 "
1119 writers="file"
1120 default_writer="FILE_WRITE"
1121
1122 if test "$have_core_audio" = "yes"; then
1123         write_errlist_objs="$write_errlist_objs osx_write ipc"
1124         write_cmdline_objs="$write_cmdline_objs osx_write"
1125         writers="$writers osx"
1126         default_writer="OSX_WRITE"
1127 fi
1128 if test "$have_ao" = "yes"; then
1129         write_errlist_objs="$write_errlist_objs ao_write"
1130         write_cmdline_objs="$write_cmdline_objs ao_write"
1131         writers="$writers ao"
1132         default_writer="AO_WRITE"
1133 fi
1134 if test "$have_oss" = "yes"; then
1135         write_errlist_objs="$write_errlist_objs oss_write"
1136         write_cmdline_objs="$write_cmdline_objs oss_write"
1137         writers="$writers oss"
1138         default_writer="OSS_WRITE"
1139 fi
1140 if test $HAVE_ALSA = yes; then
1141         write_errlist_objs="$write_errlist_objs alsa_write"
1142         write_cmdline_objs="$write_cmdline_objs alsa_write"
1143         writers="$writers alsa"
1144         default_writer="ALSA_WRITE"
1145 fi
1146 AC_SUBST(writers)
1147 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1148 AC_SUBST(write_objs, add_dot_o($write_objs))
1149 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1150         objlist_to_errlist($write_errlist_objs), errors used by para_write)
1151 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1152 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1153         enum of supported writers)
1154 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1155 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1156 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1157 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1158 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1159 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1160 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1161 ######################################################################## audioc
1162 audioc_cmdline_objs="audioc"
1163 audioc_errlist_objs="
1164         audioc
1165         string
1166         net
1167         fd
1168         version
1169         ggo
1170 "
1171 if test "$have_readline" = "yes"; then
1172         audioc_errlist_objs="$audioc_errlist_objs
1173                 buffer_tree
1174                 interactive
1175                 sched
1176                 time
1177         "
1178 fi
1179 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1180 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1181 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1182         objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1183 ############################################################# error2.h
1184 # these are always built
1185 all_errlist_objs="
1186         $recv_errlist_objs
1187         $filter_errlist_objs
1188         $audioc_errlist_objs
1189         $write_errlist_objs
1190         $afh_errlist_objs
1191         $play_errlist_objs
1192 "
1193
1194 # optional executables
1195 if test "$build_server" = "yes"; then
1196         all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1197 fi
1198 if test "$build_gui" = "yes"; then
1199         all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1200 fi
1201 if test "$build_fade" = "yes"; then
1202         all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1203 fi
1204 if test "$build_client" = "yes"; then
1205         all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1206 fi
1207 if test "$build_audiod" = "yes"; then
1208         all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1209 fi
1210
1211 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1212
1213 object_executable_matrix=
1214 for i in $executables; do
1215         eval objs=\$${i}_errlist_objs
1216         object_executable_matrix="$object_executable_matrix $i: $objs"
1217 done
1218 # use echo to replace newlines by space
1219 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1220
1221 SS=$(for obj in $all_errlist_objs; do
1222         printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z')
1223 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1224         [enum {$SS NUM_SS}],
1225         [list of all objects that use the paraslash error facility]
1226 )
1227 ################################################################## status items
1228
1229 status_items="basename status num_played mtime bitrate frequency file_size
1230 status_flags format score techinfo afs_mode
1231 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1232 offset seconds_total stream_start current_time audiod_uptime image_id
1233 lyrics_id duration directory lyrics_name image_name path hash channels
1234 last_played num_chunks chunk_time amplification artist title year album
1235 comment"
1236
1237 result=
1238 for i in $status_items; do
1239         result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1240 done
1241 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1242         [enum of all status items])
1243
1244 result=
1245 for i in $status_items; do
1246         result="$result \"$i\", "
1247 done
1248 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1249         [char * array of all status items])
1250
1251 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1252         [formats supported by para_server and para_afh])
1253
1254 AC_SUBST(executables)
1255
1256 AC_OUTPUT
1257 AC_MSG_NOTICE([
1258 paraslash configuration:
1259 ~~~~~~~~~~~~~~~~~~~~~~~~
1260 crypto lib: ${CRYPTOLIB:-[none]}
1261 unix socket credentials: $have_ucred
1262 readline (interactive CLIs): $have_readline
1263 audio formats handlers: $audio_format_handlers
1264 id3 version 2 support: $HAVE_ID3TAG
1265 filters: $filters
1266 writers: $writers
1267
1268 para_fade: $build_fade
1269 para_server: $build_server
1270 para_gui: $build_gui
1271 para_fade: $build_fade
1272 para_client: $build_client
1273 para_audiod: $build_audiod
1274 ])