]> git.tuebingen.mpg.de Git - paraslash.git/blob - configure.ac
build: Simplify condition for building para_server.
[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; then
380         build_server="yes"
381         executables="$executables server upgrade_db"
382         server_objs="
383                 server
384                 afh_common
385                 mp3_afh
386                 vss
387                 command
388                 net
389                 string
390                 signal
391                 time
392                 daemon
393                 http_send
394                 close_on_fork
395                 crypt_common
396                 base64
397                 ipc
398                 dccp_send
399                 fd
400                 user_list
401                 chunk_queue
402                 afs
403                 aft
404                 mood
405                 mp
406                 score
407                 attribute
408                 blob
409                 playlist
410                 sched
411                 acl
412                 send_common
413                 udp_send
414                 color
415                 fec
416                 wma_afh
417                 wma_common
418                 sideband
419                 version
420                 lsu
421         "
422         if test "$CRYPTOLIB" = openssl; then
423                 server_objs="$server_objs openssl"
424         else
425                 server_objs="$server_objs gcrypt"
426         fi
427         AS_IF([test $NEED_OGG_OBJECTS = yes],
428                 [server_objs="$server_objs ogg_afh_common"])
429         AS_IF([test $NEED_VORBIS_OBJECTS = yes],
430                 [server_objs="$server_objs ogg_afh"])
431         AS_IF([test $NEED_SPEEX_OBJECTS = yes],
432                 [server_objs="$server_objs spx_afh spx_common"])
433         AS_IF([test $NEED_OPUS_OBJECTS = yes],
434                 [server_objs="$server_objs opus_afh opus_common"])
435         AS_IF([test $NEED_FLAC_OBJECTS = yes],
436                 [server_objs="$server_objs flac_afh"])
437         if test $HAVE_FAAD = yes; then
438                 server_objs="$server_objs aac_afh mp4"
439         fi
440         AC_SUBST(server_objs, add_dot_o($server_objs))
441 else
442         build_server="no"
443 fi
444 ############################################################# upgrade_db
445 upgrade_db_objs='
446         crypt_common
447         exec
448         fd
449         string
450         upgrade_db
451         version
452         base64
453 '
454 AC_SUBST(upgrade_db_objs, add_dot_o($upgrade_db_objs))
455 ############################################################# client
456 if test -n "$CRYPTOLIB"; then
457         build_client="yes"
458         executables="$executables client"
459         client_objs="
460                 client
461                 net
462                 string
463                 fd
464                 lsu
465                 sched
466                 stdin
467                 stdout
468                 time
469                 sideband
470                 client_common
471                 buffer_tree
472                 crypt_common
473                 base64
474                 version
475         "
476         if test "$CRYPTOLIB" = openssl; then
477                 client_objs="$client_objs openssl"
478         else
479                 client_objs="$client_objs gcrypt"
480         fi
481         if test $HAVE_READLINE = yes; then
482                 client_objs="$client_objs interactive"
483         fi
484         AC_SUBST(client_objs, add_dot_o($client_objs))
485 else
486         build_client="no"
487 fi
488 ############################################################# audiod
489 if test -n "$CRYPTOLIB"; then
490         build_audiod="yes"
491         executables="$executables audiod"
492         audiod_audio_formats="wma"
493         audiod_objs="$audiod_objs
494                 audiod
495                 signal
496                 string
497                 daemon
498                 stat
499                 net
500                 crypt_common
501                 base64
502                 sideband
503                 time
504                 grab_client
505                 filter_common
506                 wav_filter
507                 compress_filter
508                 amp_filter
509                 http_recv
510                 dccp_recv
511                 recv_common
512                 fd
513                 sched
514                 write_common
515                 file_write
516                 audiod_command
517                 fecdec_filter
518                 client_common
519                 udp_recv
520                 color
521                 fec
522                 prebuffer_filter
523                 version
524                 bitstream
525                 imdct
526                 wma_common
527                 wmadec_filter
528                 buffer_tree
529                 sync_filter
530                 lsu
531         "
532         if test "$CRYPTOLIB" = openssl; then
533                 audiod_objs="$audiod_objs openssl"
534         else
535                 audiod_objs="$audiod_objs gcrypt"
536         fi
537         AS_IF([test $NEED_VORBIS_OBJECTS = yes], [
538                 audiod_objs="$audiod_objs oggdec_filter"
539                 audiod_audio_formats="$audiod_audio_formats ogg"
540         ])
541         AS_IF([test $NEED_SPEEX_OBJECTS = yes], [
542                 audiod_objs="$audiod_objs spxdec_filter spx_common"
543                 audiod_audio_formats="$audiod_audio_formats spx"
544         ])
545         AS_IF([test $NEED_OPUS_OBJECTS = yes], [
546                 audiod_objs="$audiod_objs opusdec_filter opus_common"
547                 audiod_audio_formats="$audiod_audio_formats opus"
548         ])
549         AS_IF([test $NEED_FLAC_OBJECTS = yes], [
550                 audiod_objs="$audiod_objs flacdec_filter"
551                 audiod_audio_formats="$audiod_audio_formats flac"
552         ])
553         if test $HAVE_FAAD = yes; then
554                 audiod_objs="$audiod_objs aacdec_filter"
555                 audiod_audio_formats="$audiod_audio_formats aac"
556         fi
557         if test $HAVE_MAD = yes; then
558                 audiod_audio_formats="$audiod_audio_formats mp3"
559                 audiod_objs="$audiod_objs mp3dec_filter"
560         fi
561         if test $HAVE_OSS = yes; then
562                 audiod_objs="$audiod_objs oss_write"
563         fi
564         if test $HAVE_ALSA = yes; then
565                 audiod_objs="$audiod_objs alsa_write"
566         fi
567         NEED_AO_OBJECTS && {
568                 audiod_objs="$audiod_objs ao_write"
569         }
570         if test $HAVE_SAMPLERATE = yes; then
571                 audiod_objs="$audiod_objs resample_filter check_wav"
572         fi
573         AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
574
575         names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
576         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
577 else
578         build_audiod="no"
579 fi
580 ########################################################################### mixer
581 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
582         build_mixer="yes"
583         executables="$executables mixer"
584         mixer_objs="mixer exec string fd time lsu version"
585         if test $HAVE_OSS = yes; then
586                 mixer_objs="$mixer_objs oss_mix"
587         fi
588         if test $HAVE_ALSA = yes; then
589                 mixer_objs="$mixer_objs alsa_mix"
590         fi
591         AC_SUBST(mixer_objs, add_dot_o($mixer_objs))
592 else
593         build_mixer="no"
594         AC_MSG_WARN([no mixer support])
595 fi
596 ########################################################################### gui
597 if test $HAVE_CURSES = yes; then
598         build_gui="yes"
599         executables="$executables gui"
600         gui_objs="
601                 exec
602                 signal
603                 string
604                 stat
605                 ringbuffer
606                 fd
607                 gui
608                 gui_theme
609                 lsu
610                 time
611                 sched
612                 version
613         "
614         AC_SUBST(gui_objs, add_dot_o($gui_objs))
615 else
616         build_gui="no"
617         AC_MSG_WARN([no curses lib, cannot build para_gui])
618 fi
619 ######################################################################## filter
620 filter_objs="
621         filter_common
622         wav_filter
623         compress_filter
624         filter
625         string
626         stdin
627         stdout
628         sched
629         fd
630         amp_filter
631         fecdec_filter
632         fec
633         lsu
634         version
635         prebuffer_filter
636         time
637         bitstream
638         imdct
639         wma_common
640         wmadec_filter
641         buffer_tree
642         net
643         sync_filter
644 "
645 AS_IF([test $NEED_VORBIS_OBJECTS = yes],
646         [filter_objs="$filter_objs oggdec_filter"])
647 AS_IF([test $NEED_SPEEX_OBJECTS = yes],
648         [filter_objs="$filter_objs spxdec_filter spx_common"])
649 AS_IF([test $NEED_OPUS_OBJECTS = yes],
650         [filter_objs="$filter_objs opusdec_filter opus_common"])
651 AS_IF([test $NEED_FLAC_OBJECTS = yes],
652         [filter_objs="$filter_objs flacdec_filter"])
653 if test $HAVE_FAAD = yes; then
654         filter_objs="$filter_objs aacdec_filter"
655 fi
656 if test $HAVE_MAD = yes; then
657         filter_objs="$filter_objs mp3dec_filter"
658 fi
659 if test $HAVE_SAMPLERATE = yes; then
660         filter_objs="$filter_objs resample_filter check_wav"
661 fi
662 AC_SUBST(filter_objs, add_dot_o($filter_objs))
663 ########################################################################## recv
664 recv_objs="
665         http_recv
666         recv_common
667         recv
668         time
669         string
670         net
671         dccp_recv
672         fd
673         sched
674         stdout
675         udp_recv
676         buffer_tree
677         afh_recv
678         afh_common
679         wma_afh
680         wma_common
681         mp3_afh
682         version
683 "
684 AS_IF([test $NEED_OGG_OBJECTS = yes], [recv_objs="$recv_objs ogg_afh_common"])
685 AS_IF([test $NEED_VORBIS_OBJECTS = yes], [recv_objs="$recv_objs ogg_afh"])
686 AS_IF([test $NEED_SPEEX_OBJECTS = yes],
687         [recv_objs="$recv_objs spx_afh spx_common"])
688 AS_IF([test $NEED_OPUS_OBJECTS = yes],
689         [recv_objs="$recv_objs opus_afh opus_common"])
690 AS_IF([test $NEED_FLAC_OBJECTS = yes], [recv_objs="$recv_objs flac_afh"])
691
692 if test $HAVE_FAAD = yes; then
693         recv_objs="$recv_objs aac_afh mp4"
694 fi
695 AC_SUBST(recv_objs, add_dot_o($recv_objs))
696 ########################################################################### afh
697 audio_format_handlers="mp3 wma"
698 afh_objs="
699         afh
700         string
701         fd
702         mp3_afh
703         afh_common
704         time
705         wma_afh
706         wma_common
707         version
708 "
709 AS_IF([test $NEED_OGG_OBJECTS = yes], [afh_objs="$afh_objs ogg_afh_common"])
710 AS_IF([test $NEED_VORBIS_OBJECTS = yes], [
711         afh_objs="$afh_objs ogg_afh"
712         audio_format_handlers="$audio_format_handlers ogg"
713 ])
714 AS_IF([test $NEED_SPEEX_OBJECTS = yes], [
715         afh_objs="$afh_objs spx_afh spx_common"
716         audio_format_handlers="$audio_format_handlers spx"
717 ])
718 AS_IF([test $NEED_OPUS_OBJECTS = yes], [
719         afh_objs="$afh_objs opus_afh opus_common"
720         audio_format_handlers="$audio_format_handlers opus"
721 ])
722 AS_IF([test $NEED_FLAC_OBJECTS = yes], [
723         afh_objs="$afh_objs flac_afh"
724         audio_format_handlers="$audio_format_handlers flac"
725 ])
726 if test $HAVE_FAAD = yes; then
727         afh_objs="$afh_objs aac_afh mp4"
728         audio_format_handlers="$audio_format_handlers aac"
729 fi
730 AC_SUBST(afh_objs, add_dot_o($afh_objs))
731 ########################################################################## play
732 play_objs="
733         play
734         fd
735         sched
736         buffer_tree
737         time
738         string
739         net
740         afh_recv
741         afh_common
742         wma_afh
743         wma_common
744         mp3_afh
745         recv_common
746         udp_recv
747         http_recv
748         dccp_recv
749         filter_common
750         fec
751         bitstream
752         imdct
753         wav_filter
754         compress_filter
755         amp_filter
756         prebuffer_filter
757         fecdec_filter
758         wmadec_filter
759         write_common
760         file_write
761         version
762         sync_filter
763         lsu
764 "
765 AS_IF([test $NEED_OGG_OBJECTS = yes], [play_objs="$play_objs ogg_afh_common"])
766 AS_IF([test $NEED_VORBIS_OBJECTS = yes],
767         [play_objs="$play_objs oggdec_filter ogg_afh"])
768 AS_IF([test $NEED_SPEEX_OBJECTS = yes],
769         [play_objs="$play_objs spxdec_filter spx_afh spx_common"])
770 AS_IF([test $NEED_OPUS_OBJECTS = yes],
771         [play_objs="$play_objs opusdec_filter opus_afh opus_common"])
772 AS_IF([test $NEED_FLAC_OBJECTS = yes],
773         [play_objs="$play_objs flacdec_filter flac_afh"])
774 if test $HAVE_FAAD = yes; then
775         play_objs="$play_objs aac_afh aacdec_filter mp4"
776 fi
777 if test $HAVE_MAD = yes; then
778         play_objs="$play_objs mp3dec_filter"
779 fi
780 if test $HAVE_OSS = yes; then
781         play_objs="$play_objs oss_write"
782 fi
783 if test $HAVE_ALSA = yes; then
784         play_objs="$play_objs alsa_write"
785 fi
786 NEED_AO_OBJECTS && {
787         play_objs="$play_objs ao_write"
788 }
789 if test $HAVE_READLINE = yes; then
790         play_objs="$play_objs interactive"
791 fi
792 if test $HAVE_SAMPLERATE = yes; then
793         play_objs="$play_objs resample_filter check_wav"
794 fi
795 AC_SUBST(play_objs, add_dot_o($play_objs))
796 ######################################################################### write
797 write_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_objs="$write_objs ao_write"
813 }
814 if test $HAVE_OSS = yes; then
815         write_objs="$write_objs oss_write"
816 fi
817 if test $HAVE_ALSA = yes; then
818         write_objs="$write_objs alsa_write"
819 fi
820 AC_SUBST(write_objs, add_dot_o($write_objs))
821 ######################################################################## audioc
822 audioc_objs="
823         audioc
824         string
825         lsu
826         net
827         fd
828         time
829         version
830 "
831 if test $HAVE_READLINE = yes; then
832         audioc_objs="$audioc_objs
833                 buffer_tree
834                 interactive
835                 sched
836         "
837 fi
838 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
839
840 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
841         [formats supported by para_server and para_afh])
842 AC_SUBST(executables)
843
844 AC_OUTPUT
845 AC_MSG_NOTICE([
846 paraslash configuration:
847 ~~~~~~~~~~~~~~~~~~~~~~~~
848 crypto lib: ${CRYPTOLIB:-[none]}
849 readline (interactive CLIs): $HAVE_READLINE
850 id3 version 2 support: $HAVE_ID3TAG
851 faad: $HAVE_FAAD
852 audio format handlers: $audio_format_handlers
853
854 exe: $executables
855 para_server: $build_server
856 para_gui: $build_gui
857 para_mixer: $build_mixer
858 para_client: $build_client
859 para_audiod: $build_audiod
860 ])