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