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