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