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