2 # Process this file with autoconf to produce a configure script.
7 AC_INIT(paraslash, [git], maan@systemlinux.org)
8 AC_CONFIG_HEADER([config.h])
10 AC_PATH_PROG(UNAMEPATH, uname, no)
11 if test "$UNAMEPATH" = "no"; then
12 AC_MSG_ERROR(unable to determine system type)
14 AC_MSG_CHECKING(os type)
15 OSTYPE="`$UNAMEPATH -s`"
16 AC_MSG_RESULT("$OSTYPE")
18 if test "$OSTYPE" = "SunOS"; then
19 # needed on SunOS for socket magic
20 arch_cppflags="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
21 AC_SUBST(arch_cppflags)
35 AC_CHECK_HEADERS([arpa/inet.h ctype.h fcntl.h limits.h netdb.h netinet/in.h \
36 stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h sys/un.h \
37 sys/ipc.h unistd.h utime.h stddef.h],
38 [], [AC_MSG_ERROR([$ac_header not found])])
40 # Checks for typedefs, structures, and compiler characteristics.
60 # Checks for library functions.
62 AC_PROG_GCC_TRADITIONAL
68 AC_FUNC_SELECT_ARGTYPES
76 AC_CHECK_FUNCS([atexit dup2 memchr memmove memset \
77 regcomp select strchr strdup strerror strstr strtol uname \
78 fchdir gettimeofday localtime_r munmap strcasecmp strcspn \
79 strncasecmp strrchr strspn alarm mkdir inet_ntoa socket], [],
80 [AC_MSG_ERROR([function not found, cannot live without it])])
84 AC_DEFUN([add_cmdline],[$(for i in $@; do printf "${i}.cmdline "; done)])
87 all_errlist_objs="server mp3_afh afh_common vss command net string signal time
88 daemon stat http_send close_on_fork ipc acl afh fade amp_filter
89 dccp_send fd user_list chunk_queue afs aft mood score attribute blob ringbuffer
90 playlist sched audiod grab_client filter_common wav_filter compress_filter
91 http_recv dccp_recv recv_common write_common file_write audiod_command
92 client_common recv stdout filter stdin audioc write client exec send_common ggo
93 udp_recv udp_send color fec fecdec_filter prebuffer_filter mm
94 server_command_list afs_command_list audiod_command_list bitstream imdct wma_afh
95 wma_common wmadec_filter buffer_tree crypt_common
98 executables="recv filter audioc write client afh audiod"
100 recv_cmdline_objs="add_cmdline(recv http_recv dccp_recv udp_recv)"
102 recv_errlist_objs="http_recv recv_common recv time string net dccp_recv
103 fd sched stdout ggo udp_recv fec buffer_tree"
106 filter_cmdline_objs="add_cmdline(filter compress_filter amp_filter prebuffer_filter)"
107 filter_errlist_objs="filter_common wav_filter compress_filter filter string
108 stdin stdout sched fd amp_filter ggo fecdec_filter fec
109 prebuffer_filter time bitstream imdct wma_common wmadec_filter buffer_tree"
111 filters=" compress wav amp fecdec wmadec prebuffer"
113 audioc_cmdline_objs="add_cmdline(audioc)"
114 audioc_errlist_objs="audioc string net fd"
117 audiod_cmdline_objs="add_cmdline(audiod compress_filter http_recv dccp_recv file_write client amp_filter udp_recv prebuffer_filter)"
118 audiod_errlist_objs="audiod signal string daemon stat net crypt_common
119 time grab_client filter_common wav_filter compress_filter amp_filter http_recv dccp_recv
120 recv_common fd sched write_common file_write audiod_command fecdec_filter
121 client_common ggo udp_recv color fec prebuffer_filter audiod_command_list
122 bitstream imdct wma_common wmadec_filter buffer_tree"
124 audiod_audio_formats="wma"
126 afh_cmdline_objs="add_cmdline(afh)"
127 afh_errlist_objs="afh string fd mp3_afh afh_common time wma_afh wma_common"
130 server_cmdline_objs="add_cmdline(server)"
131 server_errlist_objs="server afh_common mp3_afh vss command net string signal
132 time daemon http_send close_on_fork mm crypt_common
133 ipc dccp_send fd user_list chunk_queue afs aft mood score attribute
134 blob playlist sched acl send_common udp_send color fec
135 server_command_list afs_command_list wma_afh wma_common"
137 server_audio_formats="mp3 wma"
139 write_cmdline_objs="add_cmdline(write file_write)"
140 write_errlist_objs="write write_common file_write time fd string sched stdin
144 default_writer="FILE_WRITE"
146 client_cmdline_objs="add_cmdline(client)"
147 client_errlist_objs="client net string fd sched stdin stdout time
148 client_common buffer_tree crypt_common"
151 gui_cmdline_objs="add_cmdline(gui)"
152 gui_errlist_objs="exec signal string stat ringbuffer fd"
153 gui_other_objs="gui gui_theme"
154 gui_objs="$gui_cmdline_objs $gui_errlist_objs $gui_other_objs"
156 fade_cmdline_objs="add_cmdline(fade)"
157 fade_errlist_objs="fade exec string fd"
160 ########################################################################### snprintf
161 # ===========================================================================
162 # http://www.nongnu.org/autoconf-archive/ax_func_snprintf.html
163 # ===========================================================================
171 # Checks for a fully C99 compliant snprintf, in particular checks whether
172 # it does bounds checking and returns the correct string length; does the
173 # same check for vsnprintf. If no working snprintf or vsnprintf is found,
174 # it prints an error message and aborts.
178 # Copyright (c) 2008 Ruediger Kuhlmann <info@ruediger-kuhlmann.de>
180 # Copying and distribution of this file, with or without modification, are
181 # permitted in any medium without royalty provided the copyright notice
182 # and this notice are preserved.
184 AU_ALIAS([AC_FUNC_SNPRINTF], [AX_FUNC_SNPRINTF])
185 AC_DEFUN([AX_FUNC_SNPRINTF],
186 [AC_CHECK_FUNCS(snprintf vsnprintf)
187 AC_MSG_CHECKING(for working snprintf)
188 AC_CACHE_VAL(ac_cv_have_working_snprintf,
194 char bufs[5] = { 'x', 'x', 'x', '\0', '\0' };
195 char bufd[5] = { 'x', 'x', 'x', '\0', '\0' };
197 i = snprintf (bufs, 2, "%s", "111");
198 if (strcmp (bufs, "1")) exit (1);
199 if (i != 3) exit (1);
200 i = snprintf (bufd, 2, "%d", 111);
201 if (strcmp (bufd, "1")) exit (1);
202 if (i != 3) exit (1);
204 }], ac_cv_have_working_snprintf=yes, ac_cv_have_working_snprintf=no, ac_cv_have_working_snprintf=cross)])
205 AC_MSG_RESULT([$ac_cv_have_working_snprintf])
206 AC_MSG_CHECKING(for working vsnprintf)
207 AC_CACHE_VAL(ac_cv_have_working_vsnprintf,
212 int my_vsnprintf (char *buf, const char *tmpl, ...)
216 va_start (args, tmpl);
217 i = vsnprintf (buf, 2, tmpl, args);
224 char bufs[5] = { 'x', 'x', 'x', '\0', '\0' };
225 char bufd[5] = { 'x', 'x', 'x', '\0', '\0' };
227 i = my_vsnprintf (bufs, "%s", "111");
228 if (strcmp (bufs, "1")) exit (1);
229 if (i != 3) exit (1);
230 i = my_vsnprintf (bufd, "%d", 111);
231 if (strcmp (bufd, "1")) exit (1);
232 if (i != 3) exit (1);
234 }], ac_cv_have_working_vsnprintf=yes, ac_cv_have_working_vsnprintf=no, ac_cv_have_working_vsnprintf=cross)])
235 AC_MSG_RESULT([$ac_cv_have_working_vsnprintf])
236 if test x$ac_cv_have_working_snprintf$ac_cv_have_working_vsnprintf != "xyesyes"; then
237 AC_MSG_ERROR([fatal: buggy snprintf() detected])
240 ########################################################################### osl
242 OLD_CPPFLAGS="$CPPFLAGS"
243 OLD_LD_FLAGS="$LDFLAGS"
245 AC_ARG_WITH(osl_headers, [AC_HELP_STRING(--with-osl-headers=dir,
246 [look for osl.h also in dir])])
247 if test -n "$with_osl_headers"; then
248 osl_cppflags="-I$with_osl_headers"
249 CPPFLAGS="$CPPFLAGS $osl_cppflags"
251 AC_ARG_WITH(osl_libs, [AC_HELP_STRING(--with-osl-libs=dir,
252 [look for libosl also in dir])])
253 if test -n "$with_osl_libs"; then
254 osl_libs="-L$with_osl_libs"
255 LDFLAGS="$LDFLAGS $osl_libs"
258 AC_CHECK_HEADER(osl.h, [], have_osl=no)
259 AC_CHECK_LIB([osl], [osl_open_table], [], have_osl=no)
260 if test "$have_osl" = "no"; then
261 AC_MSG_WARN([libosl not found, can not build para_server.
263 http://systemlinux.org/~maan/osl
265 git clone git://git.tuebingen.mpg.de/osl
268 extras="$extras server"
269 executables="$executables server"
270 AC_SUBST(osl_cppflags)
271 server_ldflags="$server_ldflags $osl_libs -losl"
273 CPPFLAGS="$OLD_CPPFLAGS"
274 LDFLAGS="$OLD_LDFLAGS"
276 ########################################################################### crypto
277 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
278 Force using crypto library "lib". This package requires either
279 openssl or libgcrypt being installed. Possible values for "lib"
280 are thus "openssl" and "gcrypt". If this option is not given,
281 openssl is tried first. If openssl was not found, gcrypt is
284 case "$enable_cryptolib" in
285 "openssl") check_openssl="yes"; check_gcrypt="no";;
286 "gcrypt") check_openssl="no"; check_gcrypt="yes";;
287 "") check_openssl="yes"; check_gcrypt="yes";;
288 *) AC_MSG_ERROR([invalid value "$enable_cryptolib" for --enable-cryptolib]);;
290 ###################################################################### openssl
291 if test "$check_openssl" = "yes"; then
292 OLD_CPPFLAGS="$CPPFLAGS"
293 OLD_LD_FLAGS="$LDFLAGS"
296 AC_ARG_WITH(openssl_headers, [AC_HELP_STRING(--with-openssl-headers=dir,
297 [look for openssl headers also in dir])])
298 if test -n "$with_openssl_headers"; then
299 openssl_cppflags="-I$with_openssl_headers"
300 CPPFLAGS="$CPPFLAGS $openssl_cppflags"
302 AC_ARG_WITH(openssl_libs, [AC_HELP_STRING(--with-openssl-libs=dir,
303 [look for openssl libraries also in dir])])
304 if test -n "$with_openssl_libs"; then
305 openssl_libs="-L$with_openssl_libs"
306 LDFLAGS="$LDFLAGS $openssl_libs"
308 AC_CHECK_HEADER(openssl/ssl.h, [], [have_openssl="no"])
309 AC_CHECK_LIB([crypto], [RAND_bytes], [], [have_openssl="no"])
310 if test "$have_openssl" = "no" -a -z "$with_openssl_headers$with_openssl_libs"; then
311 # try harder: openssl is sometimes installed in /usr/local/ssl
312 openssl_cppflags="-I/usr/local/ssl/include"
313 CPPFLAGS="$CPPFLAGS $openssl_cppflags"
314 openssl_libs="-L/usr/local/ssl/lib"
315 LDFLAGS="$LDFLAGS $openssl_libs"
317 unset ac_cv_header_openssl_ssl_h 2> /dev/null
318 unset ac_cv_lib_crypto_RAND_bytes 2> /dev/null
319 AC_CHECK_HEADER(openssl/ssl.h, [have_openssl="yes"], [])
320 if test "$have_openssl" = "yes"; then
321 AC_CHECK_LIB([crypto], [RAND_bytes], [], [have_openssl="no"])
324 if test "$have_openssl" = "yes"; then
325 AC_DEFINE(HAVE_OPENSSL, 1, [define to 1 to turn on openssl support])
326 AC_SUBST(openssl_cppflags)
327 openssl_libs="$openssl_libs -lssl -lcrypto"
328 server_ldflags="$server_ldflags $openssl_libs"
329 client_ldflags="$client_ldflags $openssl_libs"
330 audiod_ldflags="$audiod_ldflags $openssl_libs"
332 all_errlist_objs="$all_errlist_objs crypt"
333 server_errlist_objs="$server_errlist_objs crypt"
334 client_errlist_objs="$client_errlist_objs crypt"
335 audiod_errlist_objs="$audiod_errlist_objs crypt"
339 AC_MSG_WARN([openssl libraries not found])
341 CPPFLAGS="$OLD_CPPFLAGS"
342 LDFLAGS="$OLD_LDFLAGS"
347 ########################################################################### gcrypt
348 if test "$check_gcrypt" = "yes"; then
349 OLD_CPPFLAGS="$CPPFLAGS"
350 OLD_LD_FLAGS="$LDFLAGS"
353 AC_ARG_WITH(gcrypt_headers, [AC_HELP_STRING(--with-gcrypt-headers=dir,
354 [look for gcrypt headers also in dir])])
355 if test -n "$with_gcrypt_headers"; then
356 gcrypt_cppflags="-I$with_gcrypt_headers"
357 CPPFLAGS="$CPPFLAGS $gcrypt_cppflags"
359 AC_ARG_WITH(gcrypt_libs, [AC_HELP_STRING(--with-gcrypt-libs=dir,
360 [look for libgcrypt also in dir])])
361 if test -n "$with_gcrypt_libs"; then
362 gcrypt_libs="-L$with_gcrypt_libs"
363 LDFLAGS="$LDFLAGS $gcrypt_libs"
365 AC_CHECK_HEADER(gcrypt.h, [], [have_gcrypt="no"])
366 AC_CHECK_LIB([gcrypt], [gcry_randomize], [], [have_gcrypt="no"])
367 if test "$have_gcrypt" = "yes"; then
368 AC_DEFINE(HAVE_GCRYPT, 1, [define to 1 to turn on gcrypt support])
369 AC_SUBST(gcrypt_cppflags)
370 gcrypt_libs="$gcrypt_libs -lgcrypt"
371 server_ldflags="$server_ldflags $gcrypt_libs"
372 client_ldflags="$client_ldflags $gcrypt_libs"
373 audiod_ldflags="$audiod_ldflags $gcrypt_libs"
375 all_errlist_objs="$all_errlist_objs gcrypt"
376 server_errlist_objs="$server_errlist_objs gcrypt"
377 client_errlist_objs="$client_errlist_objs gcrypt"
378 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
380 AC_MSG_WARN([grypt library not found])
382 CPPFLAGS="$OLD_CPPFLAGS"
383 LDFLAGS="$OLD_LDFLAGS"
388 ###########################################################################
389 if test "$have_openssl" = "no" -a "$have_gcrypt" = "no"; then
390 AC_MSG_ERROR([neither openssl nor gcrypt usable])
392 ########################################################################### libsocket
393 AC_CHECK_LIB([c], [socket],
395 [socket_lib="-lsocket"]
397 server_ldflags="$server_ldflags $socket_lib"
398 client_ldflags="$client_ldflags $socket_lib"
399 audioc_ldflags="$audioc_ldflags $socket_lib"
400 audiod_ldflags="$audiod_ldflags $socket_lib"
401 recv_ldflags="$recv_ldflags $socket_lib"
402 AC_SEARCH_LIBS([connect],[socket],[],[
403 AC_MSG_ERROR([Fatal: Did not find connect().])
405 ########################################################################### libnsl
406 AC_CHECK_LIB([c], [gethostbyname],
410 server_ldflags="$server_ldflags $nsl_lib"
411 client_ldflags="$client_ldflags $nsl_lib"
412 audioc_ldflags="$audioc_ldflags $nsl_lib"
413 recv_ldflags="$recv_ldflags $nsl_lib"
414 AC_SEARCH_LIBS([inet_ntoa],[nsl],[],[
415 AC_MSG_ERROR([Fatal: Did not find inet_ntoa().])
417 ########################################################################### ucred
418 AC_MSG_CHECKING(for struct ucred)
421 #include <sys/types.h>
422 #include <sys/socket.h>
424 struct ucred sucred; sucred.pid=0;
425 ],[have_ucred=yes],[have_ucred=no])
426 AC_MSG_RESULT($have_ucred)
427 if test ${have_ucred} = yes; then
428 AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
431 ########################################################################### curses
433 OLD_CPPFLAGS="$CPPFLAGS"
434 OLD_LD_FLAGS="$LDFLAGS"
436 AC_ARG_WITH(curses_headers, [AC_HELP_STRING(--with-curses-headers=dir,
437 [look for curses.h also in dir])])
438 if test -n "$with_curses_headers"; then
439 curses_cppflags="-I$with_curses_headers"
440 CPPFLAGS="$CPPFLAGS $curses_cppflags"
442 AC_ARG_WITH(curses_libs, [AC_HELP_STRING(--with-curses-libs=dir,
443 [look for libcurses also in dir])])
444 if test -n "$with_curses_libs"; then
445 curses_libs="-L$with_curses_libs"
446 LDFLAGS="$LDFLAGS $curses_libs"
448 AC_CHECK_HEADER(curses.h, [], [
451 AC_CHECK_LIB([curses], [initscr], [], [
454 if test "$have_curses" = "yes"; then
455 AC_SUBST(curses_cppflags)
456 AC_DEFINE(HAVE_NCURSES, 1, [define to 1 to turn on curses support])
458 executables="$executables gui"
460 AC_MSG_WARN([cannot build para_gui])
462 CPPFLAGS="$OLD_CPPFLAGS"
463 LDFLAGS="$OLD_LDFLAGS"
466 ########################################################################### ip_mreqn
467 AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
474 ],[have_ip_mreqn=yes],[have_ip_mreqn=no])
475 AC_MSG_RESULT($have_ip_mreqn)
476 if test ${have_ip_mreqn} = yes; then
477 AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
479 ########################################################################### osx
481 AC_MSG_CHECKING(for CoreAudio (MacOs))
483 #include <CoreAudio/CoreAudio.h>
486 ],[have_core_audio=yes],[have_core_audio=no])
487 AC_MSG_RESULT($have_core_audio)
488 if test ${have_core_audio} = yes; then
489 f1="-framework CoreAudio"
490 f2="-framework AudioToolbox"
491 f3="-framework AudioUnit"
492 f4="-framework CoreServices"
495 all_errlist_objs="$all_errlist_objs osx_write"
496 audiod_errlist_objs="$audiod_errlist_objs osx_write"
497 audiod_cmdline_objs="$audiod_cmdline_objs osx_write.cmdline"
498 audiod_ldflags="$audiod_ldflags $f"
500 write_errlist_objs="$write_errlist_objs osx_write"
501 write_cmdline_objs="$write_cmdline_objs osx_write.cmdline"
502 write_ldflags="$write_ldflags $f"
503 writers="$writers osx"
504 default_writer="OSX_WRITE"
505 AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
507 ########################################################### ogg/vorbis/speex
509 OLD_CPPFLAGS="$CPPFLAGS"
510 OLD_LD_FLAGS="$LDFLAGS"
512 AC_ARG_WITH(ogg_headers, [AC_HELP_STRING(--with-ogg-headers=dir,
513 [look for ogg headers also in dir])])
514 AC_ARG_WITH(ogg_libs, [AC_HELP_STRING(--with-ogg-libs=dir,
515 [look for ogg libs also in dir])])
516 AC_ARG_WITH(vorbis_headers, [AC_HELP_STRING(--with-vorbis-headers=dir,
517 [look for vorbis headers also in dir])])
518 AC_ARG_WITH(vorbis_libs, [AC_HELP_STRING(--with-vorbis-libs=dir,
519 [look for vorbis libs also in dir])])
520 AC_ARG_WITH(speex_headers, [AC_HELP_STRING(--with-speex-headers=dir,
521 [look for speex headers also in dir])])
522 AC_ARG_WITH(speex_libs, [AC_HELP_STRING(--with-speex-libs=dir,
523 [look for speex libs also in dir])])
525 if test -n "$with_ogg_headers"; then
526 ogg_cppflags="-I$with_ogg_headers"
527 CPPFLAGS="$CPPFLAGS $ogg_cppflags"
529 if test -n "$with_ogg_libs"; then
530 ogg_libs="-L$with_ogg_libs"
531 LDFLAGS="$LDFLAGS $ogg_libs"
533 AC_CHECK_HEADERS([ogg/ogg.h], [], [ have_ogg="no"; ])
534 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [ have_ogg="no" ])
538 if test "$have_ogg" = "yes"; then
540 if test -n "$with_vorbis_headers"; then
541 vorbis_cppflags="-I$with_vorbis_headers"
542 CPPFLAGS="$CPPFLAGS $vorbis_cppflags"
544 if test -n "$with_vorbis_libs"; then
545 vorbis_libs="-L$with_vorbis_libs"
546 LDFLAGS="$LDFLAGS $vorbis_libs"
548 AC_CHECK_HEADERS([vorbis/codec.h], [], [ have_vorbis="no" ])
549 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [ have_vorbis="no" ])
552 if test -n "$with_speex_headers"; then
553 speex_cppflags="-I$with_speex_headers"
554 CPPFLAGS="$CPPFLAGS $speex_cppflags"
556 if test -n "$with_speex_libs"; then
557 speex_libs="-L$with_speex_libs"
558 LDFLAGS="$LDFLAGS $speex_libs"
560 AC_CHECK_LIB([speex], [speex_decoder_init], [], [ have_speex="no" ])
561 AC_CHECK_HEADERS([speex/speex.h], [], [ have_speex="no" ])
567 msg="support in para_server/para_filter/para_afh"
568 if test "$have_vorbis" = "yes" || test "$have_speex" = "yes"; then
569 AC_SUBST(ogg_cppflags)
570 ogg_libs="$ogg_libs -logg"
571 if test "$OSTYPE" = "Darwin"; then
572 ogg_libs="-Wl,-bind_at_load $ogg_libs"
574 server_ldflags="$server_ldflags $ogg_libs"
575 filter_ldflags="$filter_ldflags $ogg_libs"
576 audiod_ldflags="$audiod_ldflags $ogg_libs"
577 afh_ldflags="$afh_ldflags $ogg_libs"
578 all_errlist_objs="$all_errlist_objs ogg_afh_common"
579 afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
580 server_errlist_objs="$server_errlist_objs ogg_afh_common"
582 AC_MSG_WARN([vorbis/speex require ogg])
584 if test "$have_vorbis" = "yes"; then
585 all_errlist_objs="$all_errlist_objs oggdec_filter ogg_afh"
586 AC_DEFINE(HAVE_OGGVORBIS, 1, define to 1 to turn on ogg/vorbis support)
587 filters="$filters oggdec"
588 vorbis_libs="-lvorbis -lvorbisfile"
589 server_ldflags="$server_ldflags $vorbis_libs"
590 filter_ldflags="$filter_ldflags $vorbis_libs"
591 audiod_ldflags="$audiod_ldflags $vorbis_libs"
592 afh_ldflags="$afh_ldflags $vorbis_libs"
594 server_errlist_objs="$server_errlist_objs ogg_afh"
595 filter_errlist_objs="$filter_errlist_objs oggdec_filter"
596 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
597 afh_errlist_objs="$afh_errlist_objs ogg_afh"
599 audiod_audio_formats="$audiod_audio_formats ogg"
600 server_audio_formats="$server_audio_formats ogg"
602 AC_MSG_WARN([no ogg/vorbis $msg])
604 if test "$have_speex" = "yes"; then
605 all_errlist_objs="$all_errlist_objs spxdec_filter spx_afh spx_common"
606 AC_DEFINE(HAVE_SPEEX, 1, define to 1 to turn on ogg/speex support)
607 filters="$filters spxdec"
609 server_ldflags="$server_ldflags $speex_libs"
610 filter_ldflags="$filter_ldflags $speex_libs"
611 audiod_ldflags="$audiod_ldflags $speex_libs"
612 afh_ldflags="$afh_ldflags $speex_libs"
614 server_errlist_objs="$server_errlist_objs spx_afh spx_common"
615 filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
616 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
617 afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
619 audiod_audio_formats="$audiod_audio_formats spx"
620 server_audio_formats="$server_audio_formats spx"
622 AC_MSG_WARN([no ogg/speex $msg])
624 CPPFLAGS="$OLD_CPPFLAGS"
625 LDFLAGS="$OLD_LDFLAGS"
627 ########################################################################### faad
629 OLD_CPPFLAGS="$CPPFLAGS"
630 OLD_LD_FLAGS="$LDFLAGS"
632 AC_ARG_WITH(faad_headers, [AC_HELP_STRING(--with-faad-headers=dir,
633 [look for neaacdec.h also in dir])])
634 if test -n "$with_faad_headers"; then
635 faad_cppflags="-I$with_faad_headers"
636 CPPFLAGS="$CPPFLAGS $faad_cppflags"
638 AC_ARG_WITH(faad_libs, [AC_HELP_STRING(--with-faad-libs=dir,
639 [look for libfaad also in dir])])
640 if test -n "$with_faad_libs"; then
641 faad_libs="-L$with_faad_libs"
642 LDFLAGS="$LDFLAGS $faad_libs"
644 AC_CHECK_HEADER(neaacdec.h, [], have_faad=no)
645 AC_CHECK_LIB([faad], [NeAACDecOpen], [], have_faad=no)
646 if test "$have_faad" = "yes"; then
647 AC_DEFINE(HAVE_FAAD, 1, define to 1 if you want to build the aacdec filter)
648 all_errlist_objs="$all_errlist_objs aac_common aacdec_filter aac_afh"
649 filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
650 afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
651 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
652 server_errlist_objs="$server_errlist_objs aac_afh aac_common"
653 server_ldflags="$server_ldflags $faad_libs -lfaad"
654 filter_ldflags="$filter_ldflags $faad_libs -lfaad"
655 audiod_ldflags="$audiod_ldflags $faad_libs -lfaad"
656 afh_ldflags="$afh_ldflags $faad_libs -lfaad"
657 audiod_audio_formats="$audiod_audio_formats aac"
658 server_audio_formats="$server_audio_formats aac"
659 filters="$filters aacdec"
660 AC_SUBST(faad_cppflags)
662 AC_MSG_WARN([no aac support in para_audiod/para_filter])
664 CPPFLAGS="$OLD_CPPFLAGS"
665 LDFLAGS="$OLD_LDFLAGS"
667 ########################################################################### mad
669 OLD_CPPFLAGS="$CPPFLAGS"
670 OLD_LD_FLAGS="$LDFLAGS"
673 AC_ARG_WITH(mad_headers, [AC_HELP_STRING(--with-mad-headers=dir,
674 [look for mad.h also in dir])])
675 if test -n "$with_mad_headers"; then
676 mad_cppflags="-I$with_mad_headers"
677 CPPFLAGS="$CPPFLAGS $mad_cppflags"
679 AC_ARG_WITH(mad_libs, [AC_HELP_STRING(--with-mad-libs=dir,
680 [look for libmad also in dir])])
681 if test -n "$with_mad_libs"; then
682 mad_libs="-L$with_mad_libs"
683 LDFLAGS="$LDFLAGS $mad_libs"
685 AC_CHECK_HEADERS([mad.h], [], [
688 AC_CHECK_LIB([mad], [mad_stream_init], [], [
691 if test "$have_mad" = "yes"; then
692 AC_DEFINE(HAVE_MAD, 1, define to 1 if you want to build the mp3dec filter)
693 filter_cmdline_objs="$filter_cmdline_objs add_cmdline(mp3dec_filter)"
694 audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(mp3dec_filter)"
695 all_errlist_objs="$all_errlist_objs mp3dec_filter"
696 filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
697 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
698 filter_ldflags="$filter_ldflags $mad_libs -lmad"
699 audiod_ldflags="$audiod_ldflags $mad_libs -lmad"
700 audiod_audio_formats="$audiod_audio_formats mp3"
701 filters="$filters mp3dec"
702 AC_SUBST(mad_cppflags)
704 AC_MSG_WARN([no mp3dec support in para_audiod/para_filter])
706 CPPFLAGS="$OLD_CPPFLAGS"
707 LDFLAGS="$OLD_LDFLAGS"
709 ###################################################################### libid3tag
710 AC_MSG_CHECKING(for libid3tag)
714 struct id3_tag t = {.flags = 0};
715 ],[have_libid3tag=yes],[have_libid3tag=no])
716 AC_MSG_RESULT($have_libid3tag)
717 if test ${have_libid3tag} = yes; then
718 AC_DEFINE(HAVE_LIBID3TAG, 1, define to 1 you have libid3tag)
719 server_ldflags="$server_ldflags -lid3tag"
720 afh_ldflags="$afh_ldflags -lid3tag"
722 AC_MSG_WARN([no support for id3v2 tags])
724 ########################################################################### oss
725 OLD_CPPFLAGS="$CPPFLAGS"
726 OLD_LD_FLAGS="$LDFLAGS"
730 msg="=> will not build para_fade/oss writer"
732 AC_CHECK_HEADER(sys/soundcard.h, [
733 extras="$extras fade"
734 executables="$executables fade"
735 all_errlist_objs="$all_errlist_objs oss_write"
736 audiod_errlist_objs="$audiod_errlist_objs oss_write"
737 audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(oss_write)"
739 write_errlist_objs="$write_errlist_objs oss_write"
740 write_cmdline_objs="$write_cmdline_objs add_cmdline(oss_write)"
741 writers="$writers oss"
742 default_writer="OSS_WRITE"
743 AC_CHECK_LIB(ossaudio, _oss_ioctl, [
744 audiod_ldflags="$audiod_ldflags -lossaudio"
745 write_ldflags="$write_ldflags -lossaudio"
746 fade_ldflags="$write_ldflags -lossaudio"
752 AC_MSG_WARN([no sys/soundcard.h $msg])
755 CPPFLAGS="$OLD_CPPFLAGS"
756 LDFLAGS="$OLD_LDFLAGS"
759 ########################################################################### alsa
760 OLD_CPPFLAGS="$CPPFLAGS"
761 OLD_LD_FLAGS="$LDFLAGS"
764 msg="=> no alsa support for para_audiod/para_write"
765 if test "$OSTYPE" != "Linux"; then
770 if test "$have_alsa" = "yes"; then
771 AC_CHECK_HEADERS([alsa/asoundlib.h], [], [
773 AC_MSG_WARN([no alsa/asoundlib $msg])
777 if test "$have_alsa" = "yes"; then
778 AC_CHECK_LIB([asound], [snd_pcm_open], [], [
780 AC_MSG_WARN([no libasound $msg])
784 if test "$have_alsa" = "yes"; then
785 all_errlist_objs="$all_errlist_objs alsa_write"
786 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
787 audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(alsa_write)"
788 audiod_ldflags="$audiod_ldflags -lasound"
790 write_errlist_objs="$write_errlist_objs alsa_write"
791 write_cmdline_objs="$write_cmdline_objs add_cmdline(alsa_write)"
792 write_ldflags="$write_ldflags -lasound"
793 writers="$writers alsa"
794 default_writer="ALSA_WRITE"
797 CPPFLAGS="$OLD_CPPFLAGS"
798 LDFLAGS="$OLD_LDFLAGS"
800 ########################################################################### libao
801 OLD_CPPFLAGS="$CPPFLAGS"
802 OLD_LD_FLAGS="$LDFLAGS"
806 AC_ARG_WITH(ao_headers, [AC_HELP_STRING(--with-ao-headers=dir,
807 [look for ao/ao.h also in dir])])
808 if test -n "$with_ao_headers"; then
809 ao_cppflags="-I$with_ao_headers"
810 CPPFLAGS="$CPPFLAGS $ao_cppflags"
812 AC_ARG_WITH(ao_libs, [AC_HELP_STRING(--with-ao-libs=dir,
813 [look for libao also in dir])])
814 if test -n "$with_ao_libs"; then
815 ao_libs="-L$with_ao_libs"
816 LDFLAGS="$LDFLAGS $ao_libs"
818 msg="no libao support for para_audiod/para_write"
819 AC_CHECK_HEADERS([ao/ao.h], [
822 AC_MSG_WARN([ao.h not found, $msg])
824 if test "$have_ao" = "yes"; then
825 AC_CHECK_LIB([ao], [ao_initialize], [], [
827 AC_MSG_WARN([ao lib not found or not working, $msg])
830 if test "$have_ao" = "yes"; then
831 AC_CHECK_HEADERS([pthread.h], [
834 AC_MSG_WARN([pthread.h not found, $msg])
837 if test "$have_ao" = "yes"; then
838 AC_CHECK_LIB([pthread], [pthread_create], [], [
840 AC_MSG_WARN([pthread lib not found or not working, $msg])
843 if test "$have_ao" = "yes"; then
844 all_errlist_objs="$all_errlist_objs ao_write"
845 audiod_errlist_objs="$audiod_errlist_objs ao_write"
846 audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(ao_write)"
847 audiod_ldflags="$audiod_ldflags -lao -lpthread"
849 write_errlist_objs="$write_errlist_objs ao_write"
850 write_cmdline_objs="$write_cmdline_objs add_cmdline(ao_write)"
851 write_ldflags="$write_ldflags $ao_libs -lao -lpthread"
852 writers="$writers ao"
853 AC_SUBST(ao_cppflags)
856 CPPFLAGS="$OLD_CPPFLAGS"
857 LDFLAGS="$OLD_LDFLAGS"
862 AC_SUBST(install_sh, [$INSTALL])
863 AC_CONFIG_FILES([Makefile])
866 AC_DEFUN([add_dot_o],[$(for i in $@; do printf "$i.o "; done)])
867 AC_DEFUN([add_para],[$(for i in $@; do printf "para_$i "; done)])
868 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) }])
869 ############################################################# error2.h
870 AC_MSG_NOTICE(creating error2.h)
871 for i in $executables; do
873 eval echo \$${i}_errlist_objs
874 done | ./error2.pl > error2.h
875 for obj in $all_errlist_objs; do
876 SS="$SS SS_$(echo $obj | tr 'a-z' 'A-Z'),"
878 AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
880 [list of all objects that use the paraslash error facility]
883 ################################################################## status items
885 status_items="basename status num_played mtime bitrate frequency file_size
886 status_flags format score techinfo afs_mode
887 attributes_txt decoder_flags audiod_status play_time attributes_bitmap
888 offset seconds_total stream_start current_time audiod_uptime image_id
889 lyrics_id duration directory lyrics_name image_name path hash channels
890 last_played num_chunks chunk_time amplification artist title year album
894 for i in $status_items; do
895 result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
897 AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
898 [enum of all status items])
901 for i in $status_items; do
902 result="$result \"$i\", "
904 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
905 [char * array of all status items])
907 AC_DEFINE_UNQUOTED(SERVER_AUDIO_FORMATS, "$server_audio_formats",
908 [formats supported by para_server and para_afh])
910 AC_SUBST(executables, add_para($executables))
912 recv_objs="$recv_cmdline_objs $recv_errlist_objs"
913 filter_objs="$filter_cmdline_objs $filter_errlist_objs"
914 audiod_objs="$audiod_cmdline_objs $audiod_errlist_objs"
915 server_objs="$server_cmdline_objs $server_errlist_objs"
916 write_objs="$write_cmdline_objs $write_errlist_objs"
917 client_objs="$client_cmdline_objs $client_errlist_objs"
918 audioc_objs="$audioc_cmdline_objs $audioc_errlist_objs"
919 afh_objs="$afh_cmdline_objs $afh_errlist_objs"
920 fade_objs="$fade_cmdline_objs $fade_errlist_objs"
922 AC_SUBST(recv_objs, add_dot_o($recv_objs))
923 AC_SUBST(recv_ldflags, $recv_ldflags)
924 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
925 errors used by para_recv)
927 AC_SUBST(filter_objs, add_dot_o($filter_objs))
928 AC_SUBST(filter_ldflags, $filter_ldflags)
929 AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
930 objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
932 AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
933 AC_SUBST(audiod_ldflags, $audiod_ldflags)
934 AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
935 errors used by para_audiod)
937 AC_SUBST(server_objs, add_dot_o($server_objs))
938 AC_SUBST(server_ldflags, $server_ldflags)
939 AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS,
940 objlist_to_errlist($server_errlist_objs), errors used by para_server)
942 AC_SUBST(afh_objs, add_dot_o($afh_objs))
943 AC_SUBST(afh_ldflags, $afh_ldflags)
944 AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS,
945 objlist_to_errlist($afh_errlist_objs), errors used by para_afh)
947 AC_SUBST(write_objs, add_dot_o($write_objs))
948 AC_SUBST(write_ldflags, $write_ldflags)
949 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
950 objlist_to_errlist($write_errlist_objs), errors used by para_write)
952 AC_SUBST(client_objs, add_dot_o($client_objs))
953 AC_SUBST(client_ldflags, $client_ldflags)
954 AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
955 objlist_to_errlist($client_errlist_objs), errors used by para_client)
957 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
958 AC_SUBST(audioc_ldflags, $audioc_ldflags)
959 AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
960 objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
962 AC_SUBST(gui_objs, add_dot_o($gui_objs))
963 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
964 objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
966 AC_SUBST(fade_objs, add_dot_o($fade_objs))
967 AC_SUBST(fade_ldflags, $fade_ldflags)
968 AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
969 objlist_to_errlist($fade_errlist_objs), errors used by para_fade)
972 enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
973 AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
974 enum of supported filters)
975 inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
976 AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
977 array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
978 AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
980 enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
981 AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
982 enum of supported writers)
983 AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
984 names="$(for i in $writers; do printf \"$i\",' ' ; done)"
985 AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
986 inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
987 AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
988 array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
989 AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
991 enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
992 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
993 enum of audio formats supported by audiod)
994 names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
995 AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
999 paraslash configuration:
1000 ~~~~~~~~~~~~~~~~~~~~~~~~
1001 unix socket credentials: $have_ucred
1002 audio formats supported by para_server/para_afh: $server_audio_formats
1003 id3 version2 support: $have_libid3tag
1004 filters supported by para_audiod/para_filter: $filters
1005 writers supported by para_audiod/para_write: $writers
1006 optional executables: $extras