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