flac: Try to link also without -logg.
[paraslash.git] / configure.ac
index 8ac2b2a5549192a255665908c9d0be8953bc67a5..b456b53d148bfdfc81096e28376244e9ca979c1e 100644 (file)
@@ -9,7 +9,21 @@ AC_CONFIG_HEADER([config.h])
 AC_CONFIG_FILES([Makefile])
 AC_DEFUN([add_dot_o],[$(for i in $@; do printf "$i.o "; done)])
 AC_DEFUN([add_cmdline],[$(for i in $@; do printf "${i}.cmdline "; done)])
-AC_DEFUN([objlist_to_errlist],[$(for i in $@; do printf "DEFINE_ERRLIST($(echo $i| tr 'a-z' 'A-Z'));"; done) [const char **para_errlist[[]]] = {$(for i in $@; do printf "PARA_ERRLIST($(echo $i | tr 'a-z' 'A-Z')), "; done) }])
+AC_DEFUN([make_errlist_defines], \
+       $(for i in $@; do \
+               printf "DEFINE_ERRLIST($(echo $i | tr 'a-z' 'A-Z'));"; \
+       done) \
+)
+AC_DEFUN([make_para_errlists], \
+       $(for i in $@; do \
+               printf "PARA_ERRLIST($(echo $i | tr 'a-z' 'A-Z')), "; \
+       done) \
+)
+AC_DEFUN([objlist_to_errlist],[ \
+       make_errlist_defines($@) \
+       [const char **para_errlist[[]]] = {make_para_errlists($@)} \
+])
+
 AC_PATH_PROG(UNAMEPATH, uname, no)
 if test "$UNAMEPATH" = "no"; then
        AC_MSG_ERROR(unable to determine system type)
@@ -90,8 +104,6 @@ AC_CHECK_FUNCS([atexit dup2 memchr memmove memset \
        [AC_MSG_ERROR([function not found, cannot live without it])])
 
 executables="recv filter audioc write afh play"
-audio_format_handlers="mp3 wma"
-
 ################################################################## clock_gettime
 clock_gettime_lib=
 AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
@@ -193,8 +205,6 @@ if test "$check_openssl" = "yes"; then
                openssl_ldflags="$openssl_libs -lssl -lcrypto"
                AC_SUBST(openssl_ldflags)
 
-               audiod_errlist_objs="$audiod_errlist_objs crypt"
-
                check_gcrypt="no"
        else
                AC_MSG_WARN([openssl libraries not found])
@@ -230,8 +240,6 @@ if test "$check_gcrypt" = "yes"; then
                AC_SUBST(gcrypt_cppflags)
                gcrypt_ldflags="$gcrypt_libs -lgcrypt"
                AC_SUBST(gcrypt_ldflags)
-
-               audiod_errlist_objs="$audiod_errlist_objs gcrypt"
        else
                AC_MSG_WARN([gcrypt library not found])
        fi
@@ -338,10 +346,6 @@ if test ${have_core_audio} = yes; then
        f4="-framework CoreServices"
        core_audio_ldflags="$f1 $f2 $f3 $f4"
        AC_SUBST(core_audio_ldflags)
-
-       audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
-       audiod_cmdline_objs="$audiod_cmdline_objs osx_write.cmdline"
-
        AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
 fi
 ####################################################### ogg/vorbis/speex/opus
@@ -438,23 +442,12 @@ if test "$have_vorbis" = "yes"; then
        AC_DEFINE(HAVE_OGGVORBIS, 1, define to 1 to turn on ogg/vorbis support)
        vorbis_ldflags="$vorbis_libs -lvorbis -lvorbisfile"
        AC_SUBST(vorbis_ldflags)
-
-       audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
-
-       audiod_audio_formats="$audiod_audio_formats ogg"
-       audio_format_handlers="$audio_format_handlers ogg"
 fi
 if test "$have_speex" = "yes"; then
        AC_DEFINE(HAVE_SPEEX, 1, define to 1 to turn on ogg/speex support)
        AC_SUBST(speex_cppflags)
        speex_ldflags="$speex_libs -lspeex"
        AC_SUBST(speex_ldflags)
-
-
-       audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
-
-       audiod_audio_formats="$audiod_audio_formats spx"
-       audio_format_handlers="$audio_format_handlers spx"
 else
        AC_MSG_WARN([no ogg/speex $msg])
 fi
@@ -463,11 +456,6 @@ if test "$have_opus" = "yes"; then
        AC_SUBST(opus_cppflags)
        opus_ldflags="$opus_libs -lopus"
        AC_SUBST(opus_ldflags)
-
-
-       audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
-
-       audiod_audio_formats="$audiod_audio_formats opus"
        audio_format_handlers="$audio_format_handlers opus"
 else
        AC_MSG_WARN([no ogg/opus $msg])
@@ -499,11 +487,6 @@ if test "$have_faad" = "yes"; then
        AC_SUBST(faad_cppflags)
        faad_ldflags="$faad_libs -lfaad"
        AC_SUBST(faad_ldflags)
-
-       audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
-
-       audiod_audio_formats="$audiod_audio_formats aac"
-       audio_format_handlers="$audio_format_handlers aac"
 fi
 CPPFLAGS="$OLD_CPPFLAGS"
 LDFLAGS="$OLD_LDFLAGS"
@@ -537,9 +520,6 @@ if test "$have_mad" = "yes"; then
        AC_SUBST(mad_cppflags)
        mad_ldflags="$mad_libs -lmad"
        AC_SUBST(mad_ldflags)
-       audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
-       audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
-       audiod_audio_formats="$audiod_audio_formats mp3"
 else
        AC_MSG_WARN([no mp3dec support in para_audiod/para_filter])
 fi
@@ -600,16 +580,16 @@ if test -n "$with_flac_libs"; then
        LDFLAGS="$LDFLAGS $flac_libs"
 fi
 AC_CHECK_HEADER(FLAC/stream_decoder.h, [], have_flac=no)
-AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], have_flac=no, -logg -lm)
+AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], [
+       # nope, try again with -logg
+       AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [],
+               have_flac=no, -lm -logg)
+       ], -lm)
 if test "$have_flac" = "yes"; then
        AC_DEFINE(HAVE_FLAC, 1, define to 1 if you want to build the flacdec filter)
        AC_SUBST(flac_cppflags)
        flac_ldflags="$flac_libs -lFLAC"
        AC_SUBST(flac_ldflags)
-
-       audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
-       audio_format_handlers="$audio_format_handlers flac"
-       audiod_audio_formats="$audiod_audio_formats flac"
 else
        AC_MSG_WARN([no flac support in para_audiod/para_filter/para_afh/para_server])
 fi
@@ -625,14 +605,6 @@ have_oss="yes"
 msg="=> will not build oss writer"
 
 AC_CHECK_HEADER(sys/soundcard.h, [
-       audiod_errlist_objs="$audiod_errlist_objs oss_write"
-       audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
-
-       fade_errlist_objs="$fade_errlist_objs oss_mix"
-
-       mixers="${mixers}oss "
-       default_mixer="OSS_MIX"
-
        AC_CHECK_LIB(ossaudio, _oss_ioctl, [
                        oss_ldflags="-lossaudio"
                        AC_SUBST(oss_ldflags)
@@ -676,13 +648,6 @@ fi
 if test "$have_alsa" = "yes"; then
        alsa_ldflags="-lasound"
        AC_SUBST(alsa_ldflags)
-       audiod_errlist_objs="$audiod_errlist_objs alsa_write"
-       audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
-
-       fade_errlist_objs="$fade_errlist_objs alsa_mix"
-
-       mixers="${mixers}alsa "
-       default_mixer="ALSA_MIX"
 fi
 
 CPPFLAGS="$OLD_CPPFLAGS"
@@ -735,10 +700,6 @@ if test "$have_ao" = "yes"; then
        AC_SUBST(ao_cppflags)
        ao_ldflags="$ao_libs -lao -lpthread"
        AC_SUBST(ao_ldflags)
-
-       audiod_errlist_objs="$audiod_errlist_objs ao_write"
-       audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
-
 fi
 
 CPPFLAGS="$OLD_CPPFLAGS"
@@ -770,12 +731,6 @@ AC_CHECK_HEADERS([readline/readline.h], [
        AC_MSG_WARN([readline/readline.h not found, $msg])
 ])
 
-if test "$have_curses" != "yes"; then
-       have_readline="no"
-       AC_MSG_WARN([interactive cli support depends on curses,])
-       AC_MSG_WARN([but no curses lib was detected, $msg])
-fi
-
 if test "$have_readline" = "yes"; then
        readline_ldflags="$readline_libs -lreadline"
        AC_SEARCH_LIBS([rl_free_keymap], [readline], [], [have_readline="no"])
@@ -836,9 +791,6 @@ if test "$have_samplerate" = "yes"; then
        AC_SUBST(samplerate_cppflags)
        samplerate_ldflags="$samplerate_libs -lsamplerate"
        AC_SUBST(samplerate_ldflags)
-
-       audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
-       audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
 else
        AC_MSG_WARN([no resample support in para_audiod/para_filter])
 fi
@@ -965,6 +917,7 @@ fi
 if test "$have_openssl" = "yes" -o "$have_gcrypt" = "yes"; then
        build_audiod="yes"
        executables="$executables audiod"
+       audiod_audio_formats="wma"
        audiod_cmdline_objs="$audiod_cmdline_objs
                audiod
                compress_filter
@@ -1013,20 +966,88 @@ if test "$have_openssl" = "yes" -o "$have_gcrypt" = "yes"; then
                wmadec_filter
                buffer_tree
        "
-       audiod_ldflags="$audiod_ldflags -lm"
-       audiod_audio_formats="$audiod_audio_formats wma"
+       if test "$have_openssl" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs crypt"
+       fi
+       if test "$have_gcrypt" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs gcrypt"
+       fi
+       if test "$have_core_audio" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
+               audiod_cmdline_objs="$audiod_cmdline_objs osx_write.cmdline"
+       fi
+       if test "$have_vorbis" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
+               audiod_audio_formats="$audiod_audio_formats ogg"
+       fi
+       if test "$have_speex" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
+               audiod_audio_formats="$audiod_audio_formats spx"
+       fi
+       if test "$have_opus" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
+               audiod_audio_formats="$audiod_audio_formats opus"
+       fi
+       if test "$have_faad" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
+               audiod_audio_formats="$audiod_audio_formats aac"
+       fi
+       if test "$have_mad" = "yes"; then
+               audiod_audio_formats="$audiod_audio_formats mp3"
+               audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter"
+               audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
+       fi
+       if test "$have_flac" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
+               audiod_audio_formats="$audiod_audio_formats flac"
+       fi
+       if test "$have_oss" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs oss_write"
+               audiod_cmdline_objs="$audiod_cmdline_objs oss_write"
+       fi
+       if test "$have_alsa" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs alsa_write"
+               audiod_cmdline_objs="$audiod_cmdline_objs alsa_write"
+       fi
+       if test "$have_ao" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs ao_write"
+               audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
+       fi
+       if test "$have_samplerate" = "yes"; then
+               audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
+               audiod_cmdline_objs="$audiod_cmdline_objs resample_filter"
+       fi
+       audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
+       AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
+       AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
+               errors used by para_audiod)
+
+       enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
+       AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
+               enum of audio formats supported by audiod)
+       names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
+       AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
 else
        build_audiod="no"
 fi
 ########################################################################### fade
-if test -n "$mixers"; then
+if test "$have_oss" = "yes" -o "$have_alsa" = "yes"; then
        build_fade="yes"
        executables="$executables fade"
-       fade_errlist_objs="$fade_errlist_objs fade exec string fd version ggo"
        fade_cmdline_objs="fade"
+       fade_errlist_objs="fade exec string fd version ggo"
+       if test "$have_oss" = "yes"; then
+               fade_errlist_objs="$fade_errlist_objs oss_mix"
+               mixers="${mixers}oss "
+               default_mixer="OSS_MIX"
+       fi
+       if test "$have_alsa" = "yes"; then
+               fade_errlist_objs="$fade_errlist_objs alsa_mix"
+               mixers="${mixers}alsa "
+               default_mixer="ALSA_MIX"
+       fi
        fade_objs="add_cmdline($fade_cmdline_objs) $fade_errlist_objs"
        AC_SUBST(fade_objs, add_dot_o($fade_objs))
-       AC_SUBST(fade_ldflags, $fade_ldflags)
        AC_DEFINE_UNQUOTED(INIT_FADE_ERRLISTS,
                objlist_to_errlist($fade_errlist_objs),
                errors used by para_fade)
@@ -1050,11 +1071,9 @@ if test -n "$mixers"; then
                init functions of the supported mixers)
        array="$(for i in $mixers; do printf '{.init = '$i'_mix_init},'; done)"
        AC_DEFINE_UNQUOTED(MIXER_ARRAY, $array, array of supported mixers)
-       mixer_summary="supported mixers:: $mixers, default: $default_mixer"
 else
        build_fade="no"
        AC_MSG_WARN([no mixer support])
-       mixer_summary="para_fade: no"
 fi
 ########################################################################### gui
 if test "$have_curses" = "yes"; then
@@ -1075,6 +1094,9 @@ if test "$have_curses" = "yes"; then
                ggo
        "
        gui_objs="add_cmdline($gui_cmdline_objs) $gui_errlist_objs"
+       AC_SUBST(gui_objs, add_dot_o($gui_objs))
+       AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
+               objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
 else
        build_gui="no"
        AC_MSG_WARN([no curses lib, cannot build para_gui])
@@ -1149,6 +1171,21 @@ if test "$have_samplerate" = "yes"; then
        filter_cmdline_objs="$filter_cmdline_objs resample_filter"
        filters="$filters resample"
 fi
+filters="$(echo $filters)"
+AC_SUBST(filters)
+filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
+
+AC_SUBST(filter_objs, add_dot_o($filter_objs))
+AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
+       objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
+
+enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
+AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
+       enum of supported filters)
+inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
+AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
+array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
+AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
 ########################################################################## recv
 recv_cmdline_objs="
        recv
@@ -1200,10 +1237,12 @@ if test "$have_flac" = "yes"; then
        recv_errlist_objs="$recv_errlist_objs flac_afh"
 fi
 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
+AC_SUBST(receivers, "http dccp udp afh")
 AC_SUBST(recv_objs, add_dot_o($recv_objs))
 AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs),
        errors used by para_recv)
 ########################################################################### afh
+audio_format_handlers="mp3 wma"
 afh_cmdline_objs="afh"
 afh_errlist_objs="
        afh
@@ -1224,18 +1263,23 @@ if test "$have_vorbis" = "yes" || \
 fi
 if test "$have_vorbis" = "yes"; then
        afh_errlist_objs="$afh_errlist_objs ogg_afh"
+       audio_format_handlers="$audio_format_handlers ogg"
 fi
 if test "$have_speex" = "yes"; then
        afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
+       audio_format_handlers="$audio_format_handlers spx"
 fi
 if test "$have_opus" = "yes"; then
        afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
+       audio_format_handlers="$audio_format_handlers opus"
 fi
 if test "$have_faad" = "yes"; then
        afh_errlist_objs="$afh_errlist_objs aac_common aac_afh"
+       audio_format_handlers="$audio_format_handlers aac"
 fi
 if test "$have_flac" = "yes"; then
        afh_errlist_objs="$afh_errlist_objs flac_afh"
+       audio_format_handlers="$audio_format_handlers flac"
 fi
 
 afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
@@ -1385,6 +1429,7 @@ if test "$have_alsa" = "yes"; then
        writers="$writers alsa"
        default_writer="ALSA_WRITE"
 fi
+AC_SUBST(writers)
 write_objs="add_cmdline($write_cmdline_objs) $write_errlist_objs"
 AC_SUBST(write_objs, add_dot_o($write_objs))
 AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS,
@@ -1495,36 +1540,6 @@ AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
 
 AC_SUBST(executables)
 
-filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
-audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
-
-AC_SUBST(filter_objs, add_dot_o($filter_objs))
-AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
-       objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
-
-AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
-AC_SUBST(audiod_ldflags, $audiod_ldflags)
-AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
-       errors used by para_audiod)
-
-AC_SUBST(gui_objs, add_dot_o($gui_objs))
-AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
-       objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
-
-enum="$(for i in $filters; do printf "${i}_FILTER, " | tr '[a-z]' '[A-Z]'; done)"
-AC_DEFINE_UNQUOTED(FILTER_ENUM, $enum NUM_SUPPORTED_FILTERS,
-       enum of supported filters)
-inits="$(for i in $filters; do printf 'extern void '$i'_filter_init(struct filter *f); '; done)"
-AC_DEFINE_UNQUOTED(DECLARE_FILTER_INITS, $inits, init functions of the supported filters)
-array="$(for i in $filters; do printf '{.name = "'$i'", .init = '$i'_filter_init},'; done)"
-AC_DEFINE_UNQUOTED(FILTER_ARRAY, $array, array of supported filters)
-
-enum="$(for i in $audiod_audio_formats; do printf "AUDIO_FORMAT_${i}, " | tr '[a-z]' '[A-Z]'; done)"
-AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMATS_ENUM, $enum NUM_AUDIO_FORMATS,
-       enum of audio formats supported by audiod)
-names="$(for i in $audiod_audio_formats; do printf \"$i\",' ' ; done)"
-AC_DEFINE_UNQUOTED(AUDIOD_AUDIO_FORMAT_ARRAY, $names, array of audio formats supported by audiod)
-
 AC_OUTPUT
 AC_MSG_NOTICE([
 paraslash configuration:
@@ -1533,10 +1548,10 @@ unix socket credentials: $have_ucred
 readline (interactive CLIs): $have_readline
 audio formats handlers: $audio_format_handlers
 id3 version2 support: $have_libid3tag
-filters: $(echo $filters)
+filters: $filters
 writers: $writers
 
-$mixer_summary
+para_fade: $build_fade
 para_server: $build_server
 para_gui: $build_gui
 para_fade: $build_fade