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