abf8c071b8a53091ec3c263576fa9f6fae5a74cd
[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 ])