]> git.tuebingen.mpg.de Git - paraslash.git/blob - configure.ac
lsu: Add helper to merge config file options, convert server.
[paraslash.git] / configure.ac
1 AC_PREREQ([2.61])
2
3 AC_INIT([paraslash], [m4_esyscmd_s(./GIT-VERSION-GEN)],
4         [maan@tuebingen.mpg.de], [], [http://people.tuebingen.mpg.de/maan/paraslash/])
5 AC_CONFIG_HEADERS([config.h])
6
7 AC_CONFIG_FILES([Makefile])
8 AC_DEFUN([add_dot_o],[$(for i in $@; do printf "$i.o "; done)])
9 AC_DEFUN([LIB_ARG_WITH], [
10         AC_ARG_WITH($1-headers, [AS_HELP_STRING(--with-$1-headers=dir,
11                 [look for $1 headers in dir])])
12         AC_ARG_WITH($1-libs, [AS_HELP_STRING(--with-$1-libs=dir,
13                 [look for $1 libraries in dir])])
14         if test -n "$with_$1_headers"; then
15                 $1_cppflags="-I$with_$1_headers"
16                 CPPFLAGS="$CPPFLAGS $$1_cppflags"
17         fi
18         if test -n "$with_$1_libs"; then
19                 $1_ldflags="-L$with_$1_libs $2"
20         else
21                 $1_ldflags="$2"
22         fi
23         LDFLAGS="$LDFLAGS $$1_ldflags"
24 ])
25
26 AC_DEFUN([STASH_FLAGS], [
27         OLD_CPPFLAGS="$CPPFLAGS"
28         OLD_LDFLAGS="$LDFLAGS"
29         OLD_LIBS="$LIBS"
30 ])
31
32 AC_DEFUN([UNSTASH_FLAGS], [
33         CPPFLAGS="$OLD_CPPFLAGS"
34         LDFLAGS="$OLD_LDFLAGS"
35         LIBS="$OLD_LIBS"
36 ])
37 AC_DEFUN([LIB_SUBST_FLAGS], [
38         if test "$HAVE_[]m4_toupper([$1])" = 'yes'; then
39                 AC_DEFINE(HAVE_[]m4_toupper([$1]), 1,
40                         define to 1 to turn on $1 support)
41         else
42                 $1_cppflags=
43                 $1_ldflags=
44         fi
45         AC_SUBST(HAVE_[]m4_toupper([$1]))
46         AC_SUBST($1_cppflags)
47         AC_SUBST($1_ldflags)
48 ])
49 AC_DEFUN([REQUIRE_EXECUTABLE], [
50         AC_PATH_PROG(m4_toupper([$1]), [$1])
51         test -z "$m4_toupper([$1])" && AC_MSG_ERROR(
52                 [$1 is required to build this package])
53 ])
54
55 AC_USE_SYSTEM_EXTENSIONS
56 AC_C_BIGENDIAN()
57 AC_PROG_CC
58 AC_PROG_CPP
59
60 REQUIRE_EXECUTABLE([bison])
61 REQUIRE_EXECUTABLE([flex])
62 REQUIRE_EXECUTABLE([m4])
63
64 executables="recv filter audioc write afh play"
65 ########################################################################### osl
66 STASH_FLAGS
67 LIB_ARG_WITH([osl], [-losl])
68 HAVE_OSL=yes
69 AC_CHECK_HEADER(osl.h, [], [HAVE_OSL=no])
70 AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no])
71 LIB_SUBST_FLAGS(osl)
72 UNSTASH_FLAGS
73 ######################################################################## lopsub
74 HAVE_LOPSUB=yes
75 AC_PATH_PROG([LOPSUBGEN], [lopsubgen])
76 test -z "$LOPSUBGEN" && HAVE_LOPSUB=no
77 STASH_FLAGS
78 LIB_ARG_WITH([lopsub], [-llopsub])
79 AC_CHECK_HEADER(lopsub.h, [], [HAVE_LOPSUB=no])
80 AC_CHECK_LIB([lopsub], [lls_merge], [], [HAVE_LOPSUB=no])
81 if test $HAVE_LOPSUB = no; then AC_MSG_ERROR([
82         The lopsub library is required to build this software, but
83         the above checks indicate it is not installed on your system.
84         Run the following command to download a copy.
85                 git clone git://git.tuebingen.mpg.de/lopsub.git
86         Install the library, then run this configure script again.
87 ])
88 fi
89 LIB_SUBST_FLAGS([lopsub])
90 UNSTASH_FLAGS
91 ######################################################################## openssl
92 STASH_FLAGS
93 HAVE_OPENSSL=yes
94 LIB_ARG_WITH([openssl], [-lssl -lcrypto])
95 AC_CHECK_HEADER(openssl/ssl.h, [], [HAVE_OPENSSL=no])
96 AC_CHECK_LIB([crypto], [RAND_bytes], [], [HAVE_OPENSSL=no])
97 LIB_SUBST_FLAGS(openssl)
98 if test $HAVE_OPENSSL = yes; then
99         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                 sched
425                 stdin
426                 stdout
427                 time
428                 sideband
429                 client_common
430                 buffer_tree
431                 crypt_common
432                 base64
433                 version
434         "
435         if test "$CRYPTOLIB" = openssl; then
436                 client_errlist_objs="$client_errlist_objs crypt"
437         else
438                 client_errlist_objs="$client_errlist_objs gcrypt"
439         fi
440         if test $HAVE_READLINE = yes; then
441                 client_errlist_objs="$client_errlist_objs interactive"
442         fi
443         client_objs="$client_errlist_objs"
444         AC_SUBST(client_objs, add_dot_o($client_errlist_objs))
445 else
446         build_client="no"
447 fi
448 ############################################################# audiod
449 if test -n "$CRYPTOLIB"; then
450         build_audiod="yes"
451         executables="$executables audiod"
452         audiod_audio_formats="wma"
453         audiod_errlist_objs="$audiod_errlist_objs
454                 audiod
455                 signal
456                 string
457                 daemon
458                 stat
459                 net
460                 crypt_common
461                 base64
462                 sideband
463                 time
464                 grab_client
465                 filter_common
466                 wav_filter
467                 compress_filter
468                 amp_filter
469                 http_recv
470                 dccp_recv
471                 recv_common
472                 fd
473                 sched
474                 write_common
475                 file_write
476                 audiod_command
477                 fecdec_filter
478                 client_common
479                 udp_recv
480                 color
481                 fec
482                 prebuffer_filter
483                 version
484                 bitstream
485                 imdct
486                 wma_common
487                 wmadec_filter
488                 buffer_tree
489                 sync_filter
490                 lsu
491         "
492         if test "$CRYPTOLIB" = openssl; then
493                 audiod_errlist_objs="$audiod_errlist_objs crypt"
494         else
495                 audiod_errlist_objs="$audiod_errlist_objs gcrypt"
496         fi
497         NEED_VORBIS_OBJECTS && {
498                 audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
499                 audiod_audio_formats="$audiod_audio_formats ogg"
500         }
501         NEED_SPEEX_OBJECTS && {
502                 audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
503                 audiod_audio_formats="$audiod_audio_formats spx"
504         }
505         NEED_OPUS_OBJECTS && {
506                 audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
507                 audiod_audio_formats="$audiod_audio_formats opus"
508         }
509         NEED_FLAC_OBJECTS && {
510                 audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
511                 audiod_audio_formats="$audiod_audio_formats flac"
512         }
513         if test $HAVE_FAAD = yes; then
514                 audiod_errlist_objs="$audiod_errlist_objs aacdec_filter"
515                 audiod_audio_formats="$audiod_audio_formats aac"
516         fi
517         if test $HAVE_MAD = yes; then
518                 audiod_audio_formats="$audiod_audio_formats mp3"
519                 audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
520         fi
521         if test $HAVE_OSS = yes; then
522                 audiod_errlist_objs="$audiod_errlist_objs oss_write"
523         fi
524         if test $HAVE_ALSA = yes; then
525                 audiod_errlist_objs="$audiod_errlist_objs alsa_write"
526         fi
527         NEED_AO_OBJECTS && {
528                 audiod_errlist_objs="$audiod_errlist_objs ao_write"
529         }
530         if test $HAVE_SAMPLERATE = yes; then
531                 audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
532         fi
533         audiod_objs="$audiod_errlist_objs"
534         AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
535
536         enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
537         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
538                 enum of audio formats supported by audiod)
539         names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
540         AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
541 else
542         build_audiod="no"
543 fi
544 ########################################################################### mixer
545 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
546         build_mixer="yes"
547         executables="$executables mixer"
548         mixer_errlist_objs="mixer exec string fd version"
549         if test $HAVE_OSS = yes; then
550                 mixer_errlist_objs="$mixer_errlist_objs oss_mix"
551         fi
552         if test $HAVE_ALSA = yes; then
553                 mixer_errlist_objs="$mixer_errlist_objs alsa_mix"
554         fi
555         mixer_objs="$mixer_errlist_objs"
556         AC_SUBST(mixer_objs, add_dot_o($mixer_objs))
557 else
558         build_mixer="no"
559         AC_MSG_WARN([no mixer support])
560 fi
561 ########################################################################### gui
562 if test $HAVE_CURSES = yes; then
563         build_gui="yes"
564         executables="$executables gui"
565         gui_errlist_objs="
566                 exec
567                 signal
568                 string
569                 stat
570                 ringbuffer
571                 fd
572                 gui
573                 gui_theme
574                 time
575                 sched
576                 version
577         "
578         gui_objs="$gui_errlist_objs"
579         AC_SUBST(gui_objs, add_dot_o($gui_objs))
580 else
581         build_gui="no"
582         AC_MSG_WARN([no curses lib, cannot build para_gui])
583 fi
584 ######################################################################## filter
585 filter_errlist_objs="
586         filter_common
587         wav_filter
588         compress_filter
589         filter
590         string
591         stdin
592         stdout
593         sched
594         fd
595         amp_filter
596         fecdec_filter
597         fec
598         version
599         prebuffer_filter
600         time
601         bitstream
602         imdct
603         wma_common
604         wmadec_filter
605         buffer_tree
606         net
607         sync_filter
608 "
609 NEED_VORBIS_OBJECTS && filter_errlist_objs="$filter_errlist_objs oggdec_filter"
610 NEED_SPEEX_OBJECTS && filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
611 NEED_OPUS_OBJECTS && filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
612 NEED_FLAC_OBJECTS && filter_errlist_objs="$filter_errlist_objs flacdec_filter"
613 if test $HAVE_FAAD = yes; then
614         filter_errlist_objs="$filter_errlist_objs aacdec_filter"
615 fi
616 if test $HAVE_MAD = yes; then
617         filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
618 fi
619 if test $HAVE_SAMPLERATE = yes; then
620         filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
621 fi
622 filter_objs="$filter_errlist_objs"
623
624 AC_SUBST(filter_objs, add_dot_o($filter_objs))
625 ########################################################################## recv
626 recv_errlist_objs="
627         http_recv
628         recv_common
629         recv
630         time
631         string
632         net
633         dccp_recv
634         fd
635         sched
636         stdout
637         udp_recv
638         buffer_tree
639         afh_recv
640         afh_common
641         wma_afh
642         wma_common
643         mp3_afh
644         version
645 "
646 NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
647 NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
648 NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
649 NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
650 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
651
652 if test $HAVE_FAAD = yes; then
653         recv_errlist_objs="$recv_errlist_objs aac_afh"
654 fi
655 recv_objs="$recv_errlist_objs"
656 AC_SUBST(recv_objs, add_dot_o($recv_objs))
657 ########################################################################### afh
658 audio_format_handlers="mp3 wma"
659 afh_errlist_objs="
660         afh
661         string
662         fd
663         mp3_afh
664         afh_common
665         time
666         wma_afh
667         wma_common
668         version
669 "
670 NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
671 NEED_VORBIS_OBJECTS && {
672         afh_errlist_objs="$afh_errlist_objs ogg_afh"
673         audio_format_handlers="$audio_format_handlers ogg"
674 }
675 NEED_SPEEX_OBJECTS && {
676         afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
677         audio_format_handlers="$audio_format_handlers spx"
678 }
679 NEED_OPUS_OBJECTS && {
680         afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
681         audio_format_handlers="$audio_format_handlers opus"
682 }
683 NEED_FLAC_OBJECTS && {
684         afh_errlist_objs="$afh_errlist_objs flac_afh"
685         audio_format_handlers="$audio_format_handlers flac"
686 }
687 if test $HAVE_FAAD = yes; then
688         afh_errlist_objs="$afh_errlist_objs aac_afh"
689         audio_format_handlers="$audio_format_handlers aac"
690 fi
691
692 afh_objs="$afh_errlist_objs"
693
694 AC_SUBST(afh_objs, add_dot_o($afh_objs))
695 ########################################################################## play
696 play_errlist_objs="
697         play
698         fd
699         sched
700         buffer_tree
701         time
702         string
703         net
704         afh_recv
705         afh_common
706         wma_afh
707         wma_common
708         mp3_afh
709         recv_common
710         udp_recv
711         http_recv
712         dccp_recv
713         filter_common
714         fec
715         bitstream
716         imdct
717         wav_filter
718         compress_filter
719         amp_filter
720         prebuffer_filter
721         fecdec_filter
722         wmadec_filter
723         write_common
724         file_write
725         version
726         sync_filter
727         lsu
728 "
729 NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
730 NEED_VORBIS_OBJECTS && {
731         play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
732 }
733 NEED_SPEEX_OBJECTS && {
734         play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
735 }
736 NEED_OPUS_OBJECTS &&
737         play_errlist_objs="$play_errlist_objs
738                 opusdec_filter
739                 opus_afh
740                 opus_common
741         "
742 NEED_FLAC_OBJECTS && {
743         play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
744 }
745 if test $HAVE_FAAD = yes; then
746         play_errlist_objs="$play_errlist_objs aac_afh aacdec_filter"
747 fi
748 if test $HAVE_MAD = yes; then
749         play_errlist_objs="$play_errlist_objs mp3dec_filter"
750 fi
751 if test $HAVE_OSS = yes; then
752         play_errlist_objs="$play_errlist_objs oss_write"
753 fi
754 if test $HAVE_ALSA = yes; then
755         play_errlist_objs="$play_errlist_objs alsa_write"
756 fi
757 NEED_AO_OBJECTS && {
758         play_errlist_objs="$play_errlist_objs ao_write"
759 }
760 if test $HAVE_READLINE = yes; then
761         play_errlist_objs="$play_errlist_objs interactive"
762 fi
763 if test $HAVE_SAMPLERATE = yes; then
764         play_errlist_objs="$play_errlist_objs resample_filter check_wav"
765 fi
766
767 play_objs="$play_errlist_objs"
768 AC_SUBST(play_objs, add_dot_o($play_objs))
769 ######################################################################### write
770 write_errlist_objs="
771         write
772         write_common
773         file_write
774         time
775         fd
776         string
777         sched
778         stdin
779         buffer_tree
780         check_wav
781         version
782 "
783
784 NEED_AO_OBJECTS && {
785         write_errlist_objs="$write_errlist_objs ao_write"
786 }
787 if test $HAVE_OSS = yes; then
788         write_errlist_objs="$write_errlist_objs oss_write"
789 fi
790 if test $HAVE_ALSA = yes; then
791         write_errlist_objs="$write_errlist_objs alsa_write"
792 fi
793 write_objs="$write_errlist_objs"
794 AC_SUBST(write_objs, add_dot_o($write_objs))
795 ######################################################################## audioc
796 audioc_errlist_objs="
797         audioc
798         string
799         net
800         fd
801         version
802 "
803 if test $HAVE_READLINE = yes; then
804         audioc_errlist_objs="$audioc_errlist_objs
805                 buffer_tree
806                 interactive
807                 sched
808                 time
809         "
810 fi
811 audioc_objs="$audioc_errlist_objs"
812 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
813
814 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
815         [formats supported by para_server and para_afh])
816 AC_SUBST(executables)
817
818 AC_OUTPUT
819 AC_MSG_NOTICE([
820 paraslash configuration:
821 ~~~~~~~~~~~~~~~~~~~~~~~~
822 crypto lib: ${CRYPTOLIB:-[none]}
823 unix socket credentials: $have_ucred
824 readline (interactive CLIs): $HAVE_READLINE
825 id3 version 2 support: $HAVE_ID3TAG
826 faad: $HAVE_FAAD
827 audio format handlers: $audio_format_handlers
828
829 para_server: $build_server
830 para_gui: $build_gui
831 para_mixer: $build_mixer
832 para_client: $build_client
833 para_audiod: $build_audiod
834 ])