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