# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.60) AC_INIT(paraslash, [git], maan@systemlinux.org) AC_CONFIG_HEADER([config.h]) AC_PATH_PROG(UNAMEPATH, uname, no) if test "$UNAMEPATH" = "no"; then AC_MSG_ERROR(unable to determine system type) fi AC_MSG_CHECKING(os type) OSTYPE="`$UNAMEPATH -s`" AC_MSG_RESULT("$OSTYPE") if test "$OSTYPE" = "SunOS"; then # needed on SunOS for socket magic arch_cppflags="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__" AC_SUBST(arch_cppflags) fi AC_C_BIGENDIAN() AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_REPLACE_FNMATCH AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([arpa/inet.h ctype.h fcntl.h limits.h netdb.h netinet/in.h \ stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h sys/un.h \ sys/ipc.h unistd.h utime.h stddef.h], [], [AC_MSG_ERROR([$ac_header not found])]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_HEADER_TIME AC_STRUCT_TM AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT64_T AC_TYPE_MODE_T AC_TYPE_SSIZE_T AC_TYPE_UID_T AC_TYPE_UINT8_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T # Checks for library functions. AC_FUNC_FORK AC_PROG_GCC_TRADITIONAL AC_FUNC_MALLOC AC_FUNC_MEMCMP AC_FUNC_MKTIME AC_FUNC_MMAP AC_FUNC_REALLOC AC_FUNC_SELECT_ARGTYPES AC_TYPE_SIGNAL AC_FUNC_STAT AC_FUNC_STRFTIME AC_FUNC_VPRINTF AC_FUNC_CLOSEDIR_VOID AC_FUNC_LSTAT AC_CHECK_FUNCS([atexit dup2 memchr memmove memset \ regcomp select strchr strdup strerror strstr strtol uname \ fchdir gettimeofday localtime_r munmap strcasecmp strcspn \ 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 mm server_command_list afs_command_list audiod_command_list bitstream imdct wma_afh wma_common wmadec_filter " all_executables="server recv filter audioc write client afh" recv_cmdline_objs="add_cmdline(recv http_recv dccp_recv udp_recv)" recv_errlist_objs="http_recv recv_common recv time string net dccp_recv fd sched stdout ggo udp_recv fec" recv_ldflags="" receivers=" http dccp udp" senders=" http dccp udp" 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 bitstream imdct wma_common wmadec_filter" filter_ldflags="-lm" filters=" compress wav amp fecdec wmadec prebuffer" audioc_cmdline_objs="add_cmdline(audioc)" audioc_errlist_objs="audioc string net fd" audioc_ldflags="" 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 sha1 audiod_command_list bitstream imdct wma_common wmadec_filter" audiod_ldflags="" audiod_audio_formats="wma" 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="add_cmdline(server)" server_errlist_objs="server afh_common mp3_afh vss command net string signal 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 server_command_list afs_command_list wma_afh wma_common" server_ldflags="-losl" server_audio_formats=" mp3" write_cmdline_objs="add_cmdline(write file_write)" write_errlist_objs="write write_common file_write time fd string sched stdin ggo" write_ldflags="" writers=" file" default_writer="FILE_WRITE" client_cmdline_objs="add_cmdline(client)" client_errlist_objs="client net string crypt fd sched stdin stdout client_common sha1" client_ldflags="" 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="add_cmdline(fade)" fade_errlist_objs="fade exec string fd" ########################################################################### 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, download it at http://systemlinux.org/~maan/osl or execute git clone git://git.tuebingen.mpg.de/osl ]) 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 dnl based on the follwing macro from the autoconf archive dnl dnl @category InstalledPackages dnl @author Mark Ethan Trostler dnl @version 2003-01-28 dnl @license AllPermissive AC_DEFUN([CHECK_SSL], [ for ssldir in $1 /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr; do AC_MSG_CHECKING(for openssl in $ssldir) if test -f "$ssldir/include/openssl/ssl.h"; then found_ssl="yes" AC_MSG_RESULT(yes) SSL_CFLAGS="-I$ssldir/include" SSL_CPPFLAGS="-I$ssldir/include" break fi AC_MSG_RESULT(no) done if test x_$found_ssl != x_yes; then AC_MSG_ERROR(Cannot find ssl libraries) else SSL_LIBS="-lssl -lcrypto"; 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, [Search for openssl also in path.])]) if test "$enable_ssldir" = "yes"; then enable_ssldir=""; fi CHECK_SSL($enable_ssldir) server_ldflags="$server_ldflags $SSL_LDFLAGS $SSL_LIBS" client_ldflags="$client_ldflags $SSL_LDFLAGS $SSL_LIBS" audiod_ldflags="$audiod_ldflags $SSL_LDFLAGS $SSL_LIBS" ########################################################################### libsocket AC_CHECK_LIB([c], [socket], [socket_lib=], [socket_lib="-lsocket"] ) server_ldflags="$server_ldflags $socket_lib" client_ldflags="$client_ldflags $socket_lib" audioc_ldflags="$audioc_ldflags $socket_lib" audiod_ldflags="$audiod_ldflags $socket_lib" recv_ldflags="$recv_ldflags $socket_lib" AC_SEARCH_LIBS([connect],[socket],[],[ AC_MSG_ERROR([Fatal: Did not find connect().]) ],[]) ########################################################################### libnsl AC_CHECK_LIB([c], [gethostbyname], [nsl_lib=], [nsl_lib="-lnsl"] ) server_ldflags="$server_ldflags $nsl_lib" client_ldflags="$client_ldflags $nsl_lib" audioc_ldflags="$audioc_ldflags $nsl_lib" recv_ldflags="$recv_ldflags $nsl_lib" AC_SEARCH_LIBS([inet_ntoa],[nsl],[],[ AC_MSG_ERROR([Fatal: Did not find inet_ntoa().]) ],[]) ########################################################################### ucred AC_MSG_CHECKING(for struct ucred) AC_TRY_LINK([ #define _GNU_SOURCE #include #include ],[ 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) fi ########################################################################### curses have_ncurses="yes" OLD_CPPFLAGS="$CPPFLAGS" OLD_LD_FLAGS="$LDFLAGS" OLD_LIBS="$LIBS" AC_ARG_WITH(ncurses_headers, [AC_HELP_STRING(--with-ncurses-headers=dir, [look for ncurses.h also in dir])]) if test -n "$with_ncurses_headers"; then ncurses_cppflags="-I$with_ncurses_headers" CPPFLAGS="$CPPFLAGS $ncurses_cppflags" fi AC_ARG_WITH(ncurses_libs, [AC_HELP_STRING(--with-ncurses-libs=dir, [look for libncurses also in dir])]) if test -n "$with_ncurses_libs"; then ncurses_libs="-L$with_ncurses_libs" LDFLAGS="$LDFLAGS $ncurses_libs" fi AC_CHECK_HEADER(curses.h, [], [ have_ncurses="no" ]) AC_CHECK_LIB([ncurses], [initscr], [], [ have_ncurses="no" ]) 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" else AC_MSG_WARN([cannot build para_gui]) fi CPPFLAGS="$OLD_CPPFLAGS" LDFLAGS="$OLD_LDFLAGS" LIBS="$OLD_LIBS" ########################################################################### ip_mreqn AC_MSG_CHECKING(for struct ip_mreqn (UDPv4 multicast)) AC_TRY_LINK([ #include #include ],[ 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 ########################################################################### osx AC_MSG_CHECKING(for CoreAudio (MacOs)) AC_TRY_LINK([ #include ],[ AudioDeviceID id; ],[have_core_audio=yes],[have_core_audio=no]) AC_MSG_RESULT($have_core_audio) if test ${have_core_audio} = yes; then f1="-framework CoreAudio" f2="-framework AudioToolbox" f3="-framework AudioUnit" f4="-framework CoreServices" f="$f1 $f2 $f3 $f4" all_errlist_objs="$all_errlist_objs osx_write" audiod_errlist_objs="$audiod_errlist_objs osx_write" audiod_cmdline_objs="$audiod_cmdline_objs osx_write.cmdline" audiod_ldflags="$audiod_ldflags $f" write_errlist_objs="$write_errlist_objs osx_write" write_cmdline_objs="$write_cmdline_objs osx_write.cmdline" write_ldflags="$write_ldflags $f" writers="$writers osx" default_writer="OSX_WRITE" AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X) fi ########################################################################### ogg have_ogg="yes" OLD_CPPFLAGS="$CPPFLAGS" OLD_LD_FLAGS="$LDFLAGS" OLD_LIBS="$LIBS" AC_ARG_WITH(oggvorbis_headers, [AC_HELP_STRING(--with-oggvorbis-headers=dir, [look for vorbis/codec.h also in dir])]) if test -n "$with_oggvorbis_headers"; then oggvorbis_cppflags="-I$with_oggvorbis_headers" CPPFLAGS="$CPPFLAGS $oggvorbis_cppflags" fi AC_ARG_WITH(oggvorbis_libs, [AC_HELP_STRING(--with-oggvorbis-libs=dir, [look for oggvorbis libs also in dir])]) if test -n "$with_oggvorbis_libs"; then oggvorbis_libs="-L$with_oggvorbis_libs" LDFLAGS="$LDFLAGS $oggvorbis_libs" fi AC_CHECK_LIB([ogg], [ogg_stream_init], [], [ have_ogg="no" ]) AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [ have_ogg="no" ]) AC_CHECK_HEADERS([ogg/ogg.h vorbis/codec.h], [], [ have_ogg="no" ]) if test "$have_ogg" = "yes"; then all_errlist_objs="$all_errlist_objs oggdec_filter ogg_afh" AC_DEFINE(HAVE_OGGVORBIS, 1, define to 1 to turn on ogg vorbis support) filters="$filters oggdec" if test "$OSTYPE" = "Darwin"; then oggvorbis_libs="-Wl,-bind_at_load $oggvorbis_libs" fi server_ldflags="$server_ldflags $oggvorbis_libs -logg -lvorbis -lvorbisfile" filter_ldflags="$filter_ldflags $oggvorbis_libs -lvorbis -lvorbisfile" audiod_ldflags="$audiod_ldflags $oggvorbis_libs -lvorbis -lvorbisfile" afh_ldflags="$afh_ldflags $oggvorbis_libs -logg -lvorbis -lvorbisfile" 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="$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 CPPFLAGS="$OLD_CPPFLAGS" LDFLAGS="$OLD_LDFLAGS" LIBS="$OLD_LIBS" ########################################################################### faad have_faad=yes OLD_CPPFLAGS="$CPPFLAGS" OLD_LD_FLAGS="$LDFLAGS" OLD_LIBS="$LIBS" AC_ARG_WITH(faad_headers, [AC_HELP_STRING(--with-faad-headers=dir, [look for neaacdec.h also in dir])]) if test -n "$with_faad_headers"; then faad_cppflags="-I$with_faad_headers" CPPFLAGS="$CPPFLAGS $faad_cppflags" fi AC_ARG_WITH(faad_libs, [AC_HELP_STRING(--with-faad-libs=dir, [look for libfaad also in dir])]) if test -n "$with_faad_libs"; then faad_libs="-L$with_faad_libs" LDFLAGS="$LDFLAGS $faad_libs" fi AC_CHECK_HEADER(neaacdec.h, [], have_faad=no) AC_CHECK_LIB([faad], [NeAACDecOpen], [], have_faad=no) if test "$have_faad" = "yes"; then AC_DEFINE(HAVE_FAAD, 1, define to 1 if you want to build the aacdec filter) all_errlist_objs="$all_errlist_objs aac_common aacdec_filter aac_afh" filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common" afh_errlist_objs="$afh_errlist_objs aac_common aac_afh" audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common" server_errlist_objs="$server_errlist_objs aac_afh aac_common" server_ldflags="$server_ldflags $faad_libs -lfaad" filter_ldflags="$filter_ldflags $faad_libs -lfaad" audiod_ldflags="$audiod_ldflags $faad_libs -lfaad" afh_ldflags="$afh_ldflags $faad_libs -lfaad" audiod_audio_formats="$audiod_audio_formats aac" 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 CPPFLAGS="$OLD_CPPFLAGS" LDFLAGS="$OLD_LDFLAGS" LIBS="$OLD_LIBS" ########################################################################### mad have_mad="yes" OLD_CPPFLAGS="$CPPFLAGS" OLD_LD_FLAGS="$LDFLAGS" OLD_LIBS="$LIBS" AC_ARG_WITH(mad_headers, [AC_HELP_STRING(--with-mad-headers=dir, [look for mad.h also in dir])]) if test -n "$with_mad_headers"; then mad_cppflags="-I$with_mad_headers" CPPFLAGS="$CPPFLAGS $mad_cppflags" fi AC_ARG_WITH(mad_libs, [AC_HELP_STRING(--with-mad-libs=dir, [look for libmad also in dir])]) if test -n "$with_mad_libs"; then mad_libs="-L$with_mad_libs" LDFLAGS="$LDFLAGS $mad_libs" fi AC_CHECK_HEADERS([mad.h], [], [ have_mad="no" ]) AC_CHECK_LIB([mad], [mad_stream_init], [], [ have_mad="no" ]) 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 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" filter_ldflags="$filter_ldflags $mad_libs -lmad" audiod_ldflags="$audiod_ldflags $mad_libs -lmad" 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" ###################################################################### libid3tag AC_MSG_CHECKING(for libid3tag) AC_TRY_LINK([ #include ],[ struct id3_tag t = {.flags = 0}; ],[have_libid3tag=yes],[have_libid3tag=no]) AC_MSG_RESULT($have_libid3tag) if test ${have_libid3tag} = yes; then AC_DEFINE(HAVE_LIBID3TAG, 1, define to 1 you have libid3tag) server_ldflags="$server_ldflags -lid3tag" afh_ldflags="$afh_ldflags -lid3tag" else AC_MSG_WARN([no support for id3v2 tags]) fi ########################################################################### oss OLD_CPPFLAGS="$CPPFLAGS" OLD_LD_FLAGS="$LDFLAGS" OLD_LIBS="$LIBS" 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" all_errlist_objs="$all_errlist_objs oss_write" audiod_errlist_objs="$audiod_errlist_objs oss_write" audiod_cmdline_objs="$audiod_cmdline_objs add_cmdline(oss_write)" write_errlist_objs="$write_errlist_objs oss_write" write_cmdline_objs="$write_cmdline_objs add_cmdline(oss_write)" writers="$writers oss" default_writer="OSS_WRITE" AC_CHECK_LIB(ossaudio, _oss_ioctl, [ audiod_ldflags="$audiod_ldflags -lossaudio" write_ldflags="$write_ldflags -lossaudio" fade_ldflags="$write_ldflags -lossaudio" ] ) ], [ have_oss="no" AC_MSG_WARN([no sys/soundcard.h $msg]) ] ) CPPFLAGS="$OLD_CPPFLAGS" LDFLAGS="$OLD_LDFLAGS" LIBS="$OLD_LIBS" ########################################################################### alsa OLD_CPPFLAGS="$CPPFLAGS" OLD_LD_FLAGS="$LDFLAGS" OLD_LIBS="$LIBS" msg="=> no alsa support for para_audiod/para_write" if test "$OSTYPE" != "Linux"; then have_alsa="no" else have_alsa="yes" fi if test "$have_alsa" = "yes"; then AC_CHECK_HEADERS([alsa/asoundlib.h], [], [ have_alsa="no" AC_MSG_WARN([no alsa/asoundlib $msg]) ]) fi if test "$have_alsa" = "yes"; then AC_CHECK_LIB([asound], [snd_pcm_open], [], [ have_alsa="no" AC_MSG_WARN([no libasound $msg]) ]) 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 add_cmdline(alsa_write)" audiod_ldflags="$audiod_ldflags -lasound" write_errlist_objs="$write_errlist_objs alsa_write" write_cmdline_objs="$write_cmdline_objs add_cmdline(alsa_write)" write_ldflags="$write_ldflags -lasound" writers="$writers alsa" default_writer="ALSA_WRITE" fi 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([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 # eval echo checking if $1 is linked into $i for j in $(eval echo \$${i}_errlist_objs); do if test $j = $1; then exe="$exe $i" break; fi done done #echo "$1 gets linked into $exe" safe_errlists="" for i in $all_errlist_objs; do for j in $exe; do found=0 for k in $(eval echo \$${j}_errlist_objs); do if test $k = $i; then found=1 break; fi done if test $found -eq 0; then break; fi done if test $found -eq 1; then safe_errlists="$safe_errlists $i" fi done #echo "safe errlists for $1: $safe_errlists" ss_defs="" for i in $safe_errlists; do echo "SS_ENUM($(echo $i | tr 'a-z' 'A-Z'));" done ] ) AC_MSG_NOTICE(creating error2.h) for obj in $all_errlist_objs; do SS="$SS SS_$(echo $obj | tr 'a-z' 'A-Z')," echo "#ifdef MAIN_INPUT_FILE_IS_$obj" define_safe_error_enums($obj) echo "#endif" done > error2.h AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM, [enum {$SS NUM_SS}], [list of all objects that use paraslash's error facility] ) ################################################################## 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" # $1: prefix, $2: items AC_DEFUN([make_enum_items], [$( for i in $2; do printf "$1_$(echo $i | tr 'a-z' 'A-Z'), " done )]) # $1: prefix, $2: items AC_DEFUN([make_enum_array], [$( for i in $2; do printf "\"$i\", " done )]) AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, make_enum_items(SI, $status_items), [enum of all status items] ) AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, make_enum_array(SI, $status_items), [char * array of all status items] ) recv_objs="$recv_cmdline_objs $recv_errlist_objs" filter_objs="$filter_cmdline_objs $filter_errlist_objs" audiod_objs="$audiod_cmdline_objs $audiod_errlist_objs" server_objs="$server_cmdline_objs $server_errlist_objs" write_objs="$write_cmdline_objs $write_errlist_objs" client_objs="$client_cmdline_objs $client_errlist_objs" audioc_objs="$audioc_cmdline_objs $audioc_errlist_objs" afh_objs="$afh_cmdline_objs $afh_errlist_objs" fade_objs="$fade_cmdline_objs $fade_errlist_objs" AC_SUBST(recv_objs, add_dot_o($recv_objs)) AC_SUBST(recv_ldflags, $recv_ldflags) AC_DEFINE_UNQUOTED(INIT_RECV_ERRLISTS, objlist_to_errlist($recv_errlist_objs), errors used by para_recv) AC_SUBST(filter_objs, add_dot_o($filter_objs)) AC_SUBST(filter_ldflags, $filter_ldflags) 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(server_objs, add_dot_o($server_objs)) AC_SUBST(server_ldflags, $server_ldflags) AC_DEFINE_UNQUOTED(INIT_SERVER_ERRLISTS, objlist_to_errlist($server_errlist_objs), errors used by para_server) AC_SUBST(afh_objs, add_dot_o($afh_objs)) AC_SUBST(afh_ldflags, $afh_ldflags) AC_DEFINE_UNQUOTED(INIT_AFH_ERRLISTS, objlist_to_errlist($afh_errlist_objs), errors used by para_afh) AC_SUBST(write_objs, add_dot_o($write_objs)) AC_SUBST(write_ldflags, $write_ldflags) AC_DEFINE_UNQUOTED(INIT_WRITE_ERRLISTS, objlist_to_errlist($write_errlist_objs), errors used by para_write) AC_SUBST(client_objs, add_dot_o($client_objs)) AC_SUBST(client_ldflags, $client_ldflags) AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS, objlist_to_errlist($client_errlist_objs), errors used by para_client) AC_SUBST(audioc_objs, add_dot_o($audioc_objs)) AC_SUBST(audioc_ldflags, $audioc_ldflags) AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS, objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc) 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) 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) 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 $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) 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: ~~~~~~~~~~~~~~~~~~~~~~~~ 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 ])