]> git.tuebingen.mpg.de Git - paraslash.git/blob - configure.ac
Let para_play depend on libreadline.
[paraslash.git] / configure.ac
1 AC_PREREQ([2.61])
2
3 AC_INIT([paraslash], [m4_esyscmd_s(./GIT-VERSION-GEN)],
4         [maan@tuebingen.mpg.de], [], [http://people.tuebingen.mpg.de/maan/paraslash/])
5 AC_CONFIG_HEADERS([config.h])
6
7 AC_CONFIG_FILES([Makefile])
8 AC_DEFUN([add_dot_o],[$(for i in $@; do printf "$i.o "; done)])
9 AC_DEFUN([LIB_ARG_WITH], [
10         AC_ARG_WITH($1-headers, [AS_HELP_STRING(--with-$1-headers=dir,
11                 [look for $1 headers in dir])])
12         AC_ARG_WITH($1-libs, [AS_HELP_STRING(--with-$1-libs=dir,
13                 [look for $1 libraries in dir])])
14         if test -n "$with_$1_headers"; then
15                 $1_cppflags="-I$with_$1_headers"
16                 CPPFLAGS="$CPPFLAGS $$1_cppflags"
17         fi
18         if test -n "$with_$1_libs"; then
19                 $1_ldflags="-L$with_$1_libs $2"
20         else
21                 $1_ldflags="$2"
22         fi
23         LDFLAGS="$LDFLAGS $$1_ldflags"
24 ])
25
26 AC_DEFUN([STASH_FLAGS], [
27         OLD_CPPFLAGS="$CPPFLAGS"
28         OLD_LDFLAGS="$LDFLAGS"
29         OLD_LIBS="$LIBS"
30 ])
31
32 AC_DEFUN([UNSTASH_FLAGS], [
33         CPPFLAGS="$OLD_CPPFLAGS"
34         LDFLAGS="$OLD_LDFLAGS"
35         LIBS="$OLD_LIBS"
36 ])
37 AC_DEFUN([LIB_SUBST_FLAGS], [
38         if test "$HAVE_[]m4_toupper([$1])" = 'yes'; then
39                 AC_DEFINE(HAVE_[]m4_toupper([$1]), 1,
40                         define to 1 to turn on $1 support)
41         else
42                 $1_cppflags=
43                 $1_ldflags=
44         fi
45         AC_SUBST(HAVE_[]m4_toupper([$1]))
46         AC_SUBST($1_cppflags)
47         AC_SUBST($1_ldflags)
48 ])
49 AC_DEFUN([REQUIRE_EXECUTABLE], [
50         AC_PATH_PROG(m4_toupper([$1]), [$1])
51         test -z "$m4_toupper([$1])" && AC_MSG_ERROR(
52                 [$1 is required to build this package])
53 ])
54
55 AC_USE_SYSTEM_EXTENSIONS
56 AC_C_BIGENDIAN()
57 AC_PROG_CC
58 AC_PROG_CPP
59
60 REQUIRE_EXECUTABLE([bison])
61 REQUIRE_EXECUTABLE([flex])
62 REQUIRE_EXECUTABLE([m4])
63
64 executables="recv filter audioc write afh"
65 ########################################################################### osl
66 STASH_FLAGS
67 LIB_ARG_WITH([osl], [-losl])
68 HAVE_OSL=yes
69 AC_CHECK_HEADER(osl.h, [], [HAVE_OSL=no])
70 AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no])
71 LIB_SUBST_FLAGS(osl)
72 UNSTASH_FLAGS
73 ######################################################################## lopsub
74 HAVE_LOPSUB=yes
75 AC_PATH_PROG([LOPSUBGEN], [lopsubgen])
76 test -z "$LOPSUBGEN" && HAVE_LOPSUB=no
77 STASH_FLAGS
78 LIB_ARG_WITH([lopsub], [-llopsub])
79 AC_CHECK_HEADER(lopsub.h, [], [HAVE_LOPSUB=no])
80 AC_CHECK_LIB([lopsub], [lls_merge], [], [HAVE_LOPSUB=no])
81 if test $HAVE_LOPSUB = no; then AC_MSG_ERROR([
82         The lopsub library is required to build this software, but
83         the above checks indicate it is not installed on your system.
84         Run the following command to download a copy.
85                 git clone git://git.tuebingen.mpg.de/lopsub.git
86         Install the library, then run this configure script again.
87 ])
88 fi
89 LIB_SUBST_FLAGS([lopsub])
90 UNSTASH_FLAGS
91 ######################################################################## openssl
92 STASH_FLAGS
93 HAVE_OPENSSL=yes
94 LIB_ARG_WITH([openssl], [-lssl -lcrypto])
95 AC_CHECK_HEADER(openssl/ssl.h, [], [HAVE_OPENSSL=no])
96 AC_CHECK_LIB([crypto], [RAND_bytes], [], [HAVE_OPENSSL=no])
97 LIB_SUBST_FLAGS(openssl)
98 if test $HAVE_OPENSSL = yes; then
99         HAVE_RSA_SET0_KEY=yes
100         AC_CHECK_DECL([RSA_set0_key], [], [], [#include <openssl/rsa.h>])
101         AC_CHECK_LIB([crypto], [RSA_set0_key], [], [])
102         if test "$ac_cv_have_decl_RSA_set0_key" != "$ac_cv_lib_crypto_RSA_set0_key"; then
103                 AC_MSG_ERROR([openssl header/library mismatch])
104         fi
105         if test "$ac_cv_have_decl_RSA_set0_key" = yes; then
106                 AC_DEFINE([HAVE_RSA_SET0_KEY], [1], [openssl >= 1.1])
107         else
108                 AC_MSG_WARN([
109         Old openssl library detected. Support for openssl-1.0 and earlier
110         will be removed in the next major paraslash release. Please upgrade
111         your openssl installation.])
112         fi
113         HAVE_CRYPTO_CLEANUP_ALL_EX_DATA=yes
114         AC_CHECK_DECL([CRYPTO_cleanup_all_ex_data], [],
115                 [HAVE_CRYPTO_CLEANUP_ALL_EX_DATA=no],
116                 [#include <openssl/rsa.h>])
117         AC_CHECK_LIB([crypto], [CRYPTO_cleanup_all_ex_data], [],
118                 [HAVE_CRYPTO_CLEANUP_ALL_EX_DATA=no])
119         test $HAVE_CRYPTO_CLEANUP_ALL_EX_DATA = yes &&
120                 AC_DEFINE([HAVE_CRYPTO_CLEANUP_ALL_EX_DATA], [1],
121                         [not available on FreeBSD 12])
122         HAVE_OPENSSL_THREAD_STOP=yes
123         AC_CHECK_DECL([OPENSSL_thread_stop], [],
124                 [HAVE_OPENSSL_THREAD_STOP=no],
125                 [#include <openssl/crypto.h>])
126         AC_CHECK_LIB([crypto], [OPENSSL_thread_stop], [],
127                 [HAVE_OPENSSL_THREAD_STOP=no])
128         test $HAVE_OPENSSL_THREAD_STOP = yes &&
129                 AC_DEFINE([HAVE_OPENSSL_THREAD_STOP], [1],
130                         [not available on openssl-1.0])
131 fi
132 UNSTASH_FLAGS
133 ######################################################################### gcrypt
134 STASH_FLAGS
135 HAVE_GCRYPT=yes
136 LIB_ARG_WITH([gcrypt], [-lgcrypt])
137 AC_CHECK_HEADER(gcrypt.h, [], [HAVE_GCRYPT=no])
138 AC_CHECK_LIB([gcrypt], [gcry_randomize], [], [HAVE_GCRYPT=no])
139 LIB_SUBST_FLAGS(gcrypt)
140 UNSTASH_FLAGS
141 ######################################################################### crypto
142 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
143         Force using crypto library "lib". This package requires either
144         openssl or libgcrypt being installed. Possible values for "lib"
145         are thus "openssl" and "gcrypt". If this option is not given,
146         openssl is tried first. If openssl was not found, gcrypt is
147         tried next.])])
148
149 CRYPTOLIB="$enable_cryptolib"
150 case "$enable_cryptolib" in
151 "openssl")
152         test $HAVE_OPENSSL = no && AC_MSG_ERROR(openssl not found)
153         crypto_ldflags="$openssl_ldflags"
154         ;;
155 "gcrypt")
156         test $HAVE_GCRYPT = no && AC_MSG_ERROR(gcrypt not found)
157         crypto_ldflags="$gcrypt_ldflags"
158         ;;
159 "")
160         crypto_ldflags=
161         if test $HAVE_GCRYPT = yes; then
162                 CRYPTOLIB=gcrypt
163                 crypto_ldflags="$gcrypt_ldflags"
164         fi
165         if test $HAVE_OPENSSL = yes; then
166                 CRYPTOLIB=openssl
167                 crypto_ldflags="$openssl_ldflags"
168         fi
169         ;;
170 *)
171         AC_MSG_ERROR([invalid value "$enable_cryptolib" for --enable-cryptolib])
172         ;;
173 esac
174 AC_SUBST(crypto_ldflags)
175 ########################################################################## iconv
176 STASH_FLAGS
177 LIBS=
178 AC_SEARCH_LIBS([libiconv_open], [iconv],
179         [iconv_ldflags="$LIBS"],
180         []
181 )
182 AC_SUBST(iconv_ldflags)
183 AC_MSG_CHECKING([whether iconv needs const char ** cast])
184 AC_COMPILE_IFELSE([
185         AC_LANG_PROGRAM([
186                 #include <iconv.h>
187         ],[
188                 size_t iconv(iconv_t cd, const char **inbuf,
189                         size_t *inbytesleft, char **outbuf,
190                         size_t *outbytesleft);
191         ])
192 ],
193         [cast='(const char **)'; msg=yes],
194         [cast=; msg=no]
195 )
196 AC_DEFINE_UNQUOTED(ICONV_CAST, $cast, [cast for second arg to iconv()])
197 AC_MSG_RESULT($msg)
198 UNSTASH_FLAGS
199 ########################################################################### ucred
200 AC_CHECK_TYPE([struct ucred], [
201         AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
202 ], [], [
203         #include <sys/types.h>
204         #include <sys/socket.h>
205 ])
206 ################################################################### FNM_EXTMATCH
207 AC_MSG_CHECKING(for extended wildcard pattern matching)
208 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
209         #include <fnmatch.h>
210 ]], [[
211         unsigned n = FNM_EXTMATCH;
212 ]])], [have_fnm_extmatch=yes], [have_fnm_extmatch=no])
213 AC_MSG_RESULT($have_fnm_extmatch)
214 if test $have_fnm_extmatch = yes; then
215         AC_DEFINE(HAVE_FNM_EXTMATCH, 1, define to 1 if FNM_EXTMATCH is defined)
216 fi
217 ########################################################################### curses
218 STASH_FLAGS
219 LIB_ARG_WITH([curses], [])
220 HAVE_CURSES=yes
221 AC_CHECK_HEADER(curses.h, [], [HAVE_CURSES=no])
222 AC_SEARCH_LIBS([initscr], [ncursesw curses], [], [HAVE_CURSES=no])
223 curses_ldflags="$curses_ldflags $LIBS"
224 LIB_SUBST_FLAGS(curses)
225 UNSTASH_FLAGS
226 ########################################################################### ip_mreqn
227 AC_CHECK_TYPE([struct ip_mreqn], [
228         AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 if you have struct ip_mreqn)
229 ], [], [
230         #include <netdb.h>
231         #include <net/if.h>
232 ])
233 ########################################################################### ogg
234 STASH_FLAGS
235 LIB_ARG_WITH([ogg], [-logg])
236 HAVE_OGG=yes
237 AC_CHECK_HEADERS([ogg/ogg.h], [], [HAVE_OGG=no])
238 AC_CHECK_LIB([ogg], [ogg_stream_init], [], [HAVE_OGG=no])
239 AC_CHECK_LIB([ogg], [ogg_stream_flush_fill], [
240         AC_DEFINE(HAVE_OGG_STREAM_FLUSH_FILL, 1, [libogg >= 1.3.0])])
241 LIB_SUBST_FLAGS(ogg)
242 UNSTASH_FLAGS
243 ######################################################################### vorbis
244 STASH_FLAGS
245 LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
246 HAVE_VORBIS=yes
247 AC_CHECK_HEADERS([vorbis/codec.h], [], [HAVE_VORBIS=no])
248 AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [HAVE_VORBIS=no])
249 LIB_SUBST_FLAGS(vorbis)
250 UNSTASH_FLAGS
251 ######################################################################### speex
252 STASH_FLAGS
253 LIB_ARG_WITH([speex], [-lspeex])
254 HAVE_SPEEX=yes
255 AC_CHECK_HEADERS([speex/speex.h], [], [HAVE_SPEEX=no])
256 AC_CHECK_LIB([speex], [speex_decoder_init], [], [HAVE_SPEEX=no])
257 LIB_SUBST_FLAGS(speex)
258 UNSTASH_FLAGS
259 ######################################################################### opus
260 STASH_FLAGS
261 LIB_ARG_WITH([opus], [-lopus])
262 HAVE_OPUS=yes
263 AC_CHECK_HEADERS([opus/opus.h], [], [HAVE_OPUS=no])
264 AC_CHECK_LIB([opus], [opus_multistream_decode], [], [HAVE_OPUS=no])
265 LIB_SUBST_FLAGS(opus)
266 UNSTASH_FLAGS
267 ########################################################################### flac
268 STASH_FLAGS
269 LIB_ARG_WITH([flac], [-lFLAC -lm])
270 HAVE_FLAC=yes
271 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], HAVE_FLAC=no)
272 AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
273 LIB_SUBST_FLAGS(flac)
274 UNSTASH_FLAGS
275
276 # some helper functions for codecs which use the ogg container format
277 AC_DEFUN([NEED_OGG_OBJECTS], [{
278         test "$HAVE_OGG" = 'yes' -a \( \
279                  "$HAVE_VORBIS" = 'yes' \
280                 -o "$HAVE_SPEEX" = 'yes' \
281                 -o "$HAVE_OPUS" = 'yes' \
282                 -o "$HAVE_FLAC" = 'yes' \
283         \)
284 }])
285 AC_DEFUN([NEED_VORBIS_OBJECTS], [{
286         test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
287 }])
288 AC_DEFUN([NEED_SPEEX_OBJECTS], [{
289         test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
290 }])
291 AC_DEFUN([NEED_OPUS_OBJECTS], [{
292         test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
293 }])
294 AC_DEFUN([NEED_FLAC_OBJECTS], [{
295         test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
296 }])
297 ########################################################################### faad
298 STASH_FLAGS
299 LIB_ARG_WITH([faad], [-lfaad])
300 HAVE_FAAD=yes
301 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
302 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
303 LIB_SUBST_FLAGS(faad)
304 UNSTASH_FLAGS
305 ########################################################################### mad
306 STASH_FLAGS
307 LIB_ARG_WITH([mad], [-lmad])
308 HAVE_MAD=yes
309 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
310 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
311 LIB_SUBST_FLAGS(mad)
312 UNSTASH_FLAGS
313 ###################################################################### libid3tag
314 STASH_FLAGS
315 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
316 HAVE_ID3TAG=yes
317 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
318 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
319 LIB_SUBST_FLAGS(id3tag)
320 UNSTASH_FLAGS
321 ########################################################################### oss
322 STASH_FLAGS
323 LIB_ARG_WITH([oss], [])
324 AC_CHECK_HEADER(sys/soundcard.h, [HAVE_OSS=yes], [HAVE_OSS=no])
325 AC_CHECK_LIB(ossaudio, _oss_ioctl, [oss_ldflags="$oss_ldflags -lossaudio"], [])
326 LIB_SUBST_FLAGS(oss)
327 UNSTASH_FLAGS
328 ########################################################################### alsa
329 STASH_FLAGS
330 LIB_ARG_WITH([alsa], [-lasound])
331 HAVE_ALSA=yes
332 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
333 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
334 LIB_SUBST_FLAGS(alsa)
335 UNSTASH_FLAGS
336 ######################################################################### pthread
337 STASH_FLAGS
338 LIB_ARG_WITH([pthread], [-lpthread])
339 HAVE_PTHREAD=yes
340 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
341 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
342 LIB_SUBST_FLAGS(pthread)
343 UNSTASH_FLAGS
344 ########################################################################### libao
345 STASH_FLAGS
346 LIB_ARG_WITH([ao], [-lao])
347 HAVE_AO=yes
348 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
349 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
350 LIB_SUBST_FLAGS(ao)
351 UNSTASH_FLAGS
352 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
353 ######################################################################## readline
354 STASH_FLAGS
355 AC_SEARCH_LIBS([tgetent], [tinfo curses terminfo termcap])
356 LIB_ARG_WITH([readline], [-lreadline $LIBS])
357 HAVE_READLINE=yes
358 AC_CHECK_HEADER([readline/readline.h], [], [HAVE_READLINE=no])
359 AC_CHECK_LIB([readline], [rl_free_keymap], [], HAVE_READLINE=no)
360 AC_CHECK_DECL(
361         [rl_free_keymap],
362         [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
363         [],
364         [
365                 #include <stdio.h>
366                 #include <readline/readline.h>
367         ]
368 )
369 LIB_SUBST_FLAGS(readline)
370 UNSTASH_FLAGS
371 ############################################################# libsamplerate
372 STASH_FLAGS
373 LIB_ARG_WITH([samplerate], [-lsamplerate])
374 HAVE_SAMPLERATE=yes
375 AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
376 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
377 LIB_SUBST_FLAGS(samplerate)
378 UNSTASH_FLAGS
379 ######################################################################### ubsan
380 AC_ARG_ENABLE([ubsan], [AS_HELP_STRING(--enable-ubsan,
381         [Detect and report undefined behaviour.])],
382         [ENABLE_UBSAN=yes], [ENABLE_UBSAN=no])
383 AC_SUBST(ENABLE_UBSAN)
384 ######################################################################### server
385 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes && test -n "$BISON" && \
386                 test -n "$FLEX"; then
387         build_server="yes"
388         executables="$executables server upgrade_db"
389         server_errlist_objs="
390                 server
391                 afh_common
392                 mp3_afh
393                 vss
394                 command
395                 net
396                 string
397                 signal
398                 time
399                 daemon
400                 http_send
401                 close_on_fork
402                 crypt_common
403                 base64
404                 ipc
405                 dccp_send
406                 fd
407                 user_list
408                 chunk_queue
409                 afs
410                 aft
411                 mood
412                 mp
413                 score
414                 attribute
415                 blob
416                 playlist
417                 sched
418                 acl
419                 send_common
420                 udp_send
421                 color
422                 fec
423                 wma_afh
424                 wma_common
425                 sideband
426                 version
427                 lsu
428         "
429         if test "$CRYPTOLIB" = openssl; then
430                 server_errlist_objs="$server_errlist_objs openssl"
431         else
432                 server_errlist_objs="$server_errlist_objs gcrypt"
433         fi
434         NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
435         NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
436         NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
437         NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
438         NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
439         if test $HAVE_FAAD = yes; then
440                 server_errlist_objs="$server_errlist_objs aac_afh mp4"
441         fi
442         server_objs="$server_errlist_objs"
443         AC_SUBST(server_objs, add_dot_o($server_objs))
444 else
445         build_server="no"
446 fi
447 ############################################################# upgrade_db
448 upgrade_db_objs='
449         crypt_common
450         exec
451         fd
452         string
453         upgrade_db
454         version
455         base64
456 '
457 AC_SUBST(upgrade_db_objs, add_dot_o($upgrade_db_objs))
458 ############################################################# client
459 if test -n "$CRYPTOLIB"; then
460         build_client="yes"
461         executables="$executables client"
462         client_errlist_objs="
463                 client
464                 net
465                 string
466                 fd
467                 lsu
468                 sched
469                 stdin
470                 stdout
471                 time
472                 sideband
473                 client_common
474                 buffer_tree
475                 crypt_common
476                 base64
477                 version
478         "
479         if test "$CRYPTOLIB" = openssl; then
480                 client_errlist_objs="$client_errlist_objs openssl"
481         else
482                 client_errlist_objs="$client_errlist_objs gcrypt"
483         fi
484         if test $HAVE_READLINE = yes; then
485                 client_errlist_objs="$client_errlist_objs interactive"
486         fi
487         client_objs="$client_errlist_objs"
488         AC_SUBST(client_objs, add_dot_o($client_errlist_objs))
489 else
490         build_client="no"
491 fi
492 ############################################################# audiod
493 if test -n "$CRYPTOLIB"; then
494         build_audiod="yes"
495         executables="$executables audiod"
496         audiod_audio_formats="wma"
497         audiod_errlist_objs="$audiod_errlist_objs
498                 audiod
499                 signal
500                 string
501                 daemon
502                 stat
503                 net
504                 crypt_common
505                 base64
506                 sideband
507                 time
508                 grab_client
509                 filter_common
510                 wav_filter
511                 compress_filter
512                 amp_filter
513                 http_recv
514                 dccp_recv
515                 recv_common
516                 fd
517                 sched
518                 write_common
519                 file_write
520                 audiod_command
521                 fecdec_filter
522                 client_common
523                 udp_recv
524                 color
525                 fec
526                 prebuffer_filter
527                 version
528                 bitstream
529                 imdct
530                 wma_common
531                 wmadec_filter
532                 buffer_tree
533                 sync_filter
534                 lsu
535         "
536         if test "$CRYPTOLIB" = openssl; then
537                 audiod_errlist_objs="$audiod_errlist_objs openssl"
538         else
539                 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
540         fi
541         NEED_VORBIS_OBJECTS && {
542                 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
543                 audiod_audio_formats="$audiod_audio_formats ogg"
544         }
545         NEED_SPEEX_OBJECTS && {
546                 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
547                 audiod_audio_formats="$audiod_audio_formats spx"
548         }
549         NEED_OPUS_OBJECTS && {
550                 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
551                 audiod_audio_formats="$audiod_audio_formats opus"
552         }
553         NEED_FLAC_OBJECTS && {
554                 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
555                 audiod_audio_formats="$audiod_audio_formats flac"
556         }
557         if test $HAVE_FAAD = yes; then
558                 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter"
559                 audiod_audio_formats="$audiod_audio_formats aac"
560         fi
561         if test $HAVE_MAD = yes; then
562                 audiod_audio_formats="$audiod_audio_formats mp3"
563                 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
564         fi
565         if test $HAVE_OSS = yes; then
566                 audiod_errlist_objs="$audiod_errlist_objs oss_write"
567         fi
568         if test $HAVE_ALSA = yes; then
569                 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
570         fi
571         NEED_AO_OBJECTS && {
572                 audiod_errlist_objs="$audiod_errlist_objs ao_write"
573         }
574         if test $HAVE_SAMPLERATE = yes; then
575                 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
576         fi
577         audiod_objs="$audiod_errlist_objs"
578         AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
579
580         enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
581         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
582                 enum of audio formats supported by audiod)
583         names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
584         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
585 else
586         build_audiod="no"
587 fi
588 ########################################################################### mixer
589 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
590         build_mixer="yes"
591         executables="$executables mixer"
592         mixer_errlist_objs="mixer exec string fd time lsu version"
593         if test $HAVE_OSS = yes; then
594                 mixer_errlist_objs="$mixer_errlist_objs oss_mix"
595         fi
596         if test $HAVE_ALSA = yes; then
597                 mixer_errlist_objs="$mixer_errlist_objs alsa_mix"
598         fi
599         mixer_objs="$mixer_errlist_objs"
600         AC_SUBST(mixer_objs, add_dot_o($mixer_objs))
601 else
602         build_mixer="no"
603         AC_MSG_WARN([no mixer support])
604 fi
605 ########################################################################### gui
606 if test $HAVE_CURSES = yes; then
607         build_gui="yes"
608         executables="$executables gui"
609         gui_errlist_objs="
610                 exec
611                 signal
612                 string
613                 stat
614                 ringbuffer
615                 fd
616                 gui
617                 gui_theme
618                 lsu
619                 time
620                 sched
621                 version
622         "
623         gui_objs="$gui_errlist_objs"
624         AC_SUBST(gui_objs, add_dot_o($gui_objs))
625 else
626         build_gui="no"
627         AC_MSG_WARN([no curses lib, cannot build para_gui])
628 fi
629 ######################################################################## filter
630 filter_errlist_objs="
631         filter_common
632         wav_filter
633         compress_filter
634         filter
635         string
636         stdin
637         stdout
638         sched
639         fd
640         amp_filter
641         fecdec_filter
642         fec
643         lsu
644         version
645         prebuffer_filter
646         time
647         bitstream
648         imdct
649         wma_common
650         wmadec_filter
651         buffer_tree
652         net
653         sync_filter
654 "
655 NEED_VORBIS_OBJECTS && filter_errlist_objs="$filter_errlist_objs oggdec_filter"
656 NEED_SPEEX_OBJECTS && filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
657 NEED_OPUS_OBJECTS && filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
658 NEED_FLAC_OBJECTS && filter_errlist_objs="$filter_errlist_objs flacdec_filter"
659 if test $HAVE_FAAD = yes; then
660         filter_errlist_objs="$filter_errlist_objs aacdec_filter"
661 fi
662 if test $HAVE_MAD = yes; then
663         filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
664 fi
665 if test $HAVE_SAMPLERATE = yes; then
666         filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
667 fi
668 filter_objs="$filter_errlist_objs"
669
670 AC_SUBST(filter_objs, add_dot_o($filter_objs))
671 ########################################################################## recv
672 recv_errlist_objs="
673         http_recv
674         recv_common
675         recv
676         time
677         string
678         net
679         dccp_recv
680         fd
681         sched
682         stdout
683         udp_recv
684         buffer_tree
685         afh_recv
686         afh_common
687         wma_afh
688         wma_common
689         mp3_afh
690         version
691 "
692 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
693 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
694 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
695 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
696 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
697
698 if test $HAVE_FAAD = yes; then
699         recv_errlist_objs="$recv_errlist_objs aac_afh mp4"
700 fi
701 recv_objs="$recv_errlist_objs"
702 AC_SUBST(recv_objs, add_dot_o($recv_objs))
703 ########################################################################### afh
704 audio_format_handlers="mp3 wma"
705 afh_errlist_objs="
706         afh
707         string
708         fd
709         mp3_afh
710         afh_common
711         time
712         wma_afh
713         wma_common
714         version
715 "
716 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
717 NEED_VORBIS_OBJECTS && {
718         afh_errlist_objs="$afh_errlist_objs ogg_afh"
719         audio_format_handlers="$audio_format_handlers ogg"
720 }
721 NEED_SPEEX_OBJECTS && {
722         afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
723         audio_format_handlers="$audio_format_handlers spx"
724 }
725 NEED_OPUS_OBJECTS && {
726         afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
727         audio_format_handlers="$audio_format_handlers opus"
728 }
729 NEED_FLAC_OBJECTS && {
730         afh_errlist_objs="$afh_errlist_objs flac_afh"
731         audio_format_handlers="$audio_format_handlers flac"
732 }
733 if test $HAVE_FAAD = yes; then
734         afh_errlist_objs="$afh_errlist_objs aac_afh mp4"
735         audio_format_handlers="$audio_format_handlers aac"
736 fi
737
738 afh_objs="$afh_errlist_objs"
739
740 AC_SUBST(afh_objs, add_dot_o($afh_objs))
741 ########################################################################## play
742 if test $HAVE_READLINE = yes; then
743         build_play=yes
744         executables="$executables play"
745         play_errlist_objs="
746                 play
747                 fd
748                 sched
749                 buffer_tree
750                 time
751                 string
752                 net
753                 afh_recv
754                 afh_common
755                 wma_afh
756                 wma_common
757                 mp3_afh
758                 recv_common
759                 udp_recv
760                 http_recv
761                 dccp_recv
762                 filter_common
763                 fec
764                 bitstream
765                 imdct
766                 wav_filter
767                 compress_filter
768                 amp_filter
769                 prebuffer_filter
770                 fecdec_filter
771                 wmadec_filter
772                 write_common
773                 file_write
774                 version
775                 sync_filter
776                 lsu
777         "
778         NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
779         NEED_VORBIS_OBJECTS && {
780                 play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
781         }
782         NEED_SPEEX_OBJECTS && {
783                 play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
784         }
785         NEED_OPUS_OBJECTS &&
786                 play_errlist_objs="$play_errlist_objs
787                         opusdec_filter
788                         opus_afh
789                         opus_common
790                 "
791         NEED_FLAC_OBJECTS && {
792                 play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
793         }
794         if test $HAVE_FAAD = yes; then
795                 play_errlist_objs="$play_errlist_objs aac_afh aacdec_filter mp4"
796         fi
797         if test $HAVE_MAD = yes; then
798                 play_errlist_objs="$play_errlist_objs mp3dec_filter"
799         fi
800         if test $HAVE_OSS = yes; then
801                 play_errlist_objs="$play_errlist_objs oss_write"
802         fi
803         if test $HAVE_ALSA = yes; then
804                 play_errlist_objs="$play_errlist_objs alsa_write"
805         fi
806         NEED_AO_OBJECTS && {
807                 play_errlist_objs="$play_errlist_objs ao_write"
808         }
809         if test $HAVE_READLINE = yes; then
810                 play_errlist_objs="$play_errlist_objs interactive"
811         fi
812         if test $HAVE_SAMPLERATE = yes; then
813                 play_errlist_objs="$play_errlist_objs resample_filter check_wav"
814         fi
815
816         play_objs="$play_errlist_objs"
817 else
818         build_play=no
819 fi
820 AC_SUBST(play_objs, add_dot_o($play_objs))
821 ######################################################################### write
822 write_errlist_objs="
823         write
824         write_common
825         file_write
826         time
827         fd
828         string
829         sched
830         stdin
831         buffer_tree
832         check_wav
833         version
834 "
835
836 NEED_AO_OBJECTS && {
837         write_errlist_objs="$write_errlist_objs ao_write"
838 }
839 if test $HAVE_OSS = yes; then
840         write_errlist_objs="$write_errlist_objs oss_write"
841 fi
842 if test $HAVE_ALSA = yes; then
843         write_errlist_objs="$write_errlist_objs alsa_write"
844 fi
845 write_objs="$write_errlist_objs"
846 AC_SUBST(write_objs, add_dot_o($write_objs))
847 ######################################################################## audioc
848 audioc_errlist_objs="
849         audioc
850         string
851         lsu
852         net
853         fd
854         time
855         version
856 "
857 if test $HAVE_READLINE = yes; then
858         audioc_errlist_objs="$audioc_errlist_objs
859                 buffer_tree
860                 interactive
861                 sched
862         "
863 fi
864 audioc_objs="$audioc_errlist_objs"
865 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
866
867 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
868         [formats supported by para_server and para_afh])
869 AC_SUBST(executables)
870
871 AC_OUTPUT
872 AC_MSG_NOTICE([
873 paraslash configuration:
874 ~~~~~~~~~~~~~~~~~~~~~~~~
875 crypto lib: ${CRYPTOLIB:-[none]}
876 unix socket credentials: $have_ucred
877 readline (interactive CLIs): $HAVE_READLINE
878 id3 version 2 support: $HAVE_ID3TAG
879 faad: $HAVE_FAAD
880 audio format handlers: $audio_format_handlers
881
882 exe: $executables
883 para_server: $build_server
884 para_play: $build_play
885 para_gui: $build_gui
886 para_mixer: $build_mixer
887 para_client: $build_client
888 para_audiod: $build_audiod
889 ])