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