]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - configure.ac
build: Construct audiod and client object list in Makefile.
[paraslash.git] / configure.ac
index 83375559516396cf3a052fbc4f90871a344f732b..e574cf79766a1aba11a98ff5de8b5ef32077c198 100644 (file)
@@ -38,6 +38,7 @@ AC_DEFUN([LIB_SUBST_FLAGS], [
        if test "$HAVE_[]m4_toupper([$1])" = 'yes'; then
                AC_DEFINE(HAVE_[]m4_toupper([$1]), 1,
                        define to 1 to turn on $1 support)
+               AC_SUBST(HAVE_[]m4_toupper([$1]))
        else
                $1_cppflags=
                $1_ldflags=
@@ -46,17 +47,21 @@ AC_DEFUN([LIB_SUBST_FLAGS], [
        AC_SUBST($1_cppflags)
        AC_SUBST($1_ldflags)
 ])
+AC_DEFUN([REQUIRE_EXECUTABLE], [
+        AC_PATH_PROG(m4_toupper([$1]), [$1])
+        test -z "$m4_toupper([$1])" && AC_MSG_ERROR(
+               [$1 is required to build this package])
+])
 
 AC_USE_SYSTEM_EXTENSIONS
 AC_C_BIGENDIAN()
-
-AC_PATH_PROG([M4], [m4])
-test -z "$M4" && AC_MSG_ERROR(
-       [The m4 macro processor is required to build this package])
-
 AC_PROG_CC
 AC_PROG_CPP
 
+REQUIRE_EXECUTABLE([bison])
+REQUIRE_EXECUTABLE([flex])
+REQUIRE_EXECUTABLE([m4])
+
 executables="recv filter audioc write afh play"
 ########################################################################### osl
 STASH_FLAGS
@@ -92,8 +97,38 @@ AC_CHECK_HEADER(openssl/ssl.h, [], [HAVE_OPENSSL=no])
 AC_CHECK_LIB([crypto], [RAND_bytes], [], [HAVE_OPENSSL=no])
 LIB_SUBST_FLAGS(openssl)
 if test $HAVE_OPENSSL = yes; then
-       AC_CHECK_LIB([crypto], [RSA_set0_key],
-               AC_DEFINE([HAVE_RSA_SET0_KEY], [1], [openssl-1.1]))
+       HAVE_RSA_SET0_KEY=yes
+       AC_CHECK_DECL([RSA_set0_key], [], [], [#include <openssl/rsa.h>])
+       AC_CHECK_LIB([crypto], [RSA_set0_key], [], [])
+       if test "$ac_cv_have_decl_RSA_set0_key" != "$ac_cv_lib_crypto_RSA_set0_key"; then
+               AC_MSG_ERROR([openssl header/library mismatch])
+       fi
+       if test "$ac_cv_have_decl_RSA_set0_key" = yes; then
+               AC_DEFINE([HAVE_RSA_SET0_KEY], [1], [openssl >= 1.1])
+       else
+               AC_MSG_WARN([
+       Old openssl library detected. Support for openssl-1.0 and earlier
+       will be removed in the next major paraslash release. Please upgrade
+       your openssl installation.])
+       fi
+       HAVE_CRYPTO_CLEANUP_ALL_EX_DATA=yes
+       AC_CHECK_DECL([CRYPTO_cleanup_all_ex_data], [],
+               [HAVE_CRYPTO_CLEANUP_ALL_EX_DATA=no],
+               [#include <openssl/rsa.h>])
+       AC_CHECK_LIB([crypto], [CRYPTO_cleanup_all_ex_data], [],
+               [HAVE_CRYPTO_CLEANUP_ALL_EX_DATA=no])
+       test $HAVE_CRYPTO_CLEANUP_ALL_EX_DATA = yes &&
+               AC_DEFINE([HAVE_CRYPTO_CLEANUP_ALL_EX_DATA], [1],
+                       [not available on FreeBSD 12])
+       HAVE_OPENSSL_THREAD_STOP=yes
+       AC_CHECK_DECL([OPENSSL_thread_stop], [],
+               [HAVE_OPENSSL_THREAD_STOP=no],
+               [#include <openssl/crypto.h>])
+       AC_CHECK_LIB([crypto], [OPENSSL_thread_stop], [],
+               [HAVE_OPENSSL_THREAD_STOP=no])
+       test $HAVE_OPENSSL_THREAD_STOP = yes &&
+               AC_DEFINE([HAVE_OPENSSL_THREAD_STOP], [1],
+                       [not available on openssl-1.0])
 fi
 UNSTASH_FLAGS
 ######################################################################### gcrypt
@@ -138,6 +173,7 @@ case "$enable_cryptolib" in
        ;;
 esac
 AC_SUBST(crypto_ldflags)
+AC_SUBST(CRYPTOLIB)
 ########################################################################## iconv
 STASH_FLAGS
 LIBS=
@@ -169,6 +205,17 @@ AC_CHECK_TYPE([struct ucred], [
        #include <sys/types.h>
        #include <sys/socket.h>
 ])
+################################################################### FNM_EXTMATCH
+AC_MSG_CHECKING(for extended wildcard pattern matching)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+       #include <fnmatch.h>
+]], [[
+       unsigned n = FNM_EXTMATCH;
+]])], [have_fnm_extmatch=yes], [have_fnm_extmatch=no])
+AC_MSG_RESULT($have_fnm_extmatch)
+if test $have_fnm_extmatch = yes; then
+       AC_DEFINE(HAVE_FNM_EXTMATCH, 1, define to 1 if FNM_EXTMATCH is defined)
+fi
 ########################################################################### curses
 STASH_FLAGS
 LIB_ARG_WITH([curses], [])
@@ -228,35 +275,32 @@ AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
 LIB_SUBST_FLAGS(flac)
 UNSTASH_FLAGS
 
-# some helper functions for codecs which use the ogg container format
-AC_DEFUN([NEED_OGG_OBJECTS], [{
-       test "$HAVE_OGG" = 'yes' -a \( \
+# some helpers for the ogg container format
+AS_IF([test "$HAVE_OGG" = 'yes' -a \( \
                 "$HAVE_VORBIS" = 'yes' \
                -o "$HAVE_SPEEX" = 'yes' \
                -o "$HAVE_OPUS" = 'yes' \
                -o "$HAVE_FLAC" = 'yes' \
-       \)
-}])
-AC_DEFUN([NEED_VORBIS_OBJECTS], [{
-       test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
-}])
-AC_DEFUN([NEED_SPEEX_OBJECTS], [{
-       test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
-}])
-AC_DEFUN([NEED_OPUS_OBJECTS], [{
-       test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
-}])
-AC_DEFUN([NEED_FLAC_OBJECTS], [{
-       test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
-}])
+\)], [NEED_OGG_OBJECTS=yes], [NEED_OGG_OBJECTS=no])
+AC_SUBST([NEED_OGG_OBJECTS])
+AS_IF([test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'],
+       [NEED_VORBIS_OBJECTS=yes], [NEED_VORBIS_OBJECTS=no])
+AC_SUBST([NEED_VORBIS_OBJECTS])
+AS_IF([test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'],
+       [NEED_SPEEX_OBJECTS=yes], [NEED_SPEEX_OBJECTS=no])
+AC_SUBST([NEED_SPEEX_OBJECTS])
+AS_IF([test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'],
+       [NEED_OPUS_OBJECTS=yes], [NEED_OPUS_OBJECTS=no])
+AC_SUBST([NEED_OPUS_OBJECTS])
+AS_IF([test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'],
+       [NEED_FLAC_OBJECTS=yes], [NEED_FLAC_OBJECTS=no])
+AC_SUBST([NEED_FLAC_OBJECTS])
 ########################################################################### faad
 STASH_FLAGS
-LIB_ARG_WITH([faad], [-lfaad -lmp4ff])
+LIB_ARG_WITH([faad], [-lfaad])
 HAVE_FAAD=yes
 AC_CHECK_HEADER(neaacdec.h, [], HAVE_FAAD=no)
-AC_CHECK_HEADER(mp4ff.h, [], HAVE_FAAD=no)
 AC_CHECK_LIB([faad], [NeAACDecOpen], [], HAVE_FAAD=no)
-AC_CHECK_LIB([mp4ff], [mp4ff_meta_get_artist], [], HAVE_FAAD=no)
 LIB_SUBST_FLAGS(faad)
 UNSTASH_FLAGS
 ########################################################################### mad
@@ -306,7 +350,9 @@ AC_CHECK_HEADER(ao/ao.h, [], HAVE_AO=no)
 AC_CHECK_LIB([ao], [ao_initialize], [], HAVE_AO=no)
 LIB_SUBST_FLAGS(ao)
 UNSTASH_FLAGS
-AC_DEFUN([NEED_AO_OBJECTS], [{ test $HAVE_AO = yes -a $HAVE_PTHREAD = yes; }])
+AS_IF([test $HAVE_AO = yes -a $HAVE_PTHREAD = yes],
+       [NEED_AO_OBJECTS]=yes, [NEED_AO_OBJECTS=no])
+AC_SUBST([NEED_AO_OBJECTS])
 ######################################################################## readline
 STASH_FLAGS
 AC_SEARCH_LIBS([tgetent], [tinfo curses terminfo termcap])
@@ -333,64 +379,15 @@ AC_CHECK_HEADER(samplerate.h, [], HAVE_SAMPLERATE=no)
 AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
 LIB_SUBST_FLAGS(samplerate)
 UNSTASH_FLAGS
-######################################################################### server
+######################################################################### ubsan
+AC_ARG_ENABLE([ubsan], [AS_HELP_STRING(--enable-ubsan,
+       [Detect and report undefined behaviour.])],
+       [ENABLE_UBSAN=yes], [ENABLE_UBSAN=no])
+AC_SUBST(ENABLE_UBSAN)
+######################################################### server and upgrade_db
 if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
        build_server="yes"
-       executables="$executables server"
-       server_errlist_objs="
-               server
-               afh_common
-               mp3_afh
-               vss
-               command
-               net
-               string
-               signal
-               time
-               daemon
-               http_send
-               close_on_fork
-               mm
-               crypt_common
-               base64
-               ipc
-               dccp_send
-               fd
-               user_list
-               chunk_queue
-               afs
-               aft
-               mood
-               score
-               attribute
-               blob
-               playlist
-               sched
-               acl
-               send_common
-               udp_send
-               color
-               fec
-               wma_afh
-               wma_common
-               sideband
-               version
-       "
-       if test "$CRYPTOLIB" = openssl; then
-               server_errlist_objs="$server_errlist_objs crypt"
-       else
-               server_errlist_objs="$server_errlist_objs gcrypt"
-       fi
-       NEED_OGG_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh_common"
-       NEED_VORBIS_OBJECTS() && server_errlist_objs="$server_errlist_objs ogg_afh"
-       NEED_SPEEX_OBJECTS() && server_errlist_objs="$server_errlist_objs spx_afh spx_common"
-       NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
-       NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
-       if test $HAVE_FAAD = yes; then
-               server_errlist_objs="$server_errlist_objs aac_afh"
-       fi
-       server_objs="$server_errlist_objs"
-       AC_SUBST(server_objs, add_dot_o($server_objs))
+       executables="$executables server upgrade_db"
 else
        build_server="no"
 fi
@@ -398,32 +395,6 @@ fi
 if test -n "$CRYPTOLIB"; then
        build_client="yes"
        executables="$executables client"
-       client_errlist_objs="
-               client
-               net
-               string
-               fd
-               sched
-               stdin
-               stdout
-               time
-               sideband
-               client_common
-               buffer_tree
-               crypt_common
-               base64
-               version
-       "
-       if test "$CRYPTOLIB" = openssl; then
-               client_errlist_objs="$client_errlist_objs crypt"
-       else
-               client_errlist_objs="$client_errlist_objs gcrypt"
-       fi
-       if test $HAVE_READLINE = yes; then
-               client_errlist_objs="$client_errlist_objs interactive"
-       fi
-       client_objs="$client_errlist_objs"
-       AC_SUBST(client_objs, add_dot_o($client_errlist_objs))
 else
        build_client="no"
 fi
@@ -431,94 +402,6 @@ fi
 if test -n "$CRYPTOLIB"; then
        build_audiod="yes"
        executables="$executables audiod"
-       audiod_audio_formats="wma"
-       audiod_errlist_objs="$audiod_errlist_objs
-               audiod
-               signal
-               string
-               daemon
-               stat
-               net
-               crypt_common
-               base64
-               sideband
-               time
-               grab_client
-               filter_common
-               wav_filter
-               compress_filter
-               amp_filter
-               http_recv
-               dccp_recv
-               recv_common
-               fd
-               sched
-               write_common
-               file_write
-               audiod_command
-               fecdec_filter
-               client_common
-               udp_recv
-               color
-               fec
-               prebuffer_filter
-               version
-               bitstream
-               imdct
-               wma_common
-               wmadec_filter
-               buffer_tree
-               sync_filter
-       "
-       if test "$CRYPTOLIB" = openssl; then
-               audiod_errlist_objs="$audiod_errlist_objs crypt"
-       else
-               audiod_errlist_objs="$audiod_errlist_objs gcrypt"
-       fi
-       NEED_VORBIS_OBJECTS && {
-               audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
-               audiod_audio_formats="$audiod_audio_formats ogg"
-       }
-       NEED_SPEEX_OBJECTS && {
-               audiod_errlist_objs="$audiod_errlist_objs spxdec_filter spx_common"
-               audiod_audio_formats="$audiod_audio_formats spx"
-       }
-       NEED_OPUS_OBJECTS && {
-               audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
-               audiod_audio_formats="$audiod_audio_formats opus"
-       }
-       NEED_FLAC_OBJECTS && {
-               audiod_errlist_objs="$audiod_errlist_objs flacdec_filter"
-               audiod_audio_formats="$audiod_audio_formats flac"
-       }
-       if test $HAVE_FAAD = yes; then
-               audiod_errlist_objs="$audiod_errlist_objs aacdec_filter"
-               audiod_audio_formats="$audiod_audio_formats aac"
-       fi
-       if test $HAVE_MAD = yes; then
-               audiod_audio_formats="$audiod_audio_formats mp3"
-               audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter"
-       fi
-       if test $HAVE_OSS = yes; then
-               audiod_errlist_objs="$audiod_errlist_objs oss_write"
-       fi
-       if test $HAVE_ALSA = yes; then
-               audiod_errlist_objs="$audiod_errlist_objs alsa_write"
-       fi
-       NEED_AO_OBJECTS && {
-               audiod_errlist_objs="$audiod_errlist_objs ao_write"
-       }
-       if test $HAVE_SAMPLERATE = yes; then
-               audiod_errlist_objs="$audiod_errlist_objs resample_filter check_wav"
-       fi
-       audiod_objs="$audiod_errlist_objs"
-       AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
-
-       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
@@ -526,14 +409,13 @@ fi
 if test $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
        build_mixer="yes"
        executables="$executables mixer"
-       mixer_errlist_objs="mixer exec string fd version"
+       mixer_objs="mixer exec string fd time lsu version"
        if test $HAVE_OSS = yes; then
-               mixer_errlist_objs="$mixer_errlist_objs oss_mix"
+               mixer_objs="$mixer_objs oss_mix"
        fi
        if test $HAVE_ALSA = yes; then
-               mixer_errlist_objs="$mixer_errlist_objs alsa_mix"
+               mixer_objs="$mixer_objs alsa_mix"
        fi
-       mixer_objs="$mixer_errlist_objs"
        AC_SUBST(mixer_objs, add_dot_o($mixer_objs))
 else
        build_mixer="no"
@@ -543,7 +425,7 @@ fi
 if test $HAVE_CURSES = yes; then
        build_gui="yes"
        executables="$executables gui"
-       gui_errlist_objs="
+       gui_objs="
                exec
                signal
                string
@@ -552,18 +434,18 @@ if test $HAVE_CURSES = yes; then
                fd
                gui
                gui_theme
+               lsu
                time
                sched
                version
        "
-       gui_objs="$gui_errlist_objs"
        AC_SUBST(gui_objs, add_dot_o($gui_objs))
 else
        build_gui="no"
        AC_MSG_WARN([no curses lib, cannot build para_gui])
 fi
 ######################################################################## filter
-filter_errlist_objs="
+filter_objs="
        filter_common
        wav_filter
        compress_filter
@@ -576,6 +458,7 @@ filter_errlist_objs="
        amp_filter
        fecdec_filter
        fec
+       lsu
        version
        prebuffer_filter
        time
@@ -587,24 +470,26 @@ filter_errlist_objs="
        net
        sync_filter
 "
-NEED_VORBIS_OBJECTS && filter_errlist_objs="$filter_errlist_objs oggdec_filter"
-NEED_SPEEX_OBJECTS && filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
-NEED_OPUS_OBJECTS && filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
-NEED_FLAC_OBJECTS && filter_errlist_objs="$filter_errlist_objs flacdec_filter"
+AS_IF([test $NEED_VORBIS_OBJECTS = yes],
+       [filter_objs="$filter_objs oggdec_filter"])
+AS_IF([test $NEED_SPEEX_OBJECTS = yes],
+       [filter_objs="$filter_objs spxdec_filter spx_common"])
+AS_IF([test $NEED_OPUS_OBJECTS = yes],
+       [filter_objs="$filter_objs opusdec_filter opus_common"])
+AS_IF([test $NEED_FLAC_OBJECTS = yes],
+       [filter_objs="$filter_objs flacdec_filter"])
 if test $HAVE_FAAD = yes; then
-       filter_errlist_objs="$filter_errlist_objs aacdec_filter"
+       filter_objs="$filter_objs aacdec_filter"
 fi
 if test $HAVE_MAD = yes; then
-       filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
+       filter_objs="$filter_objs mp3dec_filter"
 fi
 if test $HAVE_SAMPLERATE = yes; then
-       filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
+       filter_objs="$filter_objs resample_filter check_wav"
 fi
-filter_objs="$filter_errlist_objs"
-
 AC_SUBST(filter_objs, add_dot_o($filter_objs))
 ########################################################################## recv
-recv_errlist_objs="
+recv_objs="
        http_recv
        recv_common
        recv
@@ -624,20 +509,21 @@ recv_errlist_objs="
        mp3_afh
        version
 "
-NEED_OGG_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh_common"
-NEED_VORBIS_OBJECTS && recv_errlist_objs="$recv_errlist_objs ogg_afh"
-NEED_SPEEX_OBJECTS && recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
-NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
-NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
+AS_IF([test $NEED_OGG_OBJECTS = yes], [recv_objs="$recv_objs ogg_afh_common"])
+AS_IF([test $NEED_VORBIS_OBJECTS = yes], [recv_objs="$recv_objs ogg_afh"])
+AS_IF([test $NEED_SPEEX_OBJECTS = yes],
+       [recv_objs="$recv_objs spx_afh spx_common"])
+AS_IF([test $NEED_OPUS_OBJECTS = yes],
+       [recv_objs="$recv_objs opus_afh opus_common"])
+AS_IF([test $NEED_FLAC_OBJECTS = yes], [recv_objs="$recv_objs flac_afh"])
 
 if test $HAVE_FAAD = yes; then
-       recv_errlist_objs="$recv_errlist_objs aac_afh"
+       recv_objs="$recv_objs aac_afh mp4"
 fi
-recv_objs="$recv_errlist_objs"
 AC_SUBST(recv_objs, add_dot_o($recv_objs))
 ########################################################################### afh
 audio_format_handlers="mp3 wma"
-afh_errlist_objs="
+afh_objs="
        afh
        string
        fd
@@ -648,33 +534,30 @@ afh_errlist_objs="
        wma_common
        version
 "
-NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
-NEED_VORBIS_OBJECTS && {
-       afh_errlist_objs="$afh_errlist_objs ogg_afh"
+AS_IF([test $NEED_OGG_OBJECTS = yes], [afh_objs="$afh_objs ogg_afh_common"])
+AS_IF([test $NEED_VORBIS_OBJECTS = yes], [
+       afh_objs="$afh_objs ogg_afh"
        audio_format_handlers="$audio_format_handlers ogg"
-}
-NEED_SPEEX_OBJECTS && {
-       afh_errlist_objs="$afh_errlist_objs spx_afh spx_common"
+])
+AS_IF([test $NEED_SPEEX_OBJECTS = yes], [
+       afh_objs="$afh_objs spx_afh spx_common"
        audio_format_handlers="$audio_format_handlers spx"
-}
-NEED_OPUS_OBJECTS && {
-       afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
+])
+AS_IF([test $NEED_OPUS_OBJECTS = yes], [
+       afh_objs="$afh_objs opus_afh opus_common"
        audio_format_handlers="$audio_format_handlers opus"
-}
-NEED_FLAC_OBJECTS && {
-       afh_errlist_objs="$afh_errlist_objs flac_afh"
+])
+AS_IF([test $NEED_FLAC_OBJECTS = yes], [
+       afh_objs="$afh_objs flac_afh"
        audio_format_handlers="$audio_format_handlers flac"
-}
+])
 if test $HAVE_FAAD = yes; then
-       afh_errlist_objs="$afh_errlist_objs aac_afh"
+       afh_objs="$afh_objs aac_afh mp4"
        audio_format_handlers="$audio_format_handlers aac"
 fi
-
-afh_objs="$afh_errlist_objs"
-
 AC_SUBST(afh_objs, add_dot_o($afh_objs))
 ########################################################################## play
-play_errlist_objs="
+play_objs="
        play
        fd
        sched
@@ -705,49 +588,41 @@ play_errlist_objs="
        file_write
        version
        sync_filter
+       lsu
 "
-NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
-NEED_VORBIS_OBJECTS && {
-       play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
-}
-NEED_SPEEX_OBJECTS && {
-       play_errlist_objs="$play_errlist_objs spxdec_filter spx_afh spx_common"
-}
-NEED_OPUS_OBJECTS &&
-       play_errlist_objs="$play_errlist_objs
-               opusdec_filter
-               opus_afh
-               opus_common
-       "
-NEED_FLAC_OBJECTS && {
-       play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
-}
+AS_IF([test $NEED_OGG_OBJECTS = yes], [play_objs="$play_objs ogg_afh_common"])
+AS_IF([test $NEED_VORBIS_OBJECTS = yes],
+       [play_objs="$play_objs oggdec_filter ogg_afh"])
+AS_IF([test $NEED_SPEEX_OBJECTS = yes],
+       [play_objs="$play_objs spxdec_filter spx_afh spx_common"])
+AS_IF([test $NEED_OPUS_OBJECTS = yes],
+       [play_objs="$play_objs opusdec_filter opus_afh opus_common"])
+AS_IF([test $NEED_FLAC_OBJECTS = yes],
+       [play_objs="$play_objs flacdec_filter flac_afh"])
 if test $HAVE_FAAD = yes; then
-       play_errlist_objs="$play_errlist_objs aac_afh aacdec_filter"
+       play_objs="$play_objs aac_afh aacdec_filter mp4"
 fi
 if test $HAVE_MAD = yes; then
-       play_errlist_objs="$play_errlist_objs mp3dec_filter"
+       play_objs="$play_objs mp3dec_filter"
 fi
 if test $HAVE_OSS = yes; then
-       play_errlist_objs="$play_errlist_objs oss_write"
+       play_objs="$play_objs oss_write"
 fi
 if test $HAVE_ALSA = yes; then
-       play_errlist_objs="$play_errlist_objs alsa_write"
+       play_objs="$play_objs alsa_write"
+fi
+if test $NEED_AO_OBJECTS = yes; then
+       play_objs="$play_objs ao_write"
 fi
-NEED_AO_OBJECTS && {
-       play_errlist_objs="$play_errlist_objs ao_write"
-}
 if test $HAVE_READLINE = yes; then
-       play_errlist_objs="$play_errlist_objs interactive"
+       play_objs="$play_objs interactive"
 fi
 if test $HAVE_SAMPLERATE = yes; then
-       play_errlist_objs="$play_errlist_objs resample_filter check_wav"
+       play_objs="$play_objs resample_filter check_wav"
 fi
-
-play_objs="$play_errlist_objs"
 AC_SUBST(play_objs, add_dot_o($play_objs))
 ######################################################################### write
-write_errlist_objs="
+write_objs="
        write
        write_common
        file_write
@@ -761,34 +636,33 @@ write_errlist_objs="
        version
 "
 
-NEED_AO_OBJECTS && {
-       write_errlist_objs="$write_errlist_objs ao_write"
-}
+if test $NEED_AO_OBJECTS = yes; then
+       write_objs="$write_objs ao_write"
+fi
 if test $HAVE_OSS = yes; then
-       write_errlist_objs="$write_errlist_objs oss_write"
+       write_objs="$write_objs oss_write"
 fi
 if test $HAVE_ALSA = yes; then
-       write_errlist_objs="$write_errlist_objs alsa_write"
+       write_objs="$write_objs alsa_write"
 fi
-write_objs="$write_errlist_objs"
 AC_SUBST(write_objs, add_dot_o($write_objs))
 ######################################################################## audioc
-audioc_errlist_objs="
+audioc_objs="
        audioc
        string
+       lsu
        net
        fd
+       time
        version
 "
 if test $HAVE_READLINE = yes; then
-       audioc_errlist_objs="$audioc_errlist_objs
+       audioc_objs="$audioc_objs
                buffer_tree
                interactive
                sched
-               time
        "
 fi
-audioc_objs="$audioc_errlist_objs"
 AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
 
 AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
@@ -800,12 +674,12 @@ AC_MSG_NOTICE([
 paraslash configuration:
 ~~~~~~~~~~~~~~~~~~~~~~~~
 crypto lib: ${CRYPTOLIB:-[none]}
-unix socket credentials: $have_ucred
 readline (interactive CLIs): $HAVE_READLINE
 id3 version 2 support: $HAVE_ID3TAG
 faad: $HAVE_FAAD
 audio format handlers: $audio_format_handlers
 
+exe: $executables
 para_server: $build_server
 para_gui: $build_gui
 para_mixer: $build_mixer