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