]> git.tuebingen.mpg.de Git - paraslash.git/blob - configure.ac
a303086456d0d6a9e1995827f11e59f014165744
[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         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 helpers for the ogg container format
277 AS_IF([test "$HAVE_OGG" = 'yes' -a \( \
278                  "$HAVE_VORBIS" = 'yes' \
279                 -o "$HAVE_SPEEX" = 'yes' \
280                 -o "$HAVE_OPUS" = 'yes' \
281                 -o "$HAVE_FLAC" = 'yes' \
282 \)], [NEED_OGG_OBJECTS=yes], [NEED_OGG_OBJECTS=no])
283 AS_IF([test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'],
284         [NEED_VORBIS_OBJECTS=yes], [NEED_VORBIS_OBJECTS=no])
285 AS_IF([test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'],
286         [NEED_SPEEX_OBJECTS=yes], [NEED_SPEEX_OBJECTS=no])
287 AS_IF([test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'],
288         [NEED_OPUS_OBJECTS=yes], [NEED_OPUS_OBJECTS=no])
289 AS_IF([test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'],
290         [NEED_FLAC_OBJECTS=yes], [NEED_FLAC_OBJECTS=no])
291 ########################################################################### faad
292 STASH_FLAGS
293 LIB_ARG_WITH([faad], [-lfaad])
294 HAVE_FAAD=yes
295 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
296 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
297 LIB_SUBST_FLAGS(faad)
298 UNSTASH_FLAGS
299 ########################################################################### mad
300 STASH_FLAGS
301 LIB_ARG_WITH([mad], [-lmad])
302 HAVE_MAD=yes
303 AC_CHECK_HEADER(mad.h, [], HAVE_MAD=no)
304 AC_CHECK_LIB([mad], [mad_stream_init], [], HAVE_MAD=no)
305 LIB_SUBST_FLAGS(mad)
306 UNSTASH_FLAGS
307 ###################################################################### libid3tag
308 STASH_FLAGS
309 LIB_ARG_WITH([id3tag], [-lid3tag -lz])
310 HAVE_ID3TAG=yes
311 AC_CHECK_HEADER(id3tag.h, [], HAVE_ID3TAG=no)
312 AC_CHECK_LIB([id3tag], [id3_file_fdopen], [], HAVE_ID3TAG=no)
313 LIB_SUBST_FLAGS(id3tag)
314 UNSTASH_FLAGS
315 ########################################################################### oss
316 STASH_FLAGS
317 LIB_ARG_WITH([oss], [])
318 AC_CHECK_HEADER(sys/soundcard.h, [HAVE_OSS=yes], [HAVE_OSS=no])
319 AC_CHECK_LIB(ossaudio, _oss_ioctl, [oss_ldflags="$oss_ldflags -lossaudio"], [])
320 LIB_SUBST_FLAGS(oss)
321 UNSTASH_FLAGS
322 ########################################################################### alsa
323 STASH_FLAGS
324 LIB_ARG_WITH([alsa], [-lasound])
325 HAVE_ALSA=yes
326 AC_CHECK_HEADER(alsa/asoundlib.h, [], HAVE_ALSA=no)
327 AC_CHECK_LIB([asound], [snd_pcm_open], [], HAVE_ALSA=no)
328 LIB_SUBST_FLAGS(alsa)
329 UNSTASH_FLAGS
330 ######################################################################### pthread
331 STASH_FLAGS
332 LIB_ARG_WITH([pthread], [-lpthread])
333 HAVE_PTHREAD=yes
334 AC_CHECK_HEADER(pthread.h, [], HAVE_PTHREAD=no)
335 AC_CHECK_LIB([pthread], [pthread_create], [], HAVE_PTHREAD=no)
336 LIB_SUBST_FLAGS(pthread)
337 UNSTASH_FLAGS
338 ########################################################################### libao
339 STASH_FLAGS
340 LIB_ARG_WITH([ao], [-lao])
341 HAVE_AO=yes
342 AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
343 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
344 LIB_SUBST_FLAGS(ao)
345 UNSTASH_FLAGS
346 AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
347 ######################################################################## readline
348 STASH_FLAGS
349 AC_SEARCH_LIBS([tgetent], [tinfo curses terminfo termcap])
350 LIB_ARG_WITH([readline], [-lreadline $LIBS])
351 HAVE_READLINE=yes
352 AC_CHECK_HEADER([readline/readline.h], [], [HAVE_READLINE=no])
353 AC_CHECK_LIB([readline], [rl_free_keymap], [], HAVE_READLINE=no)
354 AC_CHECK_DECL(
355         [rl_free_keymap],
356         [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)],
357         [],
358         [
359                 #include <stdio.h>
360                 #include <readline/readline.h>
361         ]
362 )
363 LIB_SUBST_FLAGS(readline)
364 UNSTASH_FLAGS
365 ############################################################# libsamplerate
366 STASH_FLAGS
367 LIB_ARG_WITH([samplerate], [-lsamplerate])
368 HAVE_SAMPLERATE=yes
369 AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
370 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
371 LIB_SUBST_FLAGS(samplerate)
372 UNSTASH_FLAGS
373 ######################################################################### ubsan
374 AC_ARG_ENABLE([ubsan], [AS_HELP_STRING(--enable-ubsan,
375         [Detect and report undefined behaviour.])],
376         [ENABLE_UBSAN=yes], [ENABLE_UBSAN=no])
377 AC_SUBST(ENABLE_UBSAN)
378 ######################################################################### server
379 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes && test -n "$BISON" && \
380                 test -n "$FLEX"; then
381         build_server="yes"
382         executables="$executables server upgrade_db"
383         server_objs="
384                 server
385                 afh_common
386                 mp3_afh
387                 vss
388                 command
389                 net
390                 string
391                 signal
392                 time
393                 daemon
394                 http_send
395                 close_on_fork
396                 crypt_common
397                 base64
398                 ipc
399                 dccp_send
400                 fd
401                 user_list
402                 chunk_queue
403                 afs
404                 aft
405                 mood
406                 mp
407                 score
408                 attribute
409                 blob
410                 playlist
411                 sched
412                 acl
413                 send_common
414                 udp_send
415                 color
416                 fec
417                 wma_afh
418                 wma_common
419                 sideband
420                 version
421                 lsu
422         "
423         if test "$CRYPTOLIB" = openssl; then
424                 server_objs="$server_objs openssl"
425         else
426                 server_objs="$server_objs gcrypt"
427         fi
428         AS_IF([test $NEED_OGG_OBJECTS = yes],
429                 [server_objs="$server_objs ogg_afh_common"])
430         AS_IF([test $NEED_VORBIS_OBJECTS = yes],
431                 [server_objs="$server_objs ogg_afh"])
432         AS_IF([test $NEED_SPEEX_OBJECTS = yes],
433                 [server_objs="$server_objs spx_afh spx_common"])
434         AS_IF([test $NEED_OPUS_OBJECTS = yes],
435                 [server_objs="$server_objs opus_afh opus_common"])
436         AS_IF([test $NEED_FLAC_OBJECTS = yes],
437                 [server_objs="$server_objs flac_afh"])
438         if test $HAVE_FAAD = yes; then
439                 server_objs="$server_objs aac_afh mp4"
440         fi
441         AC_SUBST(server_objs, add_dot_o($server_objs))
442 else
443         build_server="no"
444 fi
445 ############################################################# upgrade_db
446 upgrade_db_objs='
447         crypt_common
448         exec
449         fd
450         string
451         upgrade_db
452         version
453         base64
454 '
455 AC_SUBST(upgrade_db_objs, add_dot_o($upgrade_db_objs))
456 ############################################################# client
457 if test -n "$CRYPTOLIB"; then
458         build_client="yes"
459         executables="$executables client"
460         client_objs="
461                 client
462                 net
463                 string
464                 fd
465                 lsu
466                 sched
467                 stdin
468                 stdout
469                 time
470                 sideband
471                 client_common
472                 buffer_tree
473                 crypt_common
474                 base64
475                 version
476         "
477         if test "$CRYPTOLIB" = openssl; then
478                 client_objs="$client_objs openssl"
479         else
480                 client_objs="$client_objs gcrypt"
481         fi
482         if test $HAVE_READLINE = yes; then
483                 client_objs="$client_objs interactive"
484         fi
485         AC_SUBST(client_objs, add_dot_o($client_objs))
486 else
487         build_client="no"
488 fi
489 ############################################################# audiod
490 if test -n "$CRYPTOLIB"; then
491         build_audiod="yes"
492         executables="$executables audiod"
493         audiod_audio_formats="wma"
494         audiod_objs="$audiod_objs
495                 audiod
496                 signal
497                 string
498                 daemon
499                 stat
500                 net
501                 crypt_common
502                 base64
503                 sideband
504                 time
505                 grab_client
506                 filter_common
507                 wav_filter
508                 compress_filter
509                 amp_filter
510                 http_recv
511                 dccp_recv
512                 recv_common
513                 fd
514                 sched
515                 write_common
516                 file_write
517                 audiod_command
518                 fecdec_filter
519                 client_common
520                 udp_recv
521                 color
522                 fec
523                 prebuffer_filter
524                 version
525                 bitstream
526                 imdct
527                 wma_common
528                 wmadec_filter
529                 buffer_tree
530                 sync_filter
531                 lsu
532         "
533         if test "$CRYPTOLIB" = openssl; then
534                 audiod_objs="$audiod_objs openssl"
535         else
536                 audiod_objs="$audiod_objs gcrypt"
537         fi
538         AS_IF([test $NEED_VORBIS_OBJECTS = yes], [
539                 audiod_objs="$audiod_objs oggdec_filter"
540                 audiod_audio_formats="$audiod_audio_formats ogg"
541         ])
542         AS_IF([test $NEED_SPEEX_OBJECTS = yes], [
543                 audiod_objs="$audiod_objs spxdec_filter spx_common"
544                 audiod_audio_formats="$audiod_audio_formats spx"
545         ])
546         AS_IF([test $NEED_OPUS_OBJECTS = yes], [
547                 audiod_objs="$audiod_objs opusdec_filter opus_common"
548                 audiod_audio_formats="$audiod_audio_formats opus"
549         ])
550         AS_IF([test $NEED_FLAC_OBJECTS = yes], [
551                 audiod_objs="$audiod_objs flacdec_filter"
552                 audiod_audio_formats="$audiod_audio_formats flac"
553         ])
554         if test $HAVE_FAAD = yes; then
555                 audiod_objs="$audiod_objs aacdec_filter"
556                 audiod_audio_formats="$audiod_audio_formats aac"
557         fi
558         if test $HAVE_MAD = yes; then
559                 audiod_audio_formats="$audiod_audio_formats mp3"
560                 audiod_objs="$audiod_objs mp3dec_filter"
561         fi
562         if test $HAVE_OSS = yes; then
563                 audiod_objs="$audiod_objs oss_write"
564         fi
565         if test $HAVE_ALSA = yes; then
566                 audiod_objs="$audiod_objs alsa_write"
567         fi
568         NEED_AO_OBJECTS && {
569                 audiod_objs="$audiod_objs ao_write"
570         }
571         if test $HAVE_SAMPLERATE = yes; then
572                 audiod_objs="$audiod_objs resample_filter check_wav"
573         fi
574         AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
575
576         names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
577         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
578 else
579         build_audiod="no"
580 fi
581 ########################################################################### mixer
582 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
583         build_mixer="yes"
584         executables="$executables mixer"
585         mixer_objs="mixer exec string fd time lsu version"
586         if test $HAVE_OSS = yes; then
587                 mixer_objs="$mixer_objs oss_mix"
588         fi
589         if test $HAVE_ALSA = yes; then
590                 mixer_objs="$mixer_objs alsa_mix"
591         fi
592         AC_SUBST(mixer_objs, add_dot_o($mixer_objs))
593 else
594         build_mixer="no"
595         AC_MSG_WARN([no mixer support])
596 fi
597 ########################################################################### gui
598 if test $HAVE_CURSES = yes; then
599         build_gui="yes"
600         executables="$executables gui"
601         gui_objs="
602                 exec
603                 signal
604                 string
605                 stat
606                 ringbuffer
607                 fd
608                 gui
609                 gui_theme
610                 lsu
611                 time
612                 sched
613                 version
614         "
615         AC_SUBST(gui_objs, add_dot_o($gui_objs))
616 else
617         build_gui="no"
618         AC_MSG_WARN([no curses lib, cannot build para_gui])
619 fi
620 ######################################################################## filter
621 filter_objs="
622         filter_common
623         wav_filter
624         compress_filter
625         filter
626         string
627         stdin
628         stdout
629         sched
630         fd
631         amp_filter
632         fecdec_filter
633         fec
634         lsu
635         version
636         prebuffer_filter
637         time
638         bitstream
639         imdct
640         wma_common
641         wmadec_filter
642         buffer_tree
643         net
644         sync_filter
645 "
646 AS_IF([test $NEED_VORBIS_OBJECTS = yes],
647         [filter_objs="$filter_objs oggdec_filter"])
648 AS_IF([test $NEED_SPEEX_OBJECTS = yes],
649         [filter_objs="$filter_objs spxdec_filter spx_common"])
650 AS_IF([test $NEED_OPUS_OBJECTS = yes],
651         [filter_objs="$filter_objs opusdec_filter opus_common"])
652 AS_IF([test $NEED_FLAC_OBJECTS = yes],
653         [filter_objs="$filter_objs flacdec_filter"])
654 if test $HAVE_FAAD = yes; then
655         filter_objs="$filter_objs aacdec_filter"
656 fi
657 if test $HAVE_MAD = yes; then
658         filter_objs="$filter_objs mp3dec_filter"
659 fi
660 if test $HAVE_SAMPLERATE = yes; then
661         filter_objs="$filter_objs resample_filter check_wav"
662 fi
663 AC_SUBST(filter_objs, add_dot_o($filter_objs))
664 ########################################################################## recv
665 recv_objs="
666         http_recv
667         recv_common
668         recv
669         time
670         string
671         net
672         dccp_recv
673         fd
674         sched
675         stdout
676         udp_recv
677         buffer_tree
678         afh_recv
679         afh_common
680         wma_afh
681         wma_common
682         mp3_afh
683         version
684 "
685 AS_IF([test $NEED_OGG_OBJECTS = yes], [recv_objs="$recv_objs ogg_afh_common"])
686 AS_IF([test $NEED_VORBIS_OBJECTS = yes], [recv_objs="$recv_objs ogg_afh"])
687 AS_IF([test $NEED_SPEEX_OBJECTS = yes],
688         [recv_objs="$recv_objs spx_afh spx_common"])
689 AS_IF([test $NEED_OPUS_OBJECTS = yes],
690         [recv_objs="$recv_objs opus_afh opus_common"])
691 AS_IF([test $NEED_FLAC_OBJECTS = yes], [recv_objs="$recv_objs flac_afh"])
692
693 if test $HAVE_FAAD = yes; then
694         recv_objs="$recv_objs aac_afh mp4"
695 fi
696 AC_SUBST(recv_objs, add_dot_o($recv_objs))
697 ########################################################################### afh
698 audio_format_handlers="mp3 wma"
699 afh_objs="
700         afh
701         string
702         fd
703         mp3_afh
704         afh_common
705         time
706         wma_afh
707         wma_common
708         version
709 "
710 AS_IF([test $NEED_OGG_OBJECTS = yes], [afh_objs="$afh_objs ogg_afh_common"])
711 AS_IF([test $NEED_VORBIS_OBJECTS = yes], [
712         afh_objs="$afh_objs ogg_afh"
713         audio_format_handlers="$audio_format_handlers ogg"
714 ])
715 AS_IF([test $NEED_SPEEX_OBJECTS = yes], [
716         afh_objs="$afh_objs spx_afh spx_common"
717         audio_format_handlers="$audio_format_handlers spx"
718 ])
719 AS_IF([test $NEED_OPUS_OBJECTS = yes], [
720         afh_objs="$afh_objs opus_afh opus_common"
721         audio_format_handlers="$audio_format_handlers opus"
722 ])
723 AS_IF([test $NEED_FLAC_OBJECTS = yes], [
724         afh_objs="$afh_objs flac_afh"
725         audio_format_handlers="$audio_format_handlers flac"
726 ])
727 if test $HAVE_FAAD = yes; then
728         afh_objs="$afh_objs aac_afh mp4"
729         audio_format_handlers="$audio_format_handlers aac"
730 fi
731 AC_SUBST(afh_objs, add_dot_o($afh_objs))
732 ########################################################################## play
733 play_objs="
734         play
735         fd
736         sched
737         buffer_tree
738         time
739         string
740         net
741         afh_recv
742         afh_common
743         wma_afh
744         wma_common
745         mp3_afh
746         recv_common
747         udp_recv
748         http_recv
749         dccp_recv
750         filter_common
751         fec
752         bitstream
753         imdct
754         wav_filter
755         compress_filter
756         amp_filter
757         prebuffer_filter
758         fecdec_filter
759         wmadec_filter
760         write_common
761         file_write
762         version
763         sync_filter
764         lsu
765 "
766 AS_IF([test $NEED_OGG_OBJECTS = yes], [play_objs="$play_objs ogg_afh_common"])
767 AS_IF([test $NEED_VORBIS_OBJECTS = yes],
768         [play_objs="$play_objs oggdec_filter ogg_afh"])
769 AS_IF([test $NEED_SPEEX_OBJECTS = yes],
770         [play_objs="$play_objs spxdec_filter spx_afh spx_common"])
771 AS_IF([test $NEED_OPUS_OBJECTS = yes],
772         [play_objs="$play_objs opusdec_filter opus_afh opus_common"])
773 AS_IF([test $NEED_FLAC_OBJECTS = yes],
774         [play_objs="$play_objs flacdec_filter flac_afh"])
775 if test $HAVE_FAAD = yes; then
776         play_objs="$play_objs aac_afh aacdec_filter mp4"
777 fi
778 if test $HAVE_MAD = yes; then
779         play_objs="$play_objs mp3dec_filter"
780 fi
781 if test $HAVE_OSS = yes; then
782         play_objs="$play_objs oss_write"
783 fi
784 if test $HAVE_ALSA = yes; then
785         play_objs="$play_objs alsa_write"
786 fi
787 NEED_AO_OBJECTS && {
788         play_objs="$play_objs ao_write"
789 }
790 if test $HAVE_READLINE = yes; then
791         play_objs="$play_objs interactive"
792 fi
793 if test $HAVE_SAMPLERATE = yes; then
794         play_objs="$play_objs resample_filter check_wav"
795 fi
796 AC_SUBST(play_objs, add_dot_o($play_objs))
797 ######################################################################### write
798 write_objs="
799         write
800         write_common
801         file_write
802         time
803         fd
804         string
805         sched
806         stdin
807         buffer_tree
808         check_wav
809         version
810 "
811
812 NEED_AO_OBJECTS && {
813         write_objs="$write_objs ao_write"
814 }
815 if test $HAVE_OSS = yes; then
816         write_objs="$write_objs oss_write"
817 fi
818 if test $HAVE_ALSA = yes; then
819         write_objs="$write_objs alsa_write"
820 fi
821 AC_SUBST(write_objs, add_dot_o($write_objs))
822 ######################################################################## audioc
823 audioc_objs="
824         audioc
825         string
826         lsu
827         net
828         fd
829         time
830         version
831 "
832 if test $HAVE_READLINE = yes; then
833         audioc_objs="$audioc_objs
834                 buffer_tree
835                 interactive
836                 sched
837         "
838 fi
839 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
840
841 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
842         [formats supported by para_server and para_afh])
843 AC_SUBST(executables)
844
845 AC_OUTPUT
846 AC_MSG_NOTICE([
847 paraslash configuration:
848 ~~~~~~~~~~~~~~~~~~~~~~~~
849 crypto lib: ${CRYPTOLIB:-[none]}
850 readline (interactive CLIs): $HAVE_READLINE
851 id3 version 2 support: $HAVE_ID3TAG
852 faad: $HAVE_FAAD
853 audio format handlers: $audio_format_handlers
854
855 exe: $executables
856 para_server: $build_server
857 para_gui: $build_gui
858 para_mixer: $build_mixer
859 para_client: $build_client
860 para_audiod: $build_audiod
861 ])