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