AC_PREREQ([2.61])
AC_INIT([paraslash], [m4_esyscmd_s(./GIT-VERSION-GEN)],
- [maan@tuebingen.mpg.de], [], [http://people.tuebingen.mpg.de/maan/paraslash/])
+ [maan@tuebingen.mpg.de], [], [https://people.tuebingen.mpg.de/maan/paraslash/])
AC_CONFIG_HEADERS([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([LIB_ARG_WITH], [
AC_ARG_WITH($1-headers, [AS_HELP_STRING(--with-$1-headers=dir,
[look for $1 headers in dir])])
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=
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([GENGETOPT], [gengetopt])
-test -z "$GENGETOPT" && AC_MSG_ERROR(
- [gengetopt is required to build this package])
-
-AC_PATH_PROG([M4], [m4])
-test -z "$M4" && AC_MSG_ERROR(
- [The m4 macro processor is required to build this package])
-
-AC_PATH_PROG([HELP2MAN], [help2man])
-test -z "$HELP2MAN" && AC_MSG_ERROR(
- [help2man is required to build this package])
-
-AC_PATH_PROG([INSTALL], [install])
-test -z "$INSTALL" && AC_MSG_ERROR(
- [The install program is required to build this package])
-
AC_PROG_CC
AC_PROG_CPP
-executables="recv filter audioc write afh play"
+REQUIRE_EXECUTABLE([bison])
+REQUIRE_EXECUTABLE([flex])
+REQUIRE_EXECUTABLE([m4])
+
########################################################################### osl
STASH_FLAGS
LIB_ARG_WITH([osl], [-losl])
AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no])
LIB_SUBST_FLAGS(osl)
UNSTASH_FLAGS
+######################################################################## lopsub
+HAVE_LOPSUB=yes
+AC_PATH_PROG([LOPSUBGEN], [lopsubgen])
+test -z "$LOPSUBGEN" && HAVE_LOPSUB=no
+STASH_FLAGS
+LIB_ARG_WITH([lopsub], [-llopsub])
+AC_CHECK_HEADER(lopsub.h, [], [HAVE_LOPSUB=no])
+AC_CHECK_LIB([lopsub], [lls_merge], [], [HAVE_LOPSUB=no])
+if test $HAVE_LOPSUB = no; then AC_MSG_ERROR([
+ The lopsub library is required to build this software, but
+ the above checks indicate it is not installed on your system.
+ Run the following command to download a copy.
+ git clone https://git.tuebingen.mpg.de/lopsub.git
+ Install the library, then run this configure script again.
+])
+fi
+LIB_SUBST_FLAGS([lopsub])
+UNSTASH_FLAGS
######################################################################## openssl
STASH_FLAGS
HAVE_OPENSSL=yes
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
+ AC_CHECK_LIB([crypto], [OSSL_PARAM_construct_BN], [HAVE_OSSL_PARAM=yes],
+ [HAVE_OSSL_PARAM=no])
+ test $HAVE_OSSL_PARAM = yes &&
+ AC_DEFINE([HAVE_OSSL_PARAM], [1], [openssl >= 3.0])
+ 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
;;
esac
AC_SUBST(crypto_ldflags)
+AC_SUBST(CRYPTOLIB)
########################################################################## iconv
STASH_FLAGS
LIBS=
AC_MSG_RESULT($msg)
UNSTASH_FLAGS
########################################################################### ucred
-AC_MSG_CHECKING(for struct ucred)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+AC_CHECK_TYPE([struct ucred], [
+ AC_DEFINE(HAVE_UCRED, 1, define to 1 you have 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>
]], [[
- struct ucred sucred; sucred.pid=0;
-]])],[have_ucred=yes],[have_ucred=no])
-AC_MSG_RESULT($have_ucred)
-if test ${have_ucred} = yes; then
- AC_DEFINE(HAVE_UCRED, 1, define to 1 you have struct ucred)
+ 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
-########################################################################### gengetopt
-echo 'option "z" z "" flag off' | $GENGETOPT --file-name conftest-ggo &&
-AC_CHECK_DECL(
- [gengetopt_args_info_description],
- [ggo_descriptions_declared=yes],
- [ggo_descriptions_declared=no],
- [#include "conftest-ggo.h"]
-)
-AC_SUBST(ggo_descriptions_declared)
########################################################################### curses
STASH_FLAGS
LIB_ARG_WITH([curses], [])
LIB_SUBST_FLAGS(curses)
UNSTASH_FLAGS
########################################################################### ip_mreqn
-AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast))
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+AC_CHECK_TYPE([struct ip_mreqn], [
+ AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 if you have struct ip_mreqn)
+], [], [
#include <netdb.h>
#include <net/if.h>
-]], [[
- struct ip_mreqn mn;
- mn.imr_ifindex = 0;
-]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
-AC_MSG_RESULT($have_ip_mreqn)
-if test ${have_ip_mreqn} = yes; then
- AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
-fi
+])
########################################################################### ogg
STASH_FLAGS
LIB_ARG_WITH([ogg], [-logg])
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])
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])
AC_CHECK_LIB([samplerate], [src_process], [], HAVE_SAMPLERATE=no)
LIB_SUBST_FLAGS(samplerate)
UNSTASH_FLAGS
-########################################################################## mp4v2
-STASH_FLAGS
-LIB_ARG_WITH([mp4v2], [-lmp4v2])
-HAVE_MP4V2=yes
-AC_CHECK_HEADER([mp4v2/mp4v2.h], [], [HAVE_MP4V2=no])
-AC_CHECK_LIB([mp4v2], [MP4Read], [], [HAVE_MP4V2=no])
-LIB_SUBST_FLAGS(mp4v2)
-UNSTASH_FLAGS
-######################################################################### server
-if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
- build_server="yes"
- executables="$executables server"
- server_cmdline_objs="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
- ggo
- "
- 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 && test $HAVE_MP4V2 = yes; then
- server_errlist_objs="$server_errlist_objs aac_afh aac_common"
- fi
- server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
- AC_SUBST(server_objs, add_dot_o($server_objs))
-else
- build_server="no"
-fi
-############################################################# client
-if test -n "$CRYPTOLIB"; then
- build_client="yes"
- executables="$executables client"
- client_cmdline_objs="client"
- client_errlist_objs="
- client
- net
- string
- fd
- sched
- stdin
- stdout
- time
- sideband
- client_common
- buffer_tree
- crypt_common
- base64
- version
- ggo
- "
- 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="add_cmdline($client_cmdline_objs) $client_errlist_objs"
- AC_SUBST(client_objs, add_dot_o($client_objs))
-else
- build_client="no"
-fi
-############################################################# audiod
-if test -n "$CRYPTOLIB"; then
- build_audiod="yes"
- executables="$executables audiod"
- audiod_audio_formats="wma"
- audiod_cmdline_objs="$audiod_cmdline_objs
- audiod
- compress_filter
- http_recv
- dccp_recv
- file_write
- client
- amp_filter
- udp_recv
- prebuffer_filter
- sync_filter
- "
- 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
- ggo
- 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 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_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
- NEED_AO_OBJECTS && {
- audiod_errlist_objs="$audiod_errlist_objs ao_write"
- audiod_cmdline_objs="$audiod_cmdline_objs ao_write"
- }
- 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))
-
- 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 $HAVE_OSS = yes -o $HAVE_ALSA = yes; then
- build_fade="yes"
- executables="$executables fade"
- 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))
- enum="$(
- for i in $mixers; do
- printf "${i}_MIX, " | tr '[a-z]' '[A-Z]'
- done
- )"
- AC_DEFINE_UNQUOTED(MIXER_ENUM, $enum NUM_SUPPORTED_MIXERS,
- enum of supported mixers)
- AC_DEFINE_UNQUOTED(DEFAULT_MIXER, $default_mixer,
- use this mixer if none was specified)
- names="$(for i in $mixers; do printf \"$i\",' ' ; done)"
- AC_DEFINE_UNQUOTED(MIXER_NAMES, $names, supported mixer names)
- inits="$(
- for i in $mixers; do
- printf 'extern void '$i'_mix_init(struct mixer *); '
- done
- )"
- AC_DEFINE_UNQUOTED(DECLARE_MIXER_INITS, $inits,
- 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)
-else
- build_fade="no"
- AC_MSG_WARN([no mixer support])
-fi
-########################################################################### gui
-if test $HAVE_CURSES = yes; then
- build_gui="yes"
- executables="$executables gui"
- gui_cmdline_objs="gui"
- gui_errlist_objs="
- exec
- signal
- string
- stat
- ringbuffer
- fd
- gui
- gui_theme
- time
- sched
- version
- ggo
- "
- gui_objs="add_cmdline($gui_cmdline_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
-filters="
- compress
- wav
- amp
- fecdec
- wmadec
- prebuffer
- sync
-"
-filter_errlist_objs="
- filter_common
- wav_filter
- compress_filter
- filter
- string
- stdin
- stdout
- sched
- fd
- amp_filter
- ggo
- fecdec_filter
- fec
- version
- prebuffer_filter
- time
- bitstream
- imdct
- wma_common
- wmadec_filter
- buffer_tree
- net
- sync_filter
-"
-filter_cmdline_objs="
- filter
- compress_filter
- amp_filter
- prebuffer_filter
- sync_filter
-"
-NEED_VORBIS_OBJECTS && {
- filters="$filters oggdec"
- filter_errlist_objs="$filter_errlist_objs oggdec_filter"
-}
-NEED_SPEEX_OBJECTS && {
- filters="$filters spxdec"
- filter_errlist_objs="$filter_errlist_objs spxdec_filter spx_common"
-}
-NEED_OPUS_OBJECTS && {
- filters="$filters opusdec"
- filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
-}
-NEED_FLAC_OBJECTS && {
- filter_errlist_objs="$filter_errlist_objs flacdec_filter"
- filters="$filters flacdec"
-}
-if test $HAVE_FAAD = yes; then
- filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
- filters="$filters aacdec"
-fi
-if test $HAVE_MAD = yes; then
- filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter"
- filter_errlist_objs="$filter_errlist_objs mp3dec_filter"
- filters="$filters mp3dec"
-fi
-if test $HAVE_SAMPLERATE = yes; then
- filter_errlist_objs="$filter_errlist_objs resample_filter check_wav"
- 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))
-
-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
- http_recv
- dccp_recv
- udp_recv
- afh_recv
-"
-
-recv_errlist_objs="
- http_recv
- recv_common
- recv
- time
- string
- net
- dccp_recv
- fd
- sched
- stdout
- ggo
- udp_recv
- buffer_tree
- afh_recv
- afh_common
- wma_afh
- wma_common
- 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"
-
-if test $HAVE_FAAD = yes -a $HAVE_MP4V2 = yes; then
- recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
-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))
-########################################################################### afh
-audio_format_handlers="mp3 wma"
-afh_cmdline_objs="afh"
-afh_errlist_objs="
- afh
- string
- fd
- mp3_afh
- afh_common
- time
- wma_afh
- wma_common
- version
- ggo
-"
-NEED_OGG_OBJECTS && afh_errlist_objs="$afh_errlist_objs ogg_afh_common"
-NEED_VORBIS_OBJECTS && {
- afh_errlist_objs="$afh_errlist_objs ogg_afh"
- audio_format_handlers="$audio_format_handlers ogg"
-}
-NEED_SPEEX_OBJECTS && {
- afh_errlist_objs="$afh_errlist_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"
- audio_format_handlers="$audio_format_handlers opus"
-}
-NEED_FLAC_OBJECTS && {
- afh_errlist_objs="$afh_errlist_objs flac_afh"
- audio_format_handlers="$audio_format_handlers flac"
-}
-if test $HAVE_FAAD = yes -a $HAVE_MP4V2 = yes; then
- afh_errlist_objs="$afh_errlist_objs aac_afh aac_common"
- audio_format_handlers="$audio_format_handlers aac"
-fi
-
-afh_objs="add_cmdline($afh_cmdline_objs) $afh_errlist_objs"
-
-AC_SUBST(afh_objs, add_dot_o($afh_objs))
-########################################################################## play
-play_errlist_objs="
- play
- fd
- sched
- ggo
- buffer_tree
- time
- string
- net
- afh_recv
- afh_common
- wma_afh
- wma_common
- mp3_afh
- recv_common
- udp_recv
- http_recv
- dccp_recv
- filter_common
- fec
- bitstream
- imdct
- wav_filter
- compress_filter
- amp_filter
- prebuffer_filter
- fecdec_filter
- wmadec_filter
- write_common
- file_write
- version
- sync_filter
-"
-play_cmdline_objs="
- http_recv
- dccp_recv
- udp_recv
- afh_recv
- compress_filter
- amp_filter
- prebuffer_filter
- file_write
- play
- sync_filter
-"
-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"
-}
-if test $HAVE_FAAD = yes; then
- play_errlist_objs="$play_errlist_objs aacdec_filter"
-fi
-if test $HAVE_MP4V2 = yes; then
- play_errlist_objs="$play_errlist_objs aac_afh"
-fi
-if test $HAVE_MP4V2 = yes || test $HAVE_FAAD = yes; then
- play_errlist_objs="$play_errlist_objs aac_common"
-fi
-if test $HAVE_MAD = yes; then
- play_cmdline_objs="$play_cmdline_objs mp3dec_filter"
- play_errlist_objs="$play_errlist_objs mp3dec_filter"
-fi
-if test $HAVE_OSS = yes; then
- play_errlist_objs="$play_errlist_objs oss_write"
- play_cmdline_objs="$play_cmdline_objs oss_write"
-fi
-if test $HAVE_ALSA = yes; then
- play_errlist_objs="$play_errlist_objs alsa_write"
- play_cmdline_objs="$play_cmdline_objs alsa_write"
-fi
-NEED_AO_OBJECTS && {
- play_errlist_objs="$play_errlist_objs ao_write"
- play_cmdline_objs="$play_cmdline_objs ao_write"
-}
-if test $HAVE_READLINE = yes; then
- play_errlist_objs="$play_errlist_objs interactive"
-fi
-if test $HAVE_SAMPLERATE = yes; then
- play_errlist_objs="$play_errlist_objs resample_filter check_wav"
- play_cmdline_objs="$play_cmdline_objs resample_filter"
-fi
-
-play_objs="add_cmdline($play_cmdline_objs) $play_errlist_objs"
-AC_SUBST(play_objs, add_dot_o($play_objs))
-######################################################################### write
-write_cmdline_objs="
- write
- file_write
-"
-write_errlist_objs="
- write
- write_common
- file_write
- time
- fd
- string
- sched
- stdin
- buffer_tree
- ggo
- check_wav
- version
-"
-writers="file"
-default_writer="FILE_WRITE"
-
-NEED_AO_OBJECTS && {
- write_errlist_objs="$write_errlist_objs ao_write"
- write_cmdline_objs="$write_cmdline_objs ao_write"
- writers="$writers ao"
- default_writer="AO_WRITE"
-}
-if test $HAVE_OSS = yes; then
- write_errlist_objs="$write_errlist_objs oss_write"
- write_cmdline_objs="$write_cmdline_objs oss_write"
- writers="$writers oss"
- default_writer="OSS_WRITE"
-fi
-if test $HAVE_ALSA = yes; then
- write_errlist_objs="$write_errlist_objs alsa_write"
- write_cmdline_objs="$write_cmdline_objs alsa_write"
- 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))
-enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
-AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
- enum of supported writers)
-AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
-names="$(for i in $writers; do printf \"$i\",' ' ; done)"
-AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
-inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
-AC_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
-array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
-AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
-######################################################################## audioc
-audioc_cmdline_objs="audioc"
-audioc_errlist_objs="
- audioc
- string
- net
- fd
- version
- ggo
-"
-if test $HAVE_READLINE = yes; then
- audioc_errlist_objs="$audioc_errlist_objs
- buffer_tree
- interactive
- sched
- time
- "
-fi
-audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
-AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
-################################################################## status items
-
-status_items="basename status num_played mtime bitrate frequency file_size
-status_flags format score techinfo afs_mode
-attributes_txt decoder_flags audiod_status play_time attributes_bitmap
-offset seconds_total stream_start current_time audiod_uptime image_id
-lyrics_id duration directory lyrics_name image_name path hash channels
-last_played num_chunks chunk_time amplification artist title year album
-comment"
-
-result=
-for i in $status_items; do
- result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
-done
-AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
- [enum of all status items])
-
-result=
-for i in $status_items; do
- result="$result \"$i\", "
-done
-AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
- [char * array of all status items])
-
-AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
- [formats supported by para_server and para_afh])
-
-AC_SUBST(executables)
+######################################################################### 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)
AC_OUTPUT
-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
-mp4v2: $HAVE_MP4V2
-
-audio format handlers: $audio_format_handlers
-filters: $(echo $filters)
-writers: $writers
-
-para_server: $build_server
-para_gui: $build_gui
-para_fade: $build_fade
-para_client: $build_client
-para_audiod: $build_audiod
-])