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