Merge branch 't/alsa_improvements'
[paraslash.git] / configure.ac
1 # -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 AC_PREREQ([2.61])
5
6 AC_INIT([paraslash],[git],[maan@systemlinux.org])
7 AC_CONFIG_HEADER([config.h])
8
9 AC_CONFIG_FILES([Makefile])
10 AC_DEFUN([add_dot_o],[$(for i in $@; do printf "$i.o "; done)])
11 AC_DEFUN([add_cmdline],[$(for i in $@; do printf "${i}.cmdline "; done)])
12 AC_DEFUN([make_errlist_defines], \
13 $(for i in $@; do \
14 printf "DEFINE_ERRLIST($(echo $i | tr 'a-z' 'A-Z'));"; \
15 done) \
16 )
17 AC_DEFUN([make_para_errlists], \
18 $(for i in $@; do \
19 printf "PARA_ERRLIST($(echo $i | tr 'a-z' 'A-Z')), "; \
20 done) \
21 )
22 AC_DEFUN([objlist_to_errlist],[ \
23 make_errlist_defines($@) \
24 [const char **para_errlist[[]]] = {make_para_errlists($@)} \
25 ])
26
27 AC_PATH_PROG(UNAMEPATH, uname, no)
28 if test "$UNAMEPATH" = "no"; then
29 AC_MSG_ERROR(unable to determine system type)
30 fi
31 AC_MSG_CHECKING(os type)
32 OSTYPE="`$UNAMEPATH -s`"
33 AC_MSG_RESULT("$OSTYPE")
34
35 if test "$OSTYPE" = "SunOS"; then
36 # needed on SunOS for socket magic
37 arch_cppflags="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
38 AC_SUBST(arch_cppflags)
39 fi
40
41 AC_C_BIGENDIAN()
42
43 AC_PATH_PROG([gengetopt], [gengetopt])
44 test -z "$gengetopt" && AC_MSG_ERROR(
45 [gengetopt is required to build this package])
46
47 AC_PATH_PROG([help2man], [help2man])
48 test -z "$help2man" && AC_MSG_ERROR(
49 [help2man is required to build this package])
50
51 AC_PATH_PROG([install], [install])
52 test -z "$install" && AC_MSG_ERROR(
53 [The install program is required to build this package])
54
55 AC_PROG_CC
56 AC_PROG_CPP
57
58 AC_HEADER_DIRENT
59 AC_HEADER_STDC
60 AC_HEADER_SYS_WAIT
61 AC_HEADER_STDBOOL
62 AC_CHECK_HEADERS([arpa/inet.h ctype.h fcntl.h limits.h netdb.h netinet/in.h \
63 stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h sys/un.h \
64 sys/ipc.h unistd.h utime.h stddef.h],
65 [], [AC_MSG_ERROR([$ac_header not found])])
66
67 # Checks for typedefs, structures, and compiler characteristics.
68 AC_C_CONST
69 AC_C_INLINE
70 AC_TYPE_OFF_T
71 AC_TYPE_PID_T
72 AC_TYPE_SIZE_T
73 AC_HEADER_TIME
74 AC_STRUCT_TM
75 AC_TYPE_INT8_T
76 AC_TYPE_INT16_T
77 AC_TYPE_INT32_T
78 AC_TYPE_INT64_T
79 AC_TYPE_MODE_T
80 AC_TYPE_SSIZE_T
81 AC_TYPE_UID_T
82 AC_TYPE_UINT8_T
83 AC_TYPE_UINT16_T
84 AC_TYPE_UINT32_T
85 AC_TYPE_UINT64_T
86
87 # Checks for library functions.
88 AC_FUNC_FORK
89 AC_PROG_GCC_TRADITIONAL
90 AC_FUNC_MEMCMP
91 AC_FUNC_MKTIME
92 AC_FUNC_MMAP
93 AC_FUNC_SELECT_ARGTYPES
94 AC_FUNC_STAT
95 AC_FUNC_STRFTIME
96 AC_FUNC_VPRINTF
97 AC_FUNC_CLOSEDIR_VOID
98 AC_FUNC_LSTAT
99
100 AC_CHECK_FUNCS([atexit dup2 memchr memmove memset \
101 regcomp select strchr strdup strerror strstr strtol uname \
102 fchdir gettimeofday localtime_r munmap strcasecmp strcspn \
103 strncasecmp strrchr strspn alarm mkdir inet_ntoa socket], [],
104 [AC_MSG_ERROR([function not found, cannot live without it])])
105
106 executables="recv filter audioc write afh play"
107 ################################################################## clock_gettime
108 clock_gettime_lib=
109 AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
110 AC_CHECK_LIB([rt], [clock_gettime], [clock_gettime_lib=rt], [], [])
111 ])
112 if test -n "$clock_gettime_lib"; then
113 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [
114 define to 1 if clock_gettime() is supported])
115 fi
116 if test "$clock_gettime_lib" = "rt"; then
117 AC_SUBST(clock_gettime_ldflags, -lrt)
118 fi
119 ########################################################################### osl
120 have_osl=yes
121 OLD_CPPFLAGS="$CPPFLAGS"
122 OLD_LDFLAGS="$LDFLAGS"
123 OLD_LIBS="$LIBS"
124 AC_ARG_WITH(osl_headers, [AS_HELP_STRING(--with-osl-headers=dir,
125 [look for osl.h also in dir])])
126 if test -n "$with_osl_headers"; then
127 osl_cppflags="-I$with_osl_headers"
128 CPPFLAGS="$CPPFLAGS $osl_cppflags"
129 fi
130 AC_ARG_WITH(osl_libs, [AS_HELP_STRING(--with-osl-libs=dir,
131 [look for libosl also in dir])])
132 if test -n "$with_osl_libs"; then
133 osl_libs="-L$with_osl_libs"
134 LDFLAGS="$LDFLAGS $osl_libs"
135 fi
136
137 AC_CHECK_HEADER(osl.h, [], have_osl=no)
138 AC_CHECK_LIB([osl], [osl_open_table], [], have_osl=no)
139 if test "$have_osl" = "yes"; then
140 AC_SUBST(osl_cppflags)
141 osl_ldflags="$osl_libs -losl"
142 AC_SUBST(osl_ldflags)
143 else
144 AC_MSG_WARN([libosl not found, can not build para_server.
145 Download libosl at
146 http://systemlinux.org/~maan/osl
147 or execute
148 git clone git://git.tuebingen.mpg.de/osl
149 ])
150 fi
151 CPPFLAGS="$OLD_CPPFLAGS"
152 LDFLAGS="$OLD_LDFLAGS"
153 LIBS="$OLD_LIBS"
154 ########################################################################### crypto
155 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
156 Force using crypto library "lib". This package requires either
157 openssl or libgcrypt being installed. Possible values for "lib"
158 are thus "openssl" and "gcrypt". If this option is not given,
159 openssl is tried first. If openssl was not found, gcrypt is
160 tried next.])])
161
162 case "$enable_cryptolib" in
163 "openssl") check_openssl="yes"; check_gcrypt="no";;
164 "gcrypt") check_openssl="no"; check_gcrypt="yes";;
165 "") check_openssl="yes"; check_gcrypt="yes";;
166 *) AC_MSG_ERROR([invalid value "$enable_cryptolib" for --enable-cryptolib]);;
167 esac
168 ###################################################################### openssl
169 if test "$check_openssl" = "yes"; then
170 OLD_CPPFLAGS="$CPPFLAGS"
171 OLD_LDFLAGS="$LDFLAGS"
172 OLD_LIBS="$LIBS"
173 have_openssl="yes"
174 AC_ARG_WITH(openssl_headers, [AS_HELP_STRING(--with-openssl-headers=dir,
175 [look for openssl headers also in dir])])
176 if test -n "$with_openssl_headers"; then
177 openssl_cppflags="-I$with_openssl_headers"
178 CPPFLAGS="$CPPFLAGS $openssl_cppflags"
179 fi
180 AC_ARG_WITH(openssl_libs, [AS_HELP_STRING(--with-openssl-libs=dir,
181 [look for openssl libraries also in dir])])
182 if test -n "$with_openssl_libs"; then
183 openssl_libs="-L$with_openssl_libs"
184 LDFLAGS="$LDFLAGS $openssl_libs"
185 fi
186 AC_CHECK_HEADER(openssl/ssl.h, [], [have_openssl="no"])
187 AC_CHECK_LIB([crypto], [RAND_bytes], [], [have_openssl="no"])
188 if test "$have_openssl" = "no" -a -z "$with_openssl_headers$with_openssl_libs"; then
189 # try harder: openssl is sometimes installed in /usr/local/ssl
190 openssl_cppflags="-I/usr/local/ssl/include"
191 CPPFLAGS="$CPPFLAGS $openssl_cppflags"
192 openssl_libs="-L/usr/local/ssl/lib"
193 LDFLAGS="$LDFLAGS $openssl_libs"
194 # clear cache
195 unset ac_cv_header_openssl_ssl_h 2> /dev/null
196 unset ac_cv_lib_crypto_RAND_bytes 2> /dev/null
197 AC_CHECK_HEADER(openssl/ssl.h, [have_openssl="yes"], [])
198 if test "$have_openssl" = "yes"; then
199 AC_CHECK_LIB([crypto], [RAND_bytes], [], [have_openssl="no"])
200 fi
201 fi
202 if test "$have_openssl" = "yes"; then
203 AC_DEFINE(HAVE_OPENSSL, 1, [define to 1 to turn on openssl support])
204 AC_SUBST(openssl_cppflags)
205 openssl_ldflags="$openssl_libs -lssl -lcrypto"
206 AC_SUBST(openssl_ldflags)
207
208 check_gcrypt="no"
209 else
210 AC_MSG_WARN([openssl libraries not found])
211 fi
212 CPPFLAGS="$OLD_CPPFLAGS"
213 LDFLAGS="$OLD_LDFLAGS"
214 LIBS="$OLD_LIBS"
215 else
216 have_openssl="no"
217 fi
218 ########################################################################### gcrypt
219 if test "$check_gcrypt" = "yes"; then
220 OLD_CPPFLAGS="$CPPFLAGS"
221 OLD_LDFLAGS="$LDFLAGS"
222 OLD_LIBS="$LIBS"
223 have_gcrypt="yes"
224 AC_ARG_WITH(gcrypt_headers, [AS_HELP_STRING(--with-gcrypt-headers=dir,
225 [look for gcrypt headers also in dir])])
226 if test -n "$with_gcrypt_headers"; then
227 gcrypt_cppflags="-I$with_gcrypt_headers"
228 CPPFLAGS="$CPPFLAGS $gcrypt_cppflags"
229 fi
230 AC_ARG_WITH(gcrypt_libs, [AS_HELP_STRING(--with-gcrypt-libs=dir,
231 [look for libgcrypt also in dir])])
232 if test -n "$with_gcrypt_libs"; then
233 gcrypt_libs="-L$with_gcrypt_libs"
234 LDFLAGS="$LDFLAGS $gcrypt_libs"
235 fi
236 AC_CHECK_HEADER(gcrypt.h, [], [have_gcrypt="no"])
237 AC_CHECK_LIB([gcrypt], [gcry_randomize], [], [have_gcrypt="no"])
238 if test "$have_gcrypt" = "yes"; then
239 AC_DEFINE(HAVE_GCRYPT, 1, [define to 1 to turn on gcrypt support])
240 AC_SUBST(gcrypt_cppflags)
241 gcrypt_ldflags="$gcrypt_libs -lgcrypt"
242 AC_SUBST(gcrypt_ldflags)
243 else
244 AC_MSG_WARN([gcrypt library not found])
245 fi
246 CPPFLAGS="$OLD_CPPFLAGS"
247 LDFLAGS="$OLD_LDFLAGS"
248 LIBS="$OLD_LIBS"
249 else
250 have_gcrypt="no"
251 fi
252 ########################################################################### libsocket
253 AC_CHECK_LIB([c], [socket],
254 [socket_ldlflags=],
255 [socket_ldflags="-lsocket"]
256 )
257 AC_SUBST(socket_ldflags)
258 ########################################################################### libnsl
259 AC_CHECK_LIB([c], [gethostbyname],
260 [nsl_ldflags=],
261 [nsl_ldflags="-lnsl"]
262 )
263 AC_SUBST(nsl_ldflags)
264 ########################################################################### ucred
265 AC_MSG_CHECKING(for struct ucred)
266 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
267 #define _GNU_SOURCE
268 #include <sys/types.h>
269 #include <sys/socket.h>
270 ]], [[
271 struct ucred sucred; sucred.pid=0;
272 ]])],[have_ucred=yes],[have_ucred=no])
273 AC_MSG_RESULT($have_ucred)
274 if test ${have_ucred} = yes; then
275 AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
276 fi
277 ########################################################################### gengetopt
278 echo 'option "z" z "" flag off' | $gengetopt --file-name conftest-ggo &&
279 AC_CHECK_DECL(
280 [gengetopt_args_info_description],
281 [ggo_descriptions_declared=yes],
282 [ggo_descriptions_declared=no],
283 [#include "conftest-ggo.h"]
284 )
285 AC_SUBST(ggo_descriptions_declared)
286 ########################################################################### curses
287 have_curses="yes"
288 OLD_CPPFLAGS="$CPPFLAGS"
289 OLD_LDFLAGS="$LDFLAGS"
290 OLD_LIBS="$LIBS"
291 AC_ARG_WITH(curses_headers, [AS_HELP_STRING(--with-curses-headers=dir,
292 [look for curses.h also in dir])])
293 if test -n "$with_curses_headers"; then
294 curses_cppflags="-I$with_curses_headers"
295 CPPFLAGS="$CPPFLAGS $curses_cppflags"
296 fi
297 AC_ARG_WITH(curses_libs, [AS_HELP_STRING(--with-curses-libs=dir,
298 [look for libcurses also in dir])])
299 if test -n "$with_curses_libs"; then
300 curses_libs="-L$with_curses_libs"
301 LDFLAGS="$LDFLAGS $curses_libs"
302 fi
303 AC_CHECK_HEADER(curses.h, [], [
304 have_curses="no"
305 ])
306 curses_ldflags="$curses_libs"
307 AC_CHECK_LIB([ncursesw], [initscr],
308 [curses_ldflags="$curses_libs -lncursesw"], [
309 AC_CHECK_LIB([curses], [initscr],
310 [curses_ldflags="$curses_libs -lcurses"],
311 [have_curses="no"]
312 )
313 ]
314 )
315 AC_SUBST(curses_cppflags)
316 AC_SUBST(curses_ldflags)
317 CPPFLAGS="$OLD_CPPFLAGS"
318 LDFLAGS="$OLD_LDFLAGS"
319 LIBS="$OLD_LIBS"
320 ########################################################################### ip_mreqn
321 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
322 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
323 #include <netdb.h>
324 #include <net/if.h>
325 ]], [[
326 struct ip_mreqn mn;
327 mn.imr_ifindex = 0;
328 ]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
329 AC_MSG_RESULT($have_ip_mreqn)
330 if test ${have_ip_mreqn} = yes; then
331 AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
332 fi
333 ########################################################################### osx
334
335 AC_MSG_CHECKING(for CoreAudio (MacOs))
336 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
337 #include <CoreAudio/CoreAudio.h>
338 ]], [[
339 AudioDeviceID id;
340 ]])],[have_core_audio=yes],[have_core_audio=no])
341 AC_MSG_RESULT($have_core_audio)
342 if test ${have_core_audio} = yes; then
343 f1="-framework CoreAudio"
344 f2="-framework AudioToolbox"
345 f3="-framework AudioUnit"
346 f4="-framework CoreServices"
347 core_audio_ldflags="$f1 $f2 $f3 $f4"
348 AC_SUBST(core_audio_ldflags)
349 AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
350 fi
351 ####################################################### ogg/vorbis/speex/opus
352 have_ogg="yes"
353 OLD_CPPFLAGS="$CPPFLAGS"
354 OLD_LDFLAGS="$LDFLAGS"
355 OLD_LIBS="$LIBS"
356 AC_ARG_WITH(ogg_headers, [AS_HELP_STRING(--with-ogg-headers=dir,
357 [look for ogg headers also in dir])])
358 AC_ARG_WITH(ogg_libs, [AS_HELP_STRING(--with-ogg-libs=dir,
359 [look for ogg libs also in dir])])
360 AC_ARG_WITH(vorbis_headers, [AS_HELP_STRING(--with-vorbis-headers=dir,
361 [look for vorbis headers also in dir])])
362 AC_ARG_WITH(vorbis_libs, [AS_HELP_STRING(--with-vorbis-libs=dir,
363 [look for vorbis libs also in dir])])
364 AC_ARG_WITH(speex_headers, [AS_HELP_STRING(--with-speex-headers=dir,
365 [look for speex headers also in dir])])
366 AC_ARG_WITH(speex_libs, [AS_HELP_STRING(--with-speex-libs=dir,
367 [look for speex libs also in dir])])
368 AC_ARG_WITH(opus_headers, [AS_HELP_STRING(--with-opus-headers=dir,
369 [look for opus headers also in dir])])
370 AC_ARG_WITH(opus_libs, [AS_HELP_STRING(--with-opus-libs=dir,
371 [look for opus libs also in dir])])
372
373 if test -n "$with_ogg_headers"; then
374 ogg_cppflags="-I$with_ogg_headers"
375 CPPFLAGS="$CPPFLAGS $ogg_cppflags"
376 fi
377 if test -n "$with_ogg_libs"; then
378 ogg_libs="-L$with_ogg_libs"
379 LDFLAGS="$LDFLAGS $ogg_libs"
380 fi
381 AC_CHECK_HEADERS([ogg/ogg.h], [], [ have_ogg="no"; ])
382 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [ have_ogg="no" ])
383
384 have_vorbis="yes"
385 have_speex="yes"
386 have_opus="yes"
387 if test "$have_ogg" = "yes"; then
388 # vorbis
389 if test -n "$with_vorbis_headers"; then
390 vorbis_cppflags="-I$with_vorbis_headers"
391 CPPFLAGS="$CPPFLAGS $vorbis_cppflags"
392 fi
393 if test -n "$with_vorbis_libs"; then
394 vorbis_libs="-L$with_vorbis_libs"
395 LDFLAGS="$LDFLAGS $vorbis_libs"
396 fi
397 AC_CHECK_HEADERS([vorbis/codec.h], [], [ have_vorbis="no" ])
398 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [ have_vorbis="no" ])
399
400 # speex
401 if test -n "$with_speex_headers"; then
402 speex_cppflags="-I$with_speex_headers"
403 CPPFLAGS="$CPPFLAGS $speex_cppflags"
404 fi
405 if test -n "$with_speex_libs"; then
406 speex_libs="-L$with_speex_libs"
407 LDFLAGS="$LDFLAGS $speex_libs"
408 fi
409 AC_CHECK_LIB([speex], [speex_decoder_init], [], [ have_speex="no" ])
410 AC_CHECK_HEADERS([speex/speex.h], [], [ have_speex="no" ])
411
412 # opus
413 if test -n "$with_opus_headers"; then
414 opus_cppflags="-I$with_opus_headers"
415 CPPFLAGS="$CPPFLAGS $opus_cppflags"
416 fi
417 if test -n "$with_opus_libs"; then
418 opus_libs="-L$with_opus_libs"
419 LDFLAGS="$LDFLAGS $opus_libs"
420 fi
421 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [ have_opus="no" ])
422 AC_CHECK_HEADERS([opus/opus.h], [], [ have_opus="no" ])
423 else
424 AC_MSG_WARN([vorbis/speex/opus depend on libogg, which was not detected])
425 have_vorbis="no"
426 have_speex="no"
427 have_opus="no"
428 fi
429
430 msg="support in para_server/para_filter/para_afh"
431 if test "$have_vorbis" = "yes" || \
432 test "$have_speex" = "yes" || \
433 test "$have_opus" = "yes"; then
434 AC_SUBST(ogg_cppflags)
435 ogg_ldflags="$ogg_libs -logg"
436 if test "$OSTYPE" = "Darwin"; then
437 ogg_ldflags="-Wl,-bind_at_load $ogg_ldflags"
438 fi
439 AC_SUBST(ogg_ldflags)
440 fi
441 if test "$have_vorbis" = "yes"; then
442 AC_DEFINE(HAVE_OGGVORBIS, 1, define to 1 to turn on ogg/vorbis support)
443 vorbis_ldflags="$vorbis_libs -lvorbis -lvorbisfile"
444 AC_SUBST(vorbis_ldflags)
445 fi
446 if test "$have_speex" = "yes"; then
447 AC_DEFINE(HAVE_SPEEX, 1, define to 1 to turn on ogg/speex support)
448 AC_SUBST(speex_cppflags)
449 speex_ldflags="$speex_libs -lspeex"
450 AC_SUBST(speex_ldflags)
451 else
452 AC_MSG_WARN([no ogg/speex $msg])
453 fi
454 if test "$have_opus" = "yes"; then
455 AC_DEFINE(HAVE_OPUS, 1, define to 1 to turn on ogg/opus support)
456 AC_SUBST(opus_cppflags)
457 opus_ldflags="$opus_libs -lopus"
458 AC_SUBST(opus_ldflags)
459 audio_format_handlers="$audio_format_handlers opus"
460 else
461 AC_MSG_WARN([no ogg/opus $msg])
462 fi
463 CPPFLAGS="$OLD_CPPFLAGS"
464 LDFLAGS="$OLD_LDFLAGS"
465 LIBS="$OLD_LIBS"
466 ########################################################################### faad
467 have_faad=yes
468 OLD_CPPFLAGS="$CPPFLAGS"
469 OLD_LDFLAGS="$LDFLAGS"
470 OLD_LIBS="$LIBS"
471 AC_ARG_WITH(faad_headers, [AS_HELP_STRING(--with-faad-headers=dir,
472 [look for neaacdec.h also in dir])])
473 if test -n "$with_faad_headers"; then
474 faad_cppflags="-I$with_faad_headers"
475 CPPFLAGS="$CPPFLAGS $faad_cppflags"
476 fi
477 AC_ARG_WITH(faad_libs, [AS_HELP_STRING(--with-faad-libs=dir,
478 [look for libfaad also in dir])])
479 if test -n "$with_faad_libs"; then
480 faad_libs="-L$with_faad_libs"
481 LDFLAGS="$LDFLAGS $faad_libs"
482 fi
483 AC_CHECK_HEADER(neaacdec.h, [], have_faad=no)
484 AC_CHECK_LIB([faad], [NeAACDecOpen], [], have_faad=no)
485 if test "$have_faad" = "yes"; then
486 AC_DEFINE(HAVE_FAAD, 1, define to 1 if you want to build the aacdec filter)
487 AC_SUBST(faad_cppflags)
488 faad_ldflags="$faad_libs -lfaad"
489 AC_SUBST(faad_ldflags)
490 fi
491 CPPFLAGS="$OLD_CPPFLAGS"
492 LDFLAGS="$OLD_LDFLAGS"
493 LIBS="$OLD_LIBS"
494 ########################################################################### mad
495 have_mad="yes"
496 OLD_CPPFLAGS="$CPPFLAGS"
497 OLD_LDFLAGS="$LDFLAGS"
498 OLD_LIBS="$LIBS"
499
500 AC_ARG_WITH(mad_headers, [AS_HELP_STRING(--with-mad-headers=dir,
501 [look for mad.h also in dir])])
502 if test -n "$with_mad_headers"; then
503 mad_cppflags="-I$with_mad_headers"
504 CPPFLAGS="$CPPFLAGS $mad_cppflags"
505 fi
506 AC_ARG_WITH(mad_libs, [AS_HELP_STRING(--with-mad-libs=dir,
507 [look for libmad also in dir])])
508 if test -n "$with_mad_libs"; then
509 mad_libs="-L$with_mad_libs"
510 LDFLAGS="$LDFLAGS $mad_libs"
511 fi
512 AC_CHECK_HEADERS([mad.h], [], [
513 have_mad="no"
514 ])
515 AC_CHECK_LIB([mad], [mad_stream_init], [], [
516 have_mad="no"
517 ])
518 if test "$have_mad" = "yes"; then
519 AC_DEFINE(HAVE_MAD, 1, define to 1 if you want to build the mp3dec filter)
520 AC_SUBST(mad_cppflags)
521 mad_ldflags="$mad_libs -lmad"
522 AC_SUBST(mad_ldflags)
523 else
524 AC_MSG_WARN([no mp3dec support in para_audiod/para_filter])
525 fi
526 CPPFLAGS="$OLD_CPPFLAGS"
527 LDFLAGS="$OLD_LDFLAGS"
528 LIBS="$OLD_LIBS"
529 ###################################################################### libid3tag
530 OLD_CPPFLAGS="$CPPFLAGS"
531 OLD_LDFLAGS="$LDFLAGS"
532 OLD_LIBS="$LIBS"
533
534 have_libid3tag="yes"
535 AC_ARG_WITH(id3tag_headers, [AS_HELP_STRING(--with-id3tag-headers=dir,
536 [look for id3tag header files also in dir])])
537 if test -n "$with_id3tag_headers"; then
538 id3tag_cppflags="-I$with_id3tag_headers"
539 CPPFLAGS="$CPPFLAGS $id3tag_cppflags"
540 fi
541 AC_ARG_WITH(id3tag_libs, [AS_HELP_STRING(--with-id3tag-libs=dir,
542 [look for id3tag libs also in dir])])
543 if test -n "$with_id3tag_libs"; then
544 id3tag_libs="-L$with_id3tag_libs"
545 LDFLAGS="$LDFLAGS $id3tag_libs"
546 fi
547
548 AC_MSG_CHECKING(for libid3tag)
549 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
550 #include <id3tag.h>
551 ]], [[
552 struct id3_tag t = {.flags = 0};
553 ]])],[],[have_libid3tag=no])
554 AC_MSG_RESULT($have_libid3tag)
555
556 if test ${have_libid3tag} = yes; then
557 AC_DEFINE(HAVE_LIBID3TAG, 1, define to 1 you have libid3tag)
558 AC_SUBST(id3tag_cppflags)
559 AC_SUBST(id3tag_ldflags, "$id3tag_libs -lid3tag -lz")
560 fi
561 CPPFLAGS="$OLD_CPPFLAGS"
562 LDFLAGS="$OLD_LDFLAGS"
563 LIBS="$OLD_LIBS"
564 ########################################################################### flac
565 OLD_CPPFLAGS="$CPPFLAGS"
566 OLD_LDFLAGS="$LDFLAGS"
567 OLD_LIBS="$LIBS"
568
569 have_flac="yes"
570 AC_ARG_WITH(flac_headers, [AS_HELP_STRING(--with-flac-headers=dir,
571 [look for flac headers also in dir])])
572 if test -n "$with_flac_headers"; then
573 flac_cppflags="-I$with_flac_headers"
574 CPPFLAGS="$CPPFLAGS $flac_cppflags"
575 fi
576 AC_ARG_WITH(flac_libs, [AS_HELP_STRING(--with-flac-libs=dir,
577 [look for flac libs also in dir])])
578 if test -n "$with_flac_libs"; then
579 flac_libs="-L$with_flac_libs"
580 LDFLAGS="$LDFLAGS $flac_libs"
581 fi
582 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], have_flac=no)
583 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], [
584 # nope, try again with -logg
585 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [],
586 have_flac=no, -lm -logg)
587 ], -lm)
588 if test "$have_flac" = "yes"; then
589 AC_DEFINE(HAVE_FLAC, 1, define to 1 if you want to build the flacdec filter)
590 AC_SUBST(flac_cppflags)
591 flac_ldflags="$flac_libs -lFLAC"
592 AC_SUBST(flac_ldflags)
593 else
594 AC_MSG_WARN([no flac support in para_audiod/para_filter/para_afh/para_server])
595 fi
596 CPPFLAGS="$OLD_CPPFLAGS"
597 LDFLAGS="$OLD_LDFLAGS"
598 LIBS="$OLD_LIBS"
599 ########################################################################### oss
600 OLD_CPPFLAGS="$CPPFLAGS"
601 OLD_LDFLAGS="$LDFLAGS"
602 OLD_LIBS="$LIBS"
603
604 have_oss="yes"
605 msg="=> will not build oss writer"
606
607 AC_CHECK_HEADER(sys/soundcard.h, [
608 AC_CHECK_LIB(ossaudio, _oss_ioctl, [
609 oss_ldflags="-lossaudio"
610 AC_SUBST(oss_ldflags)
611 ]
612 )
613 ],
614 [
615 have_oss="no"
616 AC_MSG_WARN([no sys/soundcard.h $msg])
617 ]
618 )
619 CPPFLAGS="$OLD_CPPFLAGS"
620 LDFLAGS="$OLD_LDFLAGS"
621 LIBS="$OLD_LIBS"
622
623 ########################################################################### alsa
624 OLD_CPPFLAGS="$CPPFLAGS"
625 OLD_LDFLAGS="$LDFLAGS"
626 OLD_LIBS="$LIBS"
627
628 msg="=> no alsa support for para_audiod/para_write"
629 if test "$OSTYPE" != "Linux"; then
630 have_alsa="no"
631 else
632 have_alsa="yes"
633 fi
634 if test "$have_alsa" = "yes"; then
635 AC_CHECK_HEADERS([alsa/asoundlib.h], [], [
636 have_alsa="no"
637 AC_MSG_WARN([no alsa/asoundlib $msg])
638 ])
639 fi
640
641 if test "$have_alsa" = "yes"; then
642 AC_CHECK_LIB([asound], [snd_pcm_open], [], [
643 have_alsa="no"
644 AC_MSG_WARN([no libasound $msg])
645 ])
646 fi
647
648 if test "$have_alsa" = "yes"; then
649 alsa_ldflags="-lasound"
650 AC_SUBST(alsa_ldflags)
651 fi
652
653 CPPFLAGS="$OLD_CPPFLAGS"
654 LDFLAGS="$OLD_LDFLAGS"
655 LIBS="$OLD_LIBS"
656 ########################################################################### libao
657 OLD_CPPFLAGS="$CPPFLAGS"
658 OLD_LDFLAGS="$LDFLAGS"
659 OLD_LIBS="$LIBS"
660
661 have_ao="yes"
662 AC_ARG_WITH(ao_headers, [AS_HELP_STRING(--with-ao-headers=dir,
663 [look for ao/ao.h also in dir])])
664 if test -n "$with_ao_headers"; then
665 ao_cppflags="-I$with_ao_headers"
666 CPPFLAGS="$CPPFLAGS $ao_cppflags"
667 fi
668 AC_ARG_WITH(ao_libs, [AS_HELP_STRING(--with-ao-libs=dir,
669 [look for libao also in dir])])
670 if test -n "$with_ao_libs"; then
671 ao_libs="-L$with_ao_libs"
672 LDFLAGS="$LDFLAGS $ao_libs"
673 fi
674 msg="no libao support for para_audiod/para_write"
675 AC_CHECK_HEADERS([ao/ao.h], [
676 ], [
677 have_ao="no"
678 AC_MSG_WARN([ao.h not found, $msg])
679 ])
680 if test "$have_ao" = "yes"; then
681 AC_CHECK_LIB([ao], [ao_initialize], [], [
682 have_ao="no"
683 AC_MSG_WARN([ao lib not found or not working, $msg])
684 ])
685 fi
686 if test "$have_ao" = "yes"; then
687 AC_CHECK_HEADERS([pthread.h], [
688 ], [
689 have_ao="no"
690 AC_MSG_WARN([pthread.h not found, $msg])
691 ])
692 fi
693 if test "$have_ao" = "yes"; then
694 AC_CHECK_LIB([pthread], [pthread_create], [], [
695 have_ao="no"
696 AC_MSG_WARN([pthread lib not found or not working, $msg])
697 ])
698 fi
699 if test "$have_ao" = "yes"; then
700 AC_SUBST(ao_cppflags)
701 ao_ldflags="$ao_libs -lao -lpthread"
702 AC_SUBST(ao_ldflags)
703 fi
704
705 CPPFLAGS="$OLD_CPPFLAGS"
706 LDFLAGS="$OLD_LDFLAGS"
707 LIBS="$OLD_LIBS"
708 ############################################################# readline
709 OLD_CPPFLAGS="$CPPFLAGS"
710 OLD_LDFLAGS="$LDFLAGS"
711 OLD_LIBS="$LIBS"
712
713 have_readline="yes"
714 AC_ARG_WITH(readline_headers, [AS_HELP_STRING(--with-readline-headers=dir,
715 [look for libreadline header files also in dir])])
716 if test -n "$with_readline_headers"; then
717 readline_cppflags="-I$with_readline_headers"
718 CPPFLAGS="$CPPFLAGS $readline_cppflags"
719 fi
720
721 AC_ARG_WITH(readline_libs, [AS_HELP_STRING(--with-readline-libs=dir,
722 [look for readline library also in dir])])
723 if test -n "$with_readline_libs"; then
724 readline_libs="-L$with_readline_libs"
725 LDFLAGS="$LDFLAGS $readline_libs"
726 fi
727 msg="no interactive cli support"
728 AC_CHECK_HEADERS([readline/readline.h], [
729 ], [
730 have_readline="no"
731 AC_MSG_WARN([readline/readline.h not found, $msg])
732 ])
733
734 if test "$have_readline" = "yes"; then
735 readline_ldflags="$readline_libs"
736 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
737 readline_ldflags="$readline_ldflags -lreadline"
738 ], [have_readline="no"])
739 if test "$have_readline" = "no"; then # try with -lcurses
740 # clear cache
741 AC_MSG_NOTICE([trying again with -lcurses])
742 unset ac_cv_search_rl_free_keymap 2> /dev/null
743 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
744 have_readline=yes
745 readline_ldflags="$readline_ldflags -lreadline -lcurses"
746 ], [], [-lcurses])
747 fi
748 if test "$have_readline" = "no"; then # try with -ltermcap
749 # clear cache
750 AC_MSG_NOTICE([trying again with -ltermcap])
751 unset ac_cv_search_rl_free_keymap 2> /dev/null
752 AC_SEARCH_LIBS([rl_free_keymap], [readline], [
753 have_readline=yes
754 readline_ldflags="$readline_ldflags -lreadline -ltermcap"
755 ], [], [-ltermcap])
756 fi
757 fi
758
759 if test "$have_readline" = "yes"; then
760 AC_CHECK_DECL(
761 [rl_free_keymap],
762 [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
763 [],
764 [
765 #include <stdio.h>
766 #include <readline/readline.h>
767 ]
768 )
769 AC_SUBST(readline_cppflags)
770 AC_SUBST(readline_ldflags)
771 AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
772 else
773 AC_MSG_WARN([libreadline not found or unusable])
774 fi
775 CPPFLAGS="$OLD_CPPFLAGS"
776 LDFLAGS="$OLD_LDFLAGS"
777 LIBS="$OLD_LIBS"
778 ############################################################# libsamplerate
779 OLD_CPPFLAGS="$CPPFLAGS"
780 OLD_LDFLAGS="$LDFLAGS"
781 OLD_LIBS="$LIBS"
782
783 have_samplerate="yes"
784 AC_ARG_WITH(samplerate_headers, [AS_HELP_STRING(--with-samplerate-headers=dir,
785 [look for samplerate headers also in dir])])
786 if test -n "$with_samplerate_headers"; then
787 samplerate_cppflags="-I$with_samplerate_headers"
788 CPPFLAGS="$CPPFLAGS $samplerate_cppflags"
789 fi
790 AC_ARG_WITH(samplerate_libs, [AS_HELP_STRING(--with-samplerate-libs=dir,
791 [look for samplerate libs also in dir])])
792 if test -n "$with_samplerate_libs"; then
793 samplerate_libs="-L$with_samplerate_libs"
794 LDFLAGS="$LDFLAGS $samplerate_libs"
795 fi
796
797 AC_CHECK_HEADER(samplerate.h, [], have_samplerate=no)
798 AC_CHECK_LIB([samplerate], [src_process], [], have_samplerate=no, [])
799
800 if test "$have_samplerate" = "yes"; then
801 AC_SUBST(samplerate_cppflags)
802 samplerate_ldflags="$samplerate_libs -lsamplerate"
803 AC_SUBST(samplerate_ldflags)
804 else
805 AC_MSG_WARN([no resample support in para_audiod/para_filter])
806 fi
807 CPPFLAGS="$OLD_CPPFLAGS"
808 LDFLAGS="$OLD_LDFLAGS"
809 LIBS="$OLD_LIBS"
810 ######################################################################### server
811 if test \( "$have_openssl" = "yes" -o "$have_gcrypt" = "yes" \) \
812 -a "$have_osl" = "yes" ; then
813
814 build_server="yes"
815 executables="$executables server"
816 server_cmdline_objs="server"
817 server_errlist_objs="
818 server
819 afh_common
820 mp3_afh
821 vss
822 command
823 net
824 string
825 signal
826 time
827 daemon
828 http_send
829 close_on_fork
830 mm
831 crypt_common
832 ipc
833 dccp_send
834 fd
835 user_list
836 chunk_queue
837 afs
838 aft
839 mood
840 score
841 attribute
842 blob
843 playlist
844 sched
845 acl
846 send_common
847 udp_send
848 color
849 fec
850 wma_afh
851 wma_common
852 sideband
853 version
854 ggo
855 "
856 if test "$have_openssl" = "yes"; then
857 server_errlist_objs="$server_errlist_objs crypt"
858 fi
859 if test "$have_gcrypt" = "yes"; then
860 server_errlist_objs="$server_errlist_objs gcrypt"
861 fi
862 if test "$have_vorbis" = "yes" || \
863 test "$have_speex" = "yes" || \
864 test "$have_opus" = "yes"; then
865 server_errlist_objs="$server_errlist_objs ogg_afh_common"
866 fi
867 if test "$have_vorbis" = "yes"; then
868 server_errlist_objs="$server_errlist_objs ogg_afh"
869 fi
870 if test "$have_speex" = "yes"; then
871 server_errlist_objs="$server_errlist_objs spx_afh spx_common"
872 fi
873 if test "$have_opus" = "yes"; then
874 server_errlist_objs="$server_errlist_objs opus_afh opus_common"
875 fi
876 if test "$have_faad" = "yes"; then
877 server_errlist_objs="$server_errlist_objs aac_afh aac_common"
878 fi
879 if test "$have_flac" = "yes"; then
880 server_errlist_objs="$server_errlist_objs flac_afh"
881 fi
882 server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
883 AC_SUBST(server_objs, add_dot_o($server_objs))
884 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
885 objlist_to_errlist($server_errlist_objs), errors used by para_server)
886 else
887 build_server="no"
888 fi
889 ############################################################# client
890 if test "$have_openssl" = "yes" -o "$have_gcrypt" = "yes"; then
891 build_client="yes"
892 executables="$executables client"
893 client_cmdline_objs="client"
894 client_errlist_objs="
895 client
896 net
897 string
898 fd
899 sched
900 stdin
901 stdout
902 time
903 sideband
904 client_common
905 buffer_tree
906 crypt_common
907 version
908 ggo
909 "
910 if test "$have_openssl" = "yes"; then
911 client_errlist_objs="$client_errlist_objs crypt"
912 fi
913 if test "$have_gcrypt" = "yes"; then
914 client_errlist_objs="$client_errlist_objs gcrypt"
915 fi
916 if test "$have_readline" = "yes"; then
917 client_errlist_objs="$client_errlist_objs interactive"
918 fi
919 client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
920 AC_SUBST(client_objs, add_dot_o($client_objs))
921 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
922 objlist_to_errlist($client_errlist_objs), errors used by para_client)
923 else
924 build_client="no"
925 fi
926 ############################################################# audiod
927 if test "$have_openssl" = "yes" -o "$have_gcrypt" = "yes"; then
928 build_audiod="yes"
929 executables="$executables audiod"
930 audiod_audio_formats="wma"
931 audiod_cmdline_objs="$audiod_cmdline_objs
932 audiod
933 compress_filter
934 http_recv
935 dccp_recv
936 file_write
937 client
938 amp_filter
939 udp_recv
940 prebuffer_filter
941 sync_filter
942 "
943 audiod_errlist_objs="$audiod_errlist_objs
944 audiod
945 signal
946 string
947 daemon
948 stat
949 net
950 crypt_common
951 sideband
952 time
953 grab_client
954 filter_common
955 wav_filter
956 compress_filter
957 amp_filter
958 http_recv
959 dccp_recv
960 recv_common
961 fd
962 sched
963 write_common
964 file_write
965 audiod_command
966 fecdec_filter
967 client_common
968 ggo
969 udp_recv
970 color
971 fec
972 prebuffer_filter
973 version
974 bitstream
975 imdct
976 wma_common
977 wmadec_filter
978 buffer_tree
979 sync_filter
980 "
981 if test "$have_openssl" = "yes"; then
982 audiod_errlist_objs="$audiod_errlist_objs crypt"
983 fi
984 if test "$have_gcrypt" = "yes"; then
985 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
986 fi
987 if test "$have_core_audio" = "yes"; then
988 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
989 audiod_cmdline_objs="$audiod_cmdline_objs osx_write.cmdline"
990 fi
991 if test "$have_vorbis" = "yes"; then
992 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
993 audiod_audio_formats="$audiod_audio_formats ogg"
994 fi
995 if test "$have_speex" = "yes"; then
996 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
997 audiod_audio_formats="$audiod_audio_formats spx"
998 fi
999 if test "$have_opus" = "yes"; then
1000 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
1001 audiod_audio_formats="$audiod_audio_formats opus"
1002 fi
1003 if test "$have_faad" = "yes"; then
1004 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
1005 audiod_audio_formats="$audiod_audio_formats aac"
1006 fi
1007 if test "$have_mad" = "yes"; then
1008 audiod_audio_formats="$audiod_audio_formats mp3"
1009 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
1010 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
1011 fi
1012 if test "$have_flac" = "yes"; then
1013 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
1014 audiod_audio_formats="$audiod_audio_formats flac"
1015 fi
1016 if test "$have_oss" = "yes"; then
1017 audiod_errlist_objs="$audiod_errlist_objs oss_write"
1018 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
1019 fi
1020 if test "$have_alsa" = "yes"; then
1021 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
1022 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
1023 fi
1024 if test "$have_ao" = "yes"; then
1025 audiod_errlist_objs="$audiod_errlist_objs ao_write"
1026 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
1027 fi
1028 if test "$have_samplerate" = "yes"; then
1029 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
1030 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
1031 fi
1032 audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
1033 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
1034 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
1035 errors used by para_audiod)
1036
1037 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
1038 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
1039 enum of audio formats supported by audiod)
1040 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
1041 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
1042 else
1043 build_audiod="no"
1044 fi
1045 ########################################################################### fade
1046 if test "$have_oss" = "yes" -o "$have_alsa" = "yes"; then
1047 build_fade="yes"
1048 executables="$executables fade"
1049 fade_cmdline_objs="fade"
1050 fade_errlist_objs="fade exec string fd version ggo"
1051 if test "$have_oss" = "yes"; then
1052 fade_errlist_objs="$fade_errlist_objs oss_mix"
1053 mixers="${mixers}oss "
1054 default_mixer="OSS_MIX"
1055 fi
1056 if test "$have_alsa" = "yes"; then
1057 fade_errlist_objs="$fade_errlist_objs alsa_mix"
1058 mixers="${mixers}alsa "
1059 default_mixer="ALSA_MIX"
1060 fi
1061 fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
1062 AC_SUBST(fade_objs, add_dot_o($fade_objs))
1063 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
1064 objlist_to_errlist($fade_errlist_objs),
1065 errors used by para_fade)
1066 enum="$(
1067 for i in $mixers; do
1068 printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
1069 done
1070 )"
1071 AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
1072 enum of supported mixers)
1073 AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
1074 use this mixer if none was specified)
1075 names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
1076 AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
1077 inits="$(
1078 for i in $mixers; do
1079 printf 'extern void '$i'_mix_init(struct mixer *); '
1080 done
1081 )"
1082 AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
1083 init functions of the supported mixers)
1084 array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
1085 AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
1086 else
1087 build_fade="no"
1088 AC_MSG_WARN([no mixer support])
1089 fi
1090 ########################################################################### gui
1091 if test "$have_curses" = "yes"; then
1092 build_gui="yes"
1093 executables="$executables gui"
1094 gui_cmdline_objs="gui"
1095 gui_errlist_objs="
1096 exec
1097 signal
1098 string
1099 stat
1100 ringbuffer
1101 fd
1102 gui
1103 gui_theme
1104 time
1105 version
1106 ggo
1107 "
1108 gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
1109 AC_SUBST(gui_objs, add_dot_o($gui_objs))
1110 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
1111 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
1112 else
1113 build_gui="no"
1114 AC_MSG_WARN([no curses lib, cannot build para_gui])
1115 fi
1116 ######################################################################## filter
1117 filters="
1118 compress
1119 wav
1120 amp
1121 fecdec
1122 wmadec
1123 prebuffer
1124 sync
1125 "
1126 filter_errlist_objs="
1127 filter_common
1128 wav_filter
1129 compress_filter
1130 filter
1131 string
1132 stdin
1133 stdout
1134 sched
1135 fd
1136 amp_filter
1137 ggo
1138 fecdec_filter
1139 fec
1140 version
1141 prebuffer_filter
1142 time
1143 bitstream
1144 imdct
1145 wma_common
1146 wmadec_filter
1147 buffer_tree
1148 net
1149 sync_filter
1150 "
1151 filter_cmdline_objs="
1152 filter
1153 compress_filter
1154 amp_filter
1155 prebuffer_filter
1156 sync_filter
1157 "
1158
1159 if test "$have_vorbis" = "yes"; then
1160 filters="$filters oggdec"
1161 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
1162 fi
1163 if test "$have_speex" = "yes"; then
1164 filters="$filters spxdec"
1165 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
1166 fi
1167 if test "$have_opus" = "yes"; then
1168 filters="$filters opusdec"
1169 filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
1170 fi
1171 if test "$have_faad" = "yes"; then
1172 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
1173 filters="$filters aacdec"
1174 fi
1175 if test "$have_mad" = "yes"; then
1176 filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
1177 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
1178 filters="$filters mp3dec"
1179 fi
1180 if test "$have_flac" = "yes"; then
1181 filter_errlist_objs="$filter_errlist_objs flacdec_filter"
1182 filters="$filters flacdec"
1183 fi
1184 if test "$have_samplerate" = "yes"; then
1185 filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
1186 filter_cmdline_objs="$filter_cmdline_objs resample_filter"
1187 filters="$filters resample"
1188 fi
1189 filters="$(echo $filters)"
1190 AC_SUBST(filters)
1191 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
1192
1193 AC_SUBST(filter_objs, add_dot_o($filter_objs))
1194 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
1195 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
1196
1197 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
1198 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
1199 enum of supported filters)
1200 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
1201 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
1202 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
1203 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
1204 ########################################################################## recv
1205 recv_cmdline_objs="
1206 recv
1207 http_recv
1208 dccp_recv
1209 udp_recv
1210 afh_recv
1211 "
1212
1213 recv_errlist_objs="
1214 http_recv
1215 recv_common
1216 recv
1217 time
1218 string
1219 net
1220 dccp_recv
1221 fd
1222 sched
1223 stdout
1224 ggo
1225 udp_recv
1226 buffer_tree
1227 afh_recv
1228 afh_common
1229 wma_afh
1230 wma_common
1231 mp3_afh
1232 version
1233 "
1234 if test "$have_vorbis" = "yes" || \
1235 test "$have_speex" = "yes" || \
1236 test "$have_opus" = "yes"; then
1237 recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
1238 fi
1239 if test "$have_vorbis" = "yes"; then
1240 recv_errlist_objs="$recv_errlist_objs ogg_afh"
1241 fi
1242 if test "$have_speex" = "yes"; then
1243 recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
1244 fi
1245 if test "$have_opus" = "yes"; then
1246 recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
1247 fi
1248 if test "$have_faad" = "yes"; then
1249 recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
1250 fi
1251 if test "$have_flac" = "yes"; then
1252 recv_errlist_objs="$recv_errlist_objs flac_afh"
1253 fi
1254 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
1255 AC_SUBST(receivers, "http dccp udp afh")
1256 AC_SUBST(recv_objs, add_dot_o($recv_objs))
1257 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
1258 errors used by para_recv)
1259 ########################################################################### afh
1260 audio_format_handlers="mp3 wma"
1261 afh_cmdline_objs="afh"
1262 afh_errlist_objs="
1263 afh
1264 string
1265 fd
1266 mp3_afh
1267 afh_common
1268 time
1269 wma_afh
1270 wma_common
1271 version
1272 ggo
1273 "
1274 if test "$have_vorbis" = "yes" || \
1275 test "$have_speex" = "yes" || \
1276 test "$have_opus" = "yes"; then
1277 afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
1278 fi
1279 if test "$have_vorbis" = "yes"; then
1280 afh_errlist_objs="$afh_errlist_objs ogg_afh"
1281 audio_format_handlers="$audio_format_handlers ogg"
1282 fi
1283 if test "$have_speex" = "yes"; then
1284 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
1285 audio_format_handlers="$audio_format_handlers spx"
1286 fi
1287 if test "$have_opus" = "yes"; then
1288 afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
1289 audio_format_handlers="$audio_format_handlers opus"
1290 fi
1291 if test "$have_faad" = "yes"; then
1292 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
1293 audio_format_handlers="$audio_format_handlers aac"
1294 fi
1295 if test "$have_flac" = "yes"; then
1296 afh_errlist_objs="$afh_errlist_objs flac_afh"
1297 audio_format_handlers="$audio_format_handlers flac"
1298 fi
1299
1300 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
1301
1302 AC_SUBST(afh_objs, add_dot_o($afh_objs))
1303 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
1304 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
1305 ########################################################################## play
1306 play_errlist_objs="
1307 play
1308 fd
1309 sched
1310 ggo
1311 buffer_tree
1312 time
1313 string
1314 net
1315 afh_recv
1316 afh_common
1317 wma_afh
1318 wma_common
1319 mp3_afh
1320 recv_common
1321 udp_recv
1322 http_recv
1323 dccp_recv
1324 filter_common
1325 fec
1326 bitstream
1327 imdct
1328 wav_filter
1329 compress_filter
1330 amp_filter
1331 prebuffer_filter
1332 fecdec_filter
1333 wmadec_filter
1334 write_common
1335 file_write
1336 version
1337 sync_filter
1338 "
1339 play_cmdline_objs="
1340 http_recv
1341 dccp_recv
1342 udp_recv
1343 afh_recv
1344 compress_filter
1345 amp_filter
1346 prebuffer_filter
1347 file_write
1348 play
1349 sync_filter
1350 "
1351 if test "$have_core_audio" = "yes"; then
1352 play_errlist_objs="$play_errlist_objs osx_write ipc"
1353 play_cmdline_objs="$play_cmdline_objs osx_write.cmdline"
1354 fi
1355 if test "$have_vorbis" = "yes" || \
1356 test "$have_speex" = "yes" || \
1357 test "$have_opus" = "yes"; then
1358 play_errlist_objs="$play_errlist_objs ogg_afh_common"
1359 fi
1360 if test "$have_vorbis" = "yes"; then
1361 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
1362 fi
1363 if test "$have_speex" = "yes"; then
1364 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
1365 fi
1366 if test "$have_opus" = "yes"; then
1367 play_errlist_objs="$play_errlist_objs opusdec_filter opus_afh opus_common"
1368 fi
1369 if test "$have_faad" = "yes"; then
1370 play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
1371 fi
1372 if test "$have_mad" = "yes"; then
1373 play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
1374 play_errlist_objs="$play_errlist_objs mp3dec_filter"
1375 fi
1376 if test "$have_flac" = "yes"; then
1377 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
1378 fi
1379 if test "$have_oss" = "yes"; then
1380 play_errlist_objs="$play_errlist_objs oss_write"
1381 play_cmdline_objs="$play_cmdline_objs oss_write"
1382 fi
1383 if test "$have_alsa" = "yes"; then
1384 play_errlist_objs="$play_errlist_objs alsa_write"
1385 play_cmdline_objs="$play_cmdline_objs alsa_write"
1386 fi
1387 if test "$have_ao" = "yes"; then
1388 play_errlist_objs="$play_errlist_objs ao_write"
1389 play_cmdline_objs="$play_cmdline_objs ao_write"
1390 fi
1391 if test "$have_readline" = "yes"; then
1392 play_errlist_objs="$play_errlist_objs interactive"
1393 fi
1394 if test "$have_samplerate" = "yes"; then
1395 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1396 play_cmdline_objs="$play_cmdline_objs resample_filter"
1397 fi
1398
1399 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1400 AC_SUBST(play_objs, add_dot_o($play_objs))
1401 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1402 objlist_to_errlist($play_errlist_objs), errors used by para_play)
1403 ######################################################################### write
1404 write_cmdline_objs="
1405 write
1406 file_write
1407 "
1408 write_errlist_objs="
1409 write
1410 write_common
1411 file_write
1412 time
1413 fd
1414 string
1415 sched
1416 stdin
1417 buffer_tree
1418 ggo
1419 check_wav
1420 version
1421 "
1422 writers="file"
1423 default_writer="FILE_WRITE"
1424
1425 if test "$have_core_audio" = "yes"; then
1426 write_errlist_objs="$write_errlist_objs osx_write ipc"
1427 write_cmdline_objs="$write_cmdline_objs osx_write.cmdline"
1428 writers="$writers osx"
1429 default_writer="OSX_WRITE"
1430 fi
1431 if test "$have_ao" = "yes"; then
1432 write_errlist_objs="$write_errlist_objs ao_write"
1433 write_cmdline_objs="$write_cmdline_objs ao_write"
1434 writers="$writers ao"
1435 default_writer="AO_WRITE"
1436 fi
1437 if test "$have_oss" = "yes"; then
1438 write_errlist_objs="$write_errlist_objs oss_write"
1439 write_cmdline_objs="$write_cmdline_objs oss_write"
1440 writers="$writers oss"
1441 default_writer="OSS_WRITE"
1442 fi
1443 if test "$have_alsa" = "yes"; then
1444 write_errlist_objs="$write_errlist_objs alsa_write"
1445 write_cmdline_objs="$write_cmdline_objs alsa_write"
1446 writers="$writers alsa"
1447 default_writer="ALSA_WRITE"
1448 fi
1449 AC_SUBST(writers)
1450 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1451 AC_SUBST(write_objs, add_dot_o($write_objs))
1452 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1453 objlist_to_errlist($write_errlist_objs), errors used by para_write)
1454 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1455 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1456 enum of supported writers)
1457 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1458 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1459 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1460 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1461 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1462 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1463 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1464 ######################################################################## audioc
1465 audioc_cmdline_objs="audioc"
1466 audioc_errlist_objs="
1467 audioc
1468 string
1469 net
1470 fd
1471 version
1472 ggo
1473 "
1474 if test "$have_readline" = "yes"; then
1475 audioc_errlist_objs="$audioc_errlist_objs
1476 buffer_tree
1477 interactive
1478 sched
1479 time
1480 "
1481 fi
1482 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1483 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1484 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1485 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1486 ############################################################# error2.h
1487 # these are always built
1488 all_errlist_objs="
1489 $recv_errlist_objs
1490 $filter_errlist_objs
1491 $audioc_errlist_objs
1492 $write_errlist_objs
1493 $afh_errlist_objs
1494 $play_errlist_objs
1495 "
1496
1497 # optional executables
1498 if test "$build_server" = "yes"; then
1499 all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1500 fi
1501 if test "$build_gui" = "yes"; then
1502 all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1503 fi
1504 if test "$build_fade" = "yes"; then
1505 all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1506 fi
1507 if test "$build_client" = "yes"; then
1508 all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1509 fi
1510 if test "$build_audiod" = "yes"; then
1511 all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1512 fi
1513
1514 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1515
1516 object_executable_matrix=
1517 for i in $executables; do
1518 eval objs=\$${i}_errlist_objs
1519 object_executable_matrix="$object_executable_matrix $i: $objs"
1520 done
1521 # use echo to replace newlines by space
1522 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1523
1524 for obj in $all_errlist_objs; do
1525 SS="$SS SS_$(echo $obj | tr 'a-z' 'A-Z'),"
1526 done
1527 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1528 [enum {$SS NUM_SS}],
1529 [list of all objects that use the paraslash error facility]
1530 )
1531 ################################################################## status items
1532
1533 status_items="basename status num_played mtime bitrate frequency file_size
1534 status_flags format score techinfo afs_mode
1535 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1536 offset seconds_total stream_start current_time audiod_uptime image_id
1537 lyrics_id duration directory lyrics_name image_name path hash channels
1538 last_played num_chunks chunk_time amplification artist title year album
1539 comment"
1540
1541 result=
1542 for i in $status_items; do
1543 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1544 done
1545 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1546 [enum of all status items])
1547
1548 result=
1549 for i in $status_items; do
1550 result="$result \"$i\", "
1551 done
1552 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1553 [char * array of all status items])
1554
1555 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1556 [formats supported by para_server and para_afh])
1557
1558 AC_SUBST(executables)
1559
1560 AC_OUTPUT
1561 AC_MSG_NOTICE([
1562 paraslash configuration:
1563 ~~~~~~~~~~~~~~~~~~~~~~~~
1564 unix socket credentials: $have_ucred
1565 readline (interactive CLIs): $have_readline
1566 audio formats handlers: $audio_format_handlers
1567 id3 version2 support: $have_libid3tag
1568 filters: $filters
1569 writers: $writers
1570
1571 para_fade: $build_fade
1572 para_server: $build_server
1573 para_gui: $build_gui
1574 para_fade: $build_fade
1575 para_client: $build_client
1576 para_audiod: $build_audiod
1577 ])