75194ffc3ed785713406f592890ec6ea05694332
[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         :
761         AC_SUBST(readline_cppflags)
762         AC_SUBST(readline_ldflags)
763         AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support)
764 else
765         AC_MSG_WARN([libreadline not found or unusable])
766 fi
767 CPPFLAGS="$OLD_CPPFLAGS"
768 LDFLAGS="$OLD_LDFLAGS"
769 LIBS="$OLD_LIBS"
770 ############################################################# libsamplerate
771 OLD_CPPFLAGS="$CPPFLAGS"
772 OLD_LDFLAGS="$LDFLAGS"
773 OLD_LIBS="$LIBS"
774
775 have_samplerate="yes"
776 AC_ARG_WITH(samplerate_headers, [AS_HELP_STRING(--with-samplerate-headers=dir,
777         [look for samplerate headers also in dir])])
778 if test -n "$with_samplerate_headers"; then
779         samplerate_cppflags="-I$with_samplerate_headers"
780         CPPFLAGS="$CPPFLAGS $samplerate_cppflags"
781 fi
782 AC_ARG_WITH(samplerate_libs, [AS_HELP_STRING(--with-samplerate-libs=dir,
783         [look for samplerate libs also in dir])])
784 if test -n "$with_samplerate_libs"; then
785         samplerate_libs="-L$with_samplerate_libs"
786         LDFLAGS="$LDFLAGS $samplerate_libs"
787 fi
788
789 AC_CHECK_HEADER(samplerate.h, [], have_samplerate=no)
790 AC_CHECK_LIB([samplerate], [src_process], [], have_samplerate=no, [])
791
792 if test "$have_samplerate" = "yes"; then
793         AC_SUBST(samplerate_cppflags)
794         samplerate_ldflags="$samplerate_libs -lsamplerate"
795         AC_SUBST(samplerate_ldflags)
796 else
797         AC_MSG_WARN([no resample support in para_audiod/para_filter])
798 fi
799 CPPFLAGS="$OLD_CPPFLAGS"
800 LDFLAGS="$OLD_LDFLAGS"
801 LIBS="$OLD_LIBS"
802 ######################################################################### server
803 if test \( "$have_openssl" = "yes" -o "$have_gcrypt" = "yes" \) \
804         -a "$have_osl" = "yes" ; then
805
806         build_server="yes"
807         executables="$executables server"
808         server_cmdline_objs="server"
809         server_errlist_objs="
810                 server
811                 afh_common
812                 mp3_afh
813                 vss
814                 command
815                 net
816                 string
817                 signal
818                 time
819                 daemon
820                 http_send
821                 close_on_fork
822                 mm
823                 crypt_common
824                 ipc
825                 dccp_send
826                 fd
827                 user_list
828                 chunk_queue
829                 afs
830                 aft
831                 mood
832                 score
833                 attribute
834                 blob
835                 playlist
836                 sched
837                 acl
838                 send_common
839                 udp_send
840                 color
841                 fec
842                 wma_afh
843                 wma_common
844                 sideband
845                 version
846                 ggo
847         "
848         if test "$have_openssl" = "yes"; then
849                 server_errlist_objs="$server_errlist_objs crypt"
850         fi
851         if test "$have_gcrypt" = "yes"; then
852                 server_errlist_objs="$server_errlist_objs gcrypt"
853         fi
854         if test "$have_vorbis" = "yes" || \
855                         test "$have_speex" = "yes" || \
856                         test "$have_opus" = "yes"; then
857                 server_errlist_objs="$server_errlist_objs ogg_afh_common"
858         fi
859         if test "$have_vorbis" = "yes"; then
860                 server_errlist_objs="$server_errlist_objs ogg_afh"
861         fi
862         if test "$have_speex" = "yes"; then
863                 server_errlist_objs="$server_errlist_objs spx_afh spx_common"
864         fi
865         if test "$have_opus" = "yes"; then
866                 server_errlist_objs="$server_errlist_objs opus_afh opus_common"
867         fi
868         if test "$have_faad" = "yes"; then
869                 server_errlist_objs="$server_errlist_objs aac_afh aac_common"
870         fi
871         if test "$have_flac" = "yes"; then
872                 server_errlist_objs="$server_errlist_objs flac_afh"
873         fi
874         server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
875         AC_SUBST(server_objs, add_dot_o($server_objs))
876         AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
877                 objlist_to_errlist($server_errlist_objs), errors used by para_server)
878 else
879         build_server="no"
880 fi
881 ############################################################# client
882 if test "$have_openssl" = "yes" -o "$have_gcrypt" = "yes"; then
883         build_client="yes"
884         executables="$executables client"
885         client_cmdline_objs="client"
886         client_errlist_objs="
887                 client
888                 net
889                 string
890                 fd
891                 sched
892                 stdin
893                 stdout
894                 time
895                 sideband
896                 client_common
897                 buffer_tree
898                 crypt_common
899                 version
900                 ggo
901         "
902         if test "$have_openssl" = "yes"; then
903                 client_errlist_objs="$client_errlist_objs crypt"
904         fi
905         if test "$have_gcrypt" = "yes"; then
906                 client_errlist_objs="$client_errlist_objs gcrypt"
907         fi
908         if test "$have_readline" = "yes"; then
909                 client_errlist_objs="$client_errlist_objs interactive"
910         fi
911         client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
912         AC_SUBST(client_objs, add_dot_o($client_objs))
913         AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
914                 objlist_to_errlist($client_errlist_objs), errors used by para_client)
915 else
916         build_client="no"
917 fi
918 ############################################################# audiod
919 if test "$have_openssl" = "yes" -o "$have_gcrypt" = "yes"; then
920         build_audiod="yes"
921         executables="$executables audiod"
922         audiod_audio_formats="wma"
923         audiod_cmdline_objs="$audiod_cmdline_objs
924                 audiod
925                 compress_filter
926                 http_recv
927                 dccp_recv
928                 file_write
929                 client
930                 amp_filter
931                 udp_recv
932                 prebuffer_filter
933         "
934         audiod_errlist_objs="$audiod_errlist_objs
935                 audiod
936                 signal
937                 string
938                 daemon
939                 stat
940                 net
941                 crypt_common
942                 sideband
943                 time
944                 grab_client
945                 filter_common
946                 wav_filter
947                 compress_filter
948                 amp_filter
949                 http_recv
950                 dccp_recv
951                 recv_common
952                 fd
953                 sched
954                 write_common
955                 file_write
956                 audiod_command
957                 fecdec_filter
958                 client_common
959                 ggo
960                 udp_recv
961                 color
962                 fec
963                 prebuffer_filter
964                 version
965                 bitstream
966                 imdct
967                 wma_common
968                 wmadec_filter
969                 buffer_tree
970         "
971         if test "$have_openssl" = "yes"; then
972                 audiod_errlist_objs="$audiod_errlist_objs crypt"
973         fi
974         if test "$have_gcrypt" = "yes"; then
975                 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
976         fi
977         if test "$have_core_audio" = "yes"; then
978                 audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
979                 audiod_cmdline_objs="$audiod_cmdline_objs osx_write.cmdline"
980         fi
981         if test "$have_vorbis" = "yes"; then
982                 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
983                 audiod_audio_formats="$audiod_audio_formats ogg"
984         fi
985         if test "$have_speex" = "yes"; then
986                 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
987                 audiod_audio_formats="$audiod_audio_formats spx"
988         fi
989         if test "$have_opus" = "yes"; then
990                 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
991                 audiod_audio_formats="$audiod_audio_formats opus"
992         fi
993         if test "$have_faad" = "yes"; then
994                 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
995                 audiod_audio_formats="$audiod_audio_formats aac"
996         fi
997         if test "$have_mad" = "yes"; then
998                 audiod_audio_formats="$audiod_audio_formats mp3"
999                 audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
1000                 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
1001         fi
1002         if test "$have_flac" = "yes"; then
1003                 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
1004                 audiod_audio_formats="$audiod_audio_formats flac"
1005         fi
1006         if test "$have_oss" = "yes"; then
1007                 audiod_errlist_objs="$audiod_errlist_objs oss_write"
1008                 audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
1009         fi
1010         if test "$have_alsa" = "yes"; then
1011                 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
1012                 audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
1013         fi
1014         if test "$have_ao" = "yes"; then
1015                 audiod_errlist_objs="$audiod_errlist_objs ao_write"
1016                 audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
1017         fi
1018         if test "$have_samplerate" = "yes"; then
1019                 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
1020                 audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
1021         fi
1022         audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
1023         AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
1024         AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
1025                 errors used by para_audiod)
1026
1027         enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
1028         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
1029                 enum of audio formats supported by audiod)
1030         names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
1031         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
1032 else
1033         build_audiod="no"
1034 fi
1035 ########################################################################### fade
1036 if test "$have_oss" = "yes" -o "$have_alsa" = "yes"; then
1037         build_fade="yes"
1038         executables="$executables fade"
1039         fade_cmdline_objs="fade"
1040         fade_errlist_objs="fade exec string fd version ggo"
1041         if test "$have_oss" = "yes"; then
1042                 fade_errlist_objs="$fade_errlist_objs oss_mix"
1043                 mixers="${mixers}oss "
1044                 default_mixer="OSS_MIX"
1045         fi
1046         if test "$have_alsa" = "yes"; then
1047                 fade_errlist_objs="$fade_errlist_objs alsa_mix"
1048                 mixers="${mixers}alsa "
1049                 default_mixer="ALSA_MIX"
1050         fi
1051         fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
1052         AC_SUBST(fade_objs, add_dot_o($fade_objs))
1053         AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
1054                 objlist_to_errlist($fade_errlist_objs),
1055                 errors used by para_fade)
1056         enum="$(
1057                 for i in $mixers; do
1058                         printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
1059                 done
1060         )"
1061         AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
1062                 enum of supported mixers)
1063         AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
1064                 use this mixer if none was specified)
1065         names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
1066         AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
1067         inits="$(
1068                 for i in $mixers; do
1069                         printf 'extern void '$i'_mix_init(struct mixer *); '
1070                 done
1071         )"
1072         AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
1073                 init functions of the supported mixers)
1074         array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
1075         AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
1076 else
1077         build_fade="no"
1078         AC_MSG_WARN([no mixer support])
1079 fi
1080 ########################################################################### gui
1081 if test "$have_curses" = "yes"; then
1082         build_gui="yes"
1083         executables="$executables gui"
1084         gui_cmdline_objs="gui"
1085         gui_errlist_objs="
1086                 exec
1087                 signal
1088                 string
1089                 stat
1090                 ringbuffer
1091                 fd
1092                 gui
1093                 gui_theme
1094                 time
1095                 version
1096                 ggo
1097         "
1098         gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
1099         AC_SUBST(gui_objs, add_dot_o($gui_objs))
1100         AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
1101                 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
1102 else
1103         build_gui="no"
1104         AC_MSG_WARN([no curses lib, cannot build para_gui])
1105 fi
1106 ######################################################################## filter
1107 filters="
1108         compress
1109         wav
1110         amp
1111         fecdec
1112         wmadec
1113         prebuffer
1114 "
1115 filter_errlist_objs="
1116         filter_common
1117         wav_filter
1118         compress_filter
1119         filter
1120         string
1121         stdin
1122         stdout
1123         sched
1124         fd
1125         amp_filter
1126         ggo
1127         fecdec_filter
1128         fec
1129         version
1130         prebuffer_filter
1131         time
1132         bitstream
1133         imdct
1134         wma_common
1135         wmadec_filter
1136         buffer_tree
1137         net
1138 "
1139 filter_cmdline_objs="
1140         filter
1141         compress_filter
1142         amp_filter
1143         prebuffer_filter
1144 "
1145
1146 if test "$have_vorbis" = "yes"; then
1147         filters="$filters oggdec"
1148         filter_errlist_objs="$filter_errlist_objs oggdec_filter"
1149 fi
1150 if test "$have_speex" = "yes"; then
1151         filters="$filters spxdec"
1152         filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
1153 fi
1154 if test "$have_opus" = "yes"; then
1155         filters="$filters opusdec"
1156         filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
1157 fi
1158 if test "$have_faad" = "yes"; then
1159         filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
1160         filters="$filters aacdec"
1161 fi
1162 if test "$have_mad" = "yes"; then
1163         filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
1164         filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
1165         filters="$filters mp3dec"
1166 fi
1167 if test "$have_flac" = "yes"; then
1168         filter_errlist_objs="$filter_errlist_objs flacdec_filter"
1169         filters="$filters flacdec"
1170 fi
1171 if test "$have_samplerate" = "yes"; then
1172         filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
1173         filter_cmdline_objs="$filter_cmdline_objs resample_filter"
1174         filters="$filters resample"
1175 fi
1176 filters="$(echo $filters)"
1177 AC_SUBST(filters)
1178 filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
1179
1180 AC_SUBST(filter_objs, add_dot_o($filter_objs))
1181 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
1182         objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
1183
1184 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
1185 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
1186         enum of supported filters)
1187 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
1188 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
1189 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
1190 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
1191 ########################################################################## recv
1192 recv_cmdline_objs="
1193         recv
1194         http_recv
1195         dccp_recv
1196         udp_recv
1197         afh_recv
1198 "
1199
1200 recv_errlist_objs="
1201         http_recv
1202         recv_common
1203         recv
1204         time
1205         string
1206         net
1207         dccp_recv
1208         fd
1209         sched
1210         stdout
1211         ggo
1212         udp_recv
1213         buffer_tree
1214         afh_recv
1215         afh_common
1216         wma_afh
1217         wma_common
1218         mp3_afh
1219         version
1220 "
1221 if test "$have_vorbis" = "yes" || \
1222                 test "$have_speex" = "yes" || \
1223                 test "$have_opus" = "yes"; then
1224         recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
1225 fi
1226 if test "$have_vorbis" = "yes"; then
1227         recv_errlist_objs="$recv_errlist_objs ogg_afh"
1228 fi
1229 if test "$have_speex" = "yes"; then
1230         recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
1231 fi
1232 if test "$have_opus" = "yes"; then
1233         recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
1234 fi
1235 if test "$have_faad" = "yes"; then
1236         recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
1237 fi
1238 if test "$have_flac" = "yes"; then
1239         recv_errlist_objs="$recv_errlist_objs flac_afh"
1240 fi
1241 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
1242 AC_SUBST(receivers, "http dccp udp afh")
1243 AC_SUBST(recv_objs, add_dot_o($recv_objs))
1244 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
1245         errors used by para_recv)
1246 ########################################################################### afh
1247 audio_format_handlers="mp3 wma"
1248 afh_cmdline_objs="afh"
1249 afh_errlist_objs="
1250         afh
1251         string
1252         fd
1253         mp3_afh
1254         afh_common
1255         time
1256         wma_afh
1257         wma_common
1258         version
1259         ggo
1260 "
1261 if test "$have_vorbis" = "yes" || \
1262                 test "$have_speex" = "yes" || \
1263                 test "$have_opus" = "yes"; then
1264         afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
1265 fi
1266 if test "$have_vorbis" = "yes"; then
1267         afh_errlist_objs="$afh_errlist_objs ogg_afh"
1268         audio_format_handlers="$audio_format_handlers ogg"
1269 fi
1270 if test "$have_speex" = "yes"; then
1271         afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
1272         audio_format_handlers="$audio_format_handlers spx"
1273 fi
1274 if test "$have_opus" = "yes"; then
1275         afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
1276         audio_format_handlers="$audio_format_handlers opus"
1277 fi
1278 if test "$have_faad" = "yes"; then
1279         afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
1280         audio_format_handlers="$audio_format_handlers aac"
1281 fi
1282 if test "$have_flac" = "yes"; then
1283         afh_errlist_objs="$afh_errlist_objs flac_afh"
1284         audio_format_handlers="$audio_format_handlers flac"
1285 fi
1286
1287 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
1288
1289 AC_SUBST(afh_objs, add_dot_o($afh_objs))
1290 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
1291         objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
1292 ########################################################################## play
1293 play_errlist_objs="
1294         play
1295         fd
1296         sched
1297         ggo
1298         buffer_tree
1299         time
1300         string
1301         net
1302         afh_recv
1303         afh_common
1304         wma_afh
1305         wma_common
1306         mp3_afh
1307         recv_common
1308         udp_recv
1309         http_recv
1310         dccp_recv
1311         filter_common
1312         fec
1313         bitstream
1314         imdct
1315         wav_filter
1316         compress_filter
1317         amp_filter
1318         prebuffer_filter
1319         fecdec_filter
1320         wmadec_filter
1321         write_common
1322         file_write
1323         version
1324 "
1325 play_cmdline_objs="
1326         http_recv
1327         dccp_recv
1328         udp_recv
1329         afh_recv
1330         compress_filter
1331         amp_filter
1332         prebuffer_filter
1333         file_write
1334         play
1335 "
1336 if test "$have_core_audio" = "yes"; then
1337         play_errlist_objs="$play_errlist_objs osx_write ipc"
1338         play_cmdline_objs="$play_cmdline_objs osx_write.cmdline"
1339 fi
1340 if test "$have_vorbis" = "yes" || \
1341                 test "$have_speex" = "yes" || \
1342                 test "$have_opus" = "yes"; then
1343         play_errlist_objs="$play_errlist_objs ogg_afh_common"
1344 fi
1345 if test "$have_vorbis" = "yes"; then
1346         play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
1347 fi
1348 if test "$have_speex" = "yes"; then
1349         play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
1350 fi
1351 if test "$have_opus" = "yes"; then
1352         play_errlist_objs="$play_errlist_objs opusdec_filter opus_afh opus_common"
1353 fi
1354 if test "$have_faad" = "yes"; then
1355         play_errlist_objs="$play_errlist_objs aacdec_filter aac_afh aac_common"
1356 fi
1357 if test "$have_mad" = "yes"; then
1358         play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
1359         play_errlist_objs="$play_errlist_objs mp3dec_filter"
1360 fi
1361 if test "$have_flac" = "yes"; then
1362         play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
1363 fi
1364 if test "$have_oss" = "yes"; then
1365         play_errlist_objs="$play_errlist_objs oss_write"
1366         play_cmdline_objs="$play_cmdline_objs oss_write"
1367 fi
1368 if test "$have_alsa" = "yes"; then
1369         play_errlist_objs="$play_errlist_objs alsa_write"
1370         play_cmdline_objs="$play_cmdline_objs alsa_write"
1371 fi
1372 if test "$have_ao" = "yes"; then
1373         play_errlist_objs="$play_errlist_objs ao_write"
1374         play_cmdline_objs="$play_cmdline_objs ao_write"
1375 fi
1376 if test "$have_readline" = "yes"; then
1377         play_errlist_objs="$play_errlist_objs interactive"
1378 fi
1379 if test "$have_samplerate" = "yes"; then
1380         play_errlist_objs="$play_errlist_objs resample_filter check_wav"
1381         play_cmdline_objs="$play_cmdline_objs resample_filter"
1382 fi
1383
1384 play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
1385 AC_SUBST(play_objs, add_dot_o($play_objs))
1386 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
1387         objlist_to_errlist($play_errlist_objs), errors used by para_play)
1388 ######################################################################### write
1389 write_cmdline_objs="
1390         write
1391         file_write
1392 "
1393 write_errlist_objs="
1394         write
1395         write_common
1396         file_write
1397         time
1398         fd
1399         string
1400         sched
1401         stdin
1402         buffer_tree
1403         ggo
1404         check_wav
1405         version
1406 "
1407 writers="file"
1408 default_writer="FILE_WRITE"
1409
1410 if test "$have_core_audio" = "yes"; then
1411         write_errlist_objs="$write_errlist_objs osx_write ipc"
1412         write_cmdline_objs="$write_cmdline_objs osx_write.cmdline"
1413         writers="$writers osx"
1414         default_writer="OSX_WRITE"
1415 fi
1416 if test "$have_ao" = "yes"; then
1417         write_errlist_objs="$write_errlist_objs ao_write"
1418         write_cmdline_objs="$write_cmdline_objs ao_write"
1419         writers="$writers ao"
1420         default_writer="AO_WRITE"
1421 fi
1422 if test "$have_oss" = "yes"; then
1423         write_errlist_objs="$write_errlist_objs oss_write"
1424         write_cmdline_objs="$write_cmdline_objs oss_write"
1425         writers="$writers oss"
1426         default_writer="OSS_WRITE"
1427 fi
1428 if test "$have_alsa" = "yes"; then
1429         write_errlist_objs="$write_errlist_objs alsa_write"
1430         write_cmdline_objs="$write_cmdline_objs alsa_write"
1431         writers="$writers alsa"
1432         default_writer="ALSA_WRITE"
1433 fi
1434 AC_SUBST(writers)
1435 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
1436 AC_SUBST(write_objs, add_dot_o($write_objs))
1437 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
1438         objlist_to_errlist($write_errlist_objs), errors used by para_write)
1439 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
1440 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
1441         enum of supported writers)
1442 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
1443 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
1444 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
1445 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
1446 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
1447 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
1448 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
1449 ######################################################################## audioc
1450 audioc_cmdline_objs="audioc"
1451 audioc_errlist_objs="
1452         audioc
1453         string
1454         net
1455         fd
1456         version
1457         ggo
1458 "
1459 if test "$have_readline" = "yes"; then
1460         audioc_errlist_objs="$audioc_errlist_objs
1461                 buffer_tree
1462                 interactive
1463                 sched
1464                 time
1465         "
1466 fi
1467 audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
1468 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
1469 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
1470         objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
1471 ############################################################# error2.h
1472 # these are always built
1473 all_errlist_objs="
1474         $recv_errlist_objs
1475         $filter_errlist_objs
1476         $audioc_errlist_objs
1477         $write_errlist_objs
1478         $afh_errlist_objs
1479         $play_errlist_objs
1480 "
1481
1482 # optional executables
1483 if test "$build_server" = "yes"; then
1484         all_errlist_objs="$all_errlist_objs $server_errlist_objs"
1485 fi
1486 if test "$build_gui" = "yes"; then
1487         all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
1488 fi
1489 if test "$build_fade" = "yes"; then
1490         all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
1491 fi
1492 if test "$build_client" = "yes"; then
1493         all_errlist_objs="$all_errlist_objs $client_errlist_objs"
1494 fi
1495 if test "$build_audiod" = "yes"; then
1496         all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
1497 fi
1498
1499 all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
1500
1501 object_executable_matrix=
1502 for i in $executables; do
1503         eval objs=\$${i}_errlist_objs
1504         object_executable_matrix="$object_executable_matrix $i: $objs"
1505 done
1506 # use echo to replace newlines by space
1507 AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
1508
1509 for obj in $all_errlist_objs; do
1510         SS="$SS SS_$(echo $obj | tr 'a-z' 'A-Z'),"
1511 done
1512 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
1513         [enum {$SS NUM_SS}],
1514         [list of all objects that use the paraslash error facility]
1515 )
1516 ################################################################## status items
1517
1518 status_items="basename status num_played mtime bitrate frequency file_size
1519 status_flags format score techinfo afs_mode
1520 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
1521 offset seconds_total stream_start current_time audiod_uptime image_id
1522 lyrics_id duration directory lyrics_name image_name path hash channels
1523 last_played num_chunks chunk_time amplification artist title year album
1524 comment"
1525
1526 result=
1527 for i in $status_items; do
1528         result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
1529 done
1530 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
1531         [enum of all status items])
1532
1533 result=
1534 for i in $status_items; do
1535         result="$result \"$i\", "
1536 done
1537 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
1538         [char * array of all status items])
1539
1540 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
1541         [formats supported by para_server and para_afh])
1542
1543 AC_SUBST(executables)
1544
1545 AC_OUTPUT
1546 AC_MSG_NOTICE([
1547 paraslash configuration:
1548 ~~~~~~~~~~~~~~~~~~~~~~~~
1549 unix socket credentials: $have_ucred
1550 readline (interactive CLIs): $have_readline
1551 audio formats handlers: $audio_format_handlers
1552 id3 version2 support: $have_libid3tag
1553 filters: $filters
1554 writers: $writers
1555
1556 para_fade: $build_fade
1557 para_server: $build_server
1558 para_gui: $build_gui
1559 para_fade: $build_fade
1560 para_client: $build_client
1561 para_audiod: $build_audiod
1562 ])