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