Convert writers 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 "
512 audiod_errlist_objs="$audiod_errlist_objs
513 audiod
514 signal
515 string
516 daemon
517 stat
518 net
519 crypt_common
520 base64
521 sideband
522 time
523 grab_client
524 filter_common
525 wav_filter
526 compress_filter
527 amp_filter
528 http_recv
529 dccp_recv
530 recv_common
531 fd
532 sched
533 write_common
534 file_write
535 audiod_command
536 fecdec_filter
537 client_common
538 ggo
539 udp_recv
540 color
541 fec
542 prebuffer_filter
543 version
544 bitstream
545 imdct
546 wma_common
547 wmadec_filter
548 buffer_tree
549 sync_filter
550 "
551 if test "$CRYPTOLIB" = openssl; then
552 audiod_errlist_objs="$audiod_errlist_objs crypt"
553 else
554 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
555 fi
556 if test "$have_core_audio" = "yes"; then
557 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
558 fi
559 NEED_VORBIS_OBJECTS && {
560 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
561 audiod_audio_formats="$audiod_audio_formats ogg"
562 }
563 NEED_SPEEX_OBJECTS && {
564 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
565 audiod_audio_formats="$audiod_audio_formats spx"
566 }
567 NEED_OPUS_OBJECTS && {
568 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
569 audiod_audio_formats="$audiod_audio_formats opus"
570 }
571 NEED_FLAC_OBJECTS && {
572 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
573 audiod_audio_formats="$audiod_audio_formats flac"
574 }
575 if test $HAVE_FAAD = yes; then
576 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
577 audiod_audio_formats="$audiod_audio_formats aac"
578 fi
579 if test $HAVE_MAD = yes; then
580 audiod_audio_formats="$audiod_audio_formats mp3"
581 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
582 fi
583 if test $HAVE_OSS = yes; then
584 audiod_errlist_objs="$audiod_errlist_objs oss_write"
585 fi
586 if test $HAVE_ALSA = yes; then
587 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
588 fi
589 NEED_AO_OBJECTS && {
590 audiod_errlist_objs="$audiod_errlist_objs ao_write"
591 }
592 if test $HAVE_SAMPLERATE = yes; then
593 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
594 fi
595 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
596 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
597
598 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
599 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
600 enum of audio formats supported by audiod)
601 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
602 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
603 else
604 build_audiod="no"
605 fi
606 ########################################################################### fade
607 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
608 build_fade="yes"
609 executables="$executables fade"
610 fade_errlist_objs="fade exec string fd version"
611 if test $HAVE_OSS = yes; then
612 fade_errlist_objs="$fade_errlist_objs oss_mix"
613 mixers="${mixers}oss "
614 default_mixer="OSS_MIX"
615 fi
616 if test $HAVE_ALSA = yes; then
617 fade_errlist_objs="$fade_errlist_objs alsa_mix"
618 mixers="${mixers}alsa "
619 default_mixer="ALSA_MIX"
620 fi
621 fade_objs="$fade_errlist_objs"
622 AC_SUBST(fade_objs, add_dot_o($fade_objs))
623 enum="$(
624 for i in $mixers; do
625 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
626 done
627 )"
628 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
629 enum of supported mixers)
630 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
631 use this mixer if none was specified)
632 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
633 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
634 inits="$(
635 for i in $mixers; do
636 printf 'extern void '$i'_mix_init(struct mixer *); '
637 done
638 )"
639 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
640 init functions of the supported mixers)
641 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
642 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
643 else
644 build_fade="no"
645 AC_MSG_WARN([no mixer support])
646 fi
647 ########################################################################### gui
648 if test $HAVE_CURSES = yes; then
649 build_gui="yes"
650 executables="$executables gui"
651 gui_cmdline_objs="gui"
652 gui_errlist_objs="
653 exec
654 signal
655 string
656 stat
657 ringbuffer
658 fd
659 gui
660 gui_theme
661 time
662 sched
663 version
664 ggo
665 "
666 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
667 AC_SUBST(gui_objs, add_dot_o($gui_objs))
668 else
669 build_gui="no"
670 AC_MSG_WARN([no curses lib, cannot build para_gui])
671 fi
672 ######################################################################## filter
673 filter_errlist_objs="
674 filter_common
675 wav_filter
676 compress_filter
677 filter
678 string
679 stdin
680 stdout
681 sched
682 fd
683 amp_filter
684 ggo
685 fecdec_filter
686 fec
687 version
688 prebuffer_filter
689 time
690 bitstream
691 imdct
692 wma_common
693 wmadec_filter
694 buffer_tree
695 net
696 sync_filter
697 "
698 filter_cmdline_objs="
699 filter
700 "
701 NEED_VORBIS_OBJECTS && filter_errlist_objs="$filter_errlist_objs oggdec_filter"
702 NEED_SPEEX_OBJECTS && filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
703 NEED_OPUS_OBJECTS && filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
704 NEED_FLAC_OBJECTS && filter_errlist_objs="$filter_errlist_objs flacdec_filter"
705 if test $HAVE_FAAD = yes; then
706 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
707 fi
708 if test $HAVE_MAD = yes; then
709 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
710 fi
711 if test $HAVE_SAMPLERATE = yes; then
712 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
713 fi
714 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
715
716 AC_SUBST(filter_objs, add_dot_o($filter_objs))
717 ########################################################################## recv
718 recv_cmdline_objs="
719 recv
720 "
721
722 recv_errlist_objs="
723 http_recv
724 recv_common
725 recv
726 time
727 string
728 net
729 dccp_recv
730 fd
731 sched
732 stdout
733 udp_recv
734 buffer_tree
735 afh_recv
736 afh_common
737 wma_afh
738 wma_common
739 mp3_afh
740 version
741 "
742 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
743 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
744 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
745 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
746 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
747
748 if test $HAVE_FAAD = yes -a $HAVE_MP4V2 = yes; then
749 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
750 fi
751 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
752 AC_SUBST(recv_objs, add_dot_o($recv_objs))
753 ########################################################################### afh
754 audio_format_handlers="mp3 wma"
755 afh_cmdline_objs="afh"
756 afh_errlist_objs="
757 afh
758 string
759 fd
760 mp3_afh
761 afh_common
762 time
763 wma_afh
764 wma_common
765 version
766 ggo
767 "
768 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
769 NEED_VORBIS_OBJECTS && {
770 afh_errlist_objs="$afh_errlist_objs ogg_afh"
771 audio_format_handlers="$audio_format_handlers ogg"
772 }
773 NEED_SPEEX_OBJECTS && {
774 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
775 audio_format_handlers="$audio_format_handlers spx"
776 }
777 NEED_OPUS_OBJECTS && {
778 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
779 audio_format_handlers="$audio_format_handlers opus"
780 }
781 NEED_FLAC_OBJECTS && {
782 afh_errlist_objs="$afh_errlist_objs flac_afh"
783 audio_format_handlers="$audio_format_handlers flac"
784 }
785 if test $HAVE_FAAD = yes -a $HAVE_MP4V2 = yes; then
786 afh_errlist_objs="$afh_errlist_objs aac_afh aac_common"
787 audio_format_handlers="$audio_format_handlers aac"
788 fi
789
790 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
791
792 AC_SUBST(afh_objs, add_dot_o($afh_objs))
793 ########################################################################## play
794 play_errlist_objs="
795 play
796 fd
797 sched
798 buffer_tree
799 time
800 string
801 net
802 afh_recv
803 afh_common
804 wma_afh
805 wma_common
806 mp3_afh
807 recv_common
808 udp_recv
809 http_recv
810 dccp_recv
811 filter_common
812 fec
813 bitstream
814 imdct
815 wav_filter
816 compress_filter
817 amp_filter
818 prebuffer_filter
819 fecdec_filter
820 wmadec_filter
821 write_common
822 file_write
823 version
824 sync_filter
825 "
826 if test "$have_core_audio" = "yes"; then
827 play_errlist_objs="$play_errlist_objs osx_write ipc"
828 fi
829 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
830 NEED_VORBIS_OBJECTS && {
831 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
832 }
833 NEED_SPEEX_OBJECTS && {
834 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
835 }
836 NEED_OPUS_OBJECTS &&
837 play_errlist_objs="$play_errlist_objs
838 opusdec_filter
839 opus_afh
840 opus_common
841 "
842 NEED_FLAC_OBJECTS && {
843 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
844 }
845 if test $HAVE_FAAD = yes; then
846 play_errlist_objs="$play_errlist_objs aacdec_filter"
847 fi
848 if test $HAVE_MP4V2 = yes; then
849 play_errlist_objs="$play_errlist_objs aac_afh"
850 fi
851 if test $HAVE_MP4V2 = yes || test $HAVE_FAAD = yes; then
852 play_errlist_objs="$play_errlist_objs aac_common"
853 fi
854 if test $HAVE_MAD = yes; then
855 play_errlist_objs="$play_errlist_objs mp3dec_filter"
856 fi
857 if test $HAVE_OSS = yes; then
858 play_errlist_objs="$play_errlist_objs oss_write"
859 fi
860 if test $HAVE_ALSA = yes; then
861 play_errlist_objs="$play_errlist_objs alsa_write"
862 fi
863 NEED_AO_OBJECTS && {
864 play_errlist_objs="$play_errlist_objs ao_write"
865 }
866 if test $HAVE_READLINE = yes; then
867 play_errlist_objs="$play_errlist_objs interactive"
868 fi
869 if test $HAVE_SAMPLERATE = yes; then
870 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
871 fi
872
873 play_objs="$play_errlist_objs"
874 AC_SUBST(play_objs, add_dot_o($play_objs))
875 ######################################################################### write
876 write_cmdline_objs="
877 write
878 "
879 write_errlist_objs="
880 write
881 write_common
882 file_write
883 time
884 fd
885 string
886 sched
887 stdin
888 buffer_tree
889 ggo
890 check_wav
891 version
892 "
893
894 if test "$have_core_audio" = "yes"; then
895 write_errlist_objs="$write_errlist_objs osx_write ipc"
896 fi
897 NEED_AO_OBJECTS && {
898 write_errlist_objs="$write_errlist_objs ao_write"
899 }
900 if test $HAVE_OSS = yes; then
901 write_errlist_objs="$write_errlist_objs oss_write"
902 fi
903 if test $HAVE_ALSA = yes; then
904 write_errlist_objs="$write_errlist_objs alsa_write"
905 fi
906 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
907 AC_SUBST(write_objs, add_dot_o($write_objs))
908 ######################################################################## audioc
909 audioc_errlist_objs="
910 audioc
911 string
912 net
913 fd
914 version
915 "
916 if test $HAVE_READLINE = yes; then
917 audioc_errlist_objs="$audioc_errlist_objs
918 buffer_tree
919 interactive
920 sched
921 time
922 "
923 fi
924 audioc_objs="$audioc_errlist_objs"
925 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
926 ################################################################## status items
927
928 status_items="basename status num_played mtime bitrate frequency file_size
929 status_flags format score techinfo afs_mode
930 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
931 offset seconds_total stream_start current_time audiod_uptime image_id
932 lyrics_id duration directory lyrics_name image_name path hash channels
933 last_played num_chunks chunk_time amplification artist title year album
934 comment"
935
936 result=
937 for i in $status_items; do
938 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
939 done
940 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
941 [enum of all status items])
942
943 result=
944 for i in $status_items; do
945 result="$result \"$i\", "
946 done
947 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
948 [char * array of all status items])
949
950 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
951 [formats supported by para_server and para_afh])
952
953 AC_SUBST(executables)
954
955 AC_OUTPUT
956 AC_MSG_NOTICE([
957 paraslash configuration:
958 ~~~~~~~~~~~~~~~~~~~~~~~~
959 crypto lib: ${CRYPTOLIB:-[none]}
960 unix socket credentials: $have_ucred
961 readline (interactive CLIs): $HAVE_READLINE
962 id3 version 2 support: $HAVE_ID3TAG
963 faad: $HAVE_FAAD
964 mp4v2: $HAVE_MP4V2
965 audio format handlers: $audio_format_handlers
966
967 para_server: $build_server
968 para_gui: $build_gui
969 para_fade: $build_fade
970 para_client: $build_client
971 para_audiod: $build_audiod
972 ])