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