X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=configure.ac;h=80eaf095372b8bcd1663254b380e5203085bf53c;hp=fdc0b7ce5f286f9a6b976334a2589d5fe7613b18;hb=98f2c8aea52a49fad3fd6df67b1eb32c1499176c;hpb=ca659e6bf0d7f783849244105a077e79fcf741ad diff --git a/configure.ac b/configure.ac index fdc0b7ce..80eaf095 100644 --- a/configure.ac +++ b/configure.ac @@ -78,90 +78,196 @@ AC_CHECK_FUNCS([atexit dup2 memchr memmove memset \ strncasecmp strrchr strspn alarm mkdir rmdir], [], [AC_MSG_ERROR([function not found, cannot live without it])]) +cmdline_dir="cmdline" +AC_SUBST(cmdline_dir) +AC_DEFUN([add_cmdline],[$(for i in $@; do printf "${i}.cmdline "; done)]) + + all_errlist_objs="server mp3_afh afh_common vss command net string signal time daemon stat crypt http_send close_on_fork ipc acl afh fade amp_filter dccp_send fd user_list chunk_queue afs aft mood score attribute blob ringbuffer playlist sha1 sched audiod grab_client filter_common wav_filter compress_filter http_recv dccp_recv recv_common write_common file_write audiod_command client_common recv stdout filter stdin audioc write client exec send_common ggo -udp_recv udp_send color fec fecdec_filter prebuffer_filter" +udp_recv udp_send color fec fecdec_filter prebuffer_filter mm +server_command_list afs_command_list audiod_command_list bitstream imdct wma_afh +wma_common wmadec_filter buffer_tree +" + +executables="server recv filter audioc write client afh audiod" -all_executables="server recv filter audioc write client afh" +recv_cmdline_objs="add_cmdline(recv http_recv dccp_recv udp_recv)" -recv_cmdline_objs="recv.cmdline http_recv.cmdline dccp_recv.cmdline udp_recv.cmdline" recv_errlist_objs="http_recv recv_common recv time string net dccp_recv - fd sched stdout ggo udp_recv fec" + fd sched stdout ggo udp_recv fec buffer_tree" recv_ldflags="" -receivers=" http dccp udp" -senders=" http dccp udp" - -filter_cmdline_objs="filter.cmdline compress_filter.cmdline amp_filter.cmdline - prebuffer_filter.cmdline" +filter_cmdline_objs="add_cmdline(filter compress_filter amp_filter prebuffer_filter)" filter_errlist_objs="filter_common wav_filter compress_filter filter string stdin stdout sched fd amp_filter ggo fecdec_filter fec - prebuffer_filter time" -filter_ldflags="" -filters=" compress wav amp fecdec prebuffer" + prebuffer_filter time bitstream imdct wma_common wmadec_filter buffer_tree" +filter_ldflags="-lm" +filters=" compress wav amp fecdec wmadec prebuffer" -audioc_cmdline_objs="audioc.cmdline" +audioc_cmdline_objs="add_cmdline(audioc)" audioc_errlist_objs="audioc string net fd" audioc_ldflags="" -audiod_cmdline_objs="audiod.cmdline grab_client.cmdline compress_filter.cmdline - http_recv.cmdline dccp_recv.cmdline file_write.cmdline client.cmdline - audiod_command_list amp_filter.cmdline udp_recv.cmdline - prebuffer_filter.cmdline sha1" +audiod_cmdline_objs="add_cmdline(audiod compress_filter http_recv dccp_recv file_write client amp_filter udp_recv prebuffer_filter)" audiod_errlist_objs="audiod signal string daemon stat net 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 crypt fecdec_filter - client_common ggo udp_recv color fec prebuffer_filter" -audiod_ldflags="" -audiod_audio_formats="" + client_common ggo udp_recv color fec prebuffer_filter sha1 audiod_command_list + bitstream imdct wma_common wmadec_filter buffer_tree" +audiod_ldflags="-lm" +audiod_audio_formats="wma" -afh_cmdline_objs="afh.cmdline" -afh_errlist_objs="afh string fd mp3_afh afh_common time" +afh_cmdline_objs="add_cmdline(afh)" +afh_errlist_objs="afh string fd mp3_afh afh_common time wma_afh wma_common" afh_ldflags="" -server_cmdline_objs="server.cmdline server_command_list afs_command_list" +server_cmdline_objs="add_cmdline(server)" server_errlist_objs="server afh_common mp3_afh vss command net string signal - time daemon crypt http_send close_on_fork + time daemon crypt http_send close_on_fork mm ipc dccp_send fd user_list chunk_queue afs aft mood score attribute - blob playlist sha1 sched acl send_common udp_send color fec" + blob playlist sha1 sched acl send_common udp_send color fec + server_command_list afs_command_list wma_afh wma_common" server_ldflags="-losl" -server_audio_formats=" mp3" +server_audio_formats=" mp3 wma" -write_cmdline_objs="write.cmdline file_write.cmdline" -write_errlist_objs="write write_common file_write time fd string sched stdin ggo" +write_cmdline_objs="add_cmdline(write file_write)" +write_errlist_objs="write write_common file_write time fd string sched stdin + buffer_tree ggo" write_ldflags="" writers=" file" default_writer="FILE_WRITE" -client_cmdline_objs="client.cmdline" -client_errlist_objs="client net string crypt fd sched stdin stdout - client_common sha1" +client_cmdline_objs="add_cmdline(client)" +client_errlist_objs="client net string crypt fd sched stdin stdout time + client_common sha1 buffer_tree" client_ldflags="" -gui_cmdline_objs="gui.cmdline" +gui_cmdline_objs="add_cmdline(gui)" gui_errlist_objs="exec signal string stat ringbuffer fd" gui_other_objs="gui gui_theme" gui_objs="$gui_cmdline_objs $gui_errlist_objs $gui_other_objs" -fade_cmdline_objs="fade.cmdline" +fade_cmdline_objs="add_cmdline(fade)" fade_errlist_objs="fade exec string fd" +########################################################################### snprintf +# =========================================================================== +# http://www.nongnu.org/autoconf-archive/ax_func_snprintf.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_FUNC_SNPRINTF +# +# DESCRIPTION +# +# Checks for a fully C99 compliant snprintf, in particular checks whether +# it does bounds checking and returns the correct string length; does the +# same check for vsnprintf. If no working snprintf or vsnprintf is found, +# it prints an error message and aborts. +# +# LICENSE +# +# Copyright (c) 2008 Ruediger Kuhlmann +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. + +AU_ALIAS([AC_FUNC_SNPRINTF], [AX_FUNC_SNPRINTF]) +AC_DEFUN([AX_FUNC_SNPRINTF], +[AC_CHECK_FUNCS(snprintf vsnprintf) +AC_MSG_CHECKING(for working snprintf) +AC_CACHE_VAL(ac_cv_have_working_snprintf, +[AC_TRY_RUN( +[#include + +int main(void) +{ + char bufs[5] = { 'x', 'x', 'x', '\0', '\0' }; + char bufd[5] = { 'x', 'x', 'x', '\0', '\0' }; + int i; + i = snprintf (bufs, 2, "%s", "111"); + if (strcmp (bufs, "1")) exit (1); + if (i != 3) exit (1); + i = snprintf (bufd, 2, "%d", 111); + if (strcmp (bufd, "1")) exit (1); + if (i != 3) exit (1); + exit(0); +}], ac_cv_have_working_snprintf=yes, ac_cv_have_working_snprintf=no, ac_cv_have_working_snprintf=cross)]) +AC_MSG_RESULT([$ac_cv_have_working_snprintf]) +AC_MSG_CHECKING(for working vsnprintf) +AC_CACHE_VAL(ac_cv_have_working_vsnprintf, +[AC_TRY_RUN( +[#include +#include + +int my_vsnprintf (char *buf, const char *tmpl, ...) +{ + int i; + va_list args; + va_start (args, tmpl); + i = vsnprintf (buf, 2, tmpl, args); + va_end (args); + return i; +} + +int main(void) +{ + char bufs[5] = { 'x', 'x', 'x', '\0', '\0' }; + char bufd[5] = { 'x', 'x', 'x', '\0', '\0' }; + int i; + i = my_vsnprintf (bufs, "%s", "111"); + if (strcmp (bufs, "1")) exit (1); + if (i != 3) exit (1); + i = my_vsnprintf (bufd, "%d", 111); + if (strcmp (bufd, "1")) exit (1); + if (i != 3) exit (1); + exit(0); +}], ac_cv_have_working_vsnprintf=yes, ac_cv_have_working_vsnprintf=no, ac_cv_have_working_vsnprintf=cross)]) +AC_MSG_RESULT([$ac_cv_have_working_vsnprintf]) +if test x$ac_cv_have_working_snprintf$ac_cv_have_working_vsnprintf != "xyesyes"; then +AC_MSG_ERROR([fatal: buggy snprintf() detected]) +fi]) +AX_FUNC_SNPRINTF() ########################################################################### osl have_osl=yes +OLD_CPPFLAGS="$CPPFLAGS" +OLD_LD_FLAGS="$LDFLAGS" +OLD_LIBS="$LIBS" +AC_ARG_WITH(osl_headers, [AC_HELP_STRING(--with-osl-headers=dir, + [look for osl.h also in dir])]) +if test -n "$with_osl_headers"; then + osl_cppflags="-I$with_osl_headers" + CPPFLAGS="$CPPFLAGS $osl_cppflags" +fi +AC_ARG_WITH(osl_libs, [AC_HELP_STRING(--with-osl-libs=dir, + [look for libosl also in dir])]) +if test -n "$with_osl_libs"; then + osl_libs="-L$with_osl_libs" + LDFLAGS="$LDFLAGS $osl_libs" +fi + AC_CHECK_HEADER(osl.h, [], have_osl=no) AC_CHECK_LIB([osl], [osl_open_table], [], have_osl=no) if test "$have_osl" = "no"; then - AC_MSG_ERROR([libosl not found, type the following to download: + AC_MSG_ERROR([libosl not found, download it at + http://systemlinux.org/~maan/osl +or execute git clone git://git.tuebingen.mpg.de/osl -Install the library with - (cd osl && make && sudo make install) ]) fi +AC_SUBST(osl_cppflags) +server_ldflags="$server_ldflags -L$with_osl_libs" +CPPFLAGS="$OLD_CPPFLAGS" +LDFLAGS="$OLD_LDFLAGS" +LIBS="$OLD_LIBS" ########################################################################### ssl dnl @synopsis CHECK_SSL dnl @@ -192,9 +298,6 @@ AC_DEFUN([CHECK_SSL], SSL_LDFLAGS="-L$ssldir/lib"; fi AC_SUBST(SSL_CPPFLAGS) - AC_SUBST(SSL_CFLAGS) - AC_SUBST(SSL_LIBS) - AC_SUBST(SSL_LDFLAGS) ])dnl AC_ARG_ENABLE(ssldir, [AS_HELP_STRING(--enable-ssldir=path, @@ -269,10 +372,9 @@ AC_CHECK_LIB([ncurses], [initscr], [], [ ]) if test "$have_ncurses" = "yes"; then AC_SUBST(ncurses_cppflags) - AC_SUBST(ncurses_libs) AC_DEFINE(HAVE_NCURSES, 1, [define to 1 to turn on ncurses support]) - extras="$extras para_gui" - all_executables="$all_executables gui" + extras="$extras gui" + executables="$executables gui" else AC_MSG_WARN([cannot build para_gui]) fi @@ -354,18 +456,17 @@ if test "$have_ogg" = "yes"; then audiod_ldflags="$audiod_ldflags $oggvorbis_libs -lvorbis -lvorbisfile" afh_ldflags="$afh_ldflags $oggvorbis_libs -logg -lvorbis -lvorbisfile" - filter_cmdline_objs="$filter_cmdline_objs oggdec_filter.cmdline" - audiod_cmdline_objs="$audiod_cmdline_objs oggdec_filter.cmdline" + filter_cmdline_objs="$filter_cmdline_objs add_cmdline(oggdec_filter)" + audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(oggdec_filter)" server_errlist_objs="$server_errlist_objs ogg_afh" filter_errlist_objs="$filter_errlist_objs oggdec_filter" audiod_errlist_objs="$audiod_errlist_objs oggdec_filter" afh_errlist_objs="$afh_errlist_objs ogg_afh" - audiod_audio_formats="ogg" + audiod_audio_formats="$audiod_audio_formats ogg" server_audio_formats="$server_audio_formats ogg" AC_SUBST(oggvorbis_cppflags) - AC_SUBST(oggvorbis_libs) else AC_MSG_WARN([no ogg vorbis support in para_server/para_filter]) fi @@ -406,7 +507,6 @@ if test "$have_faad" = "yes"; then server_audio_formats="$server_audio_formats aac" filters="$filters aacdec" AC_SUBST(faad_cppflags) - AC_SUBST(faad_libs) else AC_MSG_WARN([no aac support in para_audiod/para_filter]) fi @@ -439,8 +539,8 @@ AC_CHECK_LIB([mad], [mad_stream_init], [], [ ]) if test "$have_mad" = "yes"; then AC_DEFINE(HAVE_MAD, 1, define to 1 if you want to build the mp3dec filter) - filter_cmdline_objs="$filter_cmdline_objs mp3dec_filter.cmdline" - audiod_cmdline_objs="$audiod_cmdline_objs mp3dec_filter.cmdline" + filter_cmdline_objs="$filter_cmdline_objs add_cmdline(mp3dec_filter)" + audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(mp3dec_filter)" all_errlist_objs="$all_errlist_objs mp3dec_filter" filter_errlist_objs="$filter_errlist_objs mp3dec_filter" audiod_errlist_objs="$audiod_errlist_objs mp3dec_filter" @@ -449,16 +549,9 @@ if test "$have_mad" = "yes"; then audiod_audio_formats="$audiod_audio_formats mp3" filters="$filters mp3dec" AC_SUBST(mad_cppflags) - AC_SUBST(mad_libs) else AC_MSG_WARN([no mp3dec support in para_audiod/para_filter]) fi -if test -n "$audiod_audio_formats"; then - extras="$extras para_audiod" - all_executables="$all_executables audiod" -else - AC_MSG_WARN([can not build para_audiod (no supported audio formats)]) -fi CPPFLAGS="$OLD_CPPFLAGS" LDFLAGS="$OLD_LDFLAGS" LIBS="$OLD_LIBS" @@ -486,14 +579,14 @@ have_oss="yes" msg="=> will not build para_fade/oss writer" AC_CHECK_HEADER(sys/soundcard.h, [ - extras="$extras para_fade" - all_executables="$all_executables fade" + extras="$extras fade" + executables="$executables fade" all_errlist_objs="$all_errlist_objs oss_write" audiod_errlist_objs="$audiod_errlist_objs oss_write" - audiod_cmdline_objs="$audiod_cmdline_objs oss_write.cmdline" + audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(oss_write)" write_errlist_objs="$write_errlist_objs oss_write" - write_cmdline_objs="$write_cmdline_objs oss_write.cmdline" + write_cmdline_objs="$write_cmdline_objs add_cmdline(oss_write)" writers="$writers oss" default_writer="OSS_WRITE" AC_CHECK_LIB(ossaudio, _oss_ioctl, [ @@ -505,7 +598,7 @@ AC_CHECK_HEADER(sys/soundcard.h, [ ], [ have_oss="no" - AC_MSG_WARN([no linux/soundcard.h $msg]) + AC_MSG_WARN([no sys/soundcard.h $msg]) ] ) CPPFLAGS="$OLD_CPPFLAGS" @@ -540,11 +633,11 @@ fi if test "$have_alsa" = "yes"; then all_errlist_objs="$all_errlist_objs alsa_write" audiod_errlist_objs="$audiod_errlist_objs alsa_write" - audiod_cmdline_objs="$audiod_cmdline_objs alsa_write.cmdline" + audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(alsa_write)" audiod_ldflags="$audiod_ldflags -lasound" write_errlist_objs="$write_errlist_objs alsa_write" - write_cmdline_objs="$write_cmdline_objs alsa_write.cmdline" + write_cmdline_objs="$write_cmdline_objs add_cmdline(alsa_write)" write_ldflags="$write_ldflags -lasound" writers="$writers alsa" default_writer="ALSA_WRITE" @@ -554,21 +647,18 @@ CPPFLAGS="$OLD_CPPFLAGS" LDFLAGS="$OLD_LDFLAGS" LIBS="$OLD_LIBS" -AC_SUBST(extra_binaries, [$extras]) -AC_SUBST(extra_filter_objs, [$extra_filter_objs]) -AC_SUBST(extra_filter_libs, [$extra_filter_libs]) AC_SUBST(install_sh, [$INSTALL]) AC_CONFIG_FILES([Makefile]) AC_DEFUN([add_dot_o],[$(for i in $@; do printf "$i.o "; done)]) +AC_DEFUN([add_para],[$(for i in $@; do printf "para_$i "; 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) }]) - ############################################################# error2.h AC_DEFUN([define_safe_error_enums], [ exe="" - for i in $all_executables; do + for i in $executables; do # eval echo checking if $1 is linked into $i for j in $(eval echo \$${i}_errlist_objs); do if test $j = $1; then @@ -651,6 +741,8 @@ AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, ) +AC_SUBST(executables, add_para($executables)) + recv_objs="$recv_cmdline_objs $recv_errlist_objs" filter_objs="$filter_cmdline_objs $filter_errlist_objs" audiod_objs="$audiod_cmdline_objs $audiod_errlist_objs" @@ -737,16 +829,12 @@ 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([creating Makefile.deps]) -gcc -MM -MG $faad_cppflags $mad_cppflags $oggvorbis_cppflags *.c > Makefile.deps AC_MSG_NOTICE([ paraslash configuration: ~~~~~~~~~~~~~~~~~~~~~~~~ unix socket credentials: $have_ucred audio formats supported by para_server/para_afh: $server_audio_formats id3 version2 support: $have_libid3tag -senders supported by para_server: $senders -receivers supported by para_audiod/para_recv: $receivers filters supported by para_audiod/para_filter: $filters writers supported by para_audiod/para_write: $writers optional executables: $extras