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