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