X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=configure.ac;h=3768da57ddf2d8362ea64f8a1d9b4a41b03c2584;hp=4dd5c6da27d64eba008f7fd7ae5c49ee586c63d5;hb=f189411b9986564c2652ef87e54189e5fa0d5d11;hpb=474d4d8bf17d1c0844f5073de7eace9b743ab820 diff --git a/configure.ac b/configure.ac index 4dd5c6da..3768da57 100644 --- a/configure.ac +++ b/configure.ac @@ -3,8 +3,9 @@ AC_PREREQ([2.61]) -AC_INIT([paraslash],[git],[maan@systemlinux.org]) -AC_CONFIG_HEADER([config.h]) +AC_INIT([paraslash], [m4_esyscmd_s(./GIT-VERSION-GEN)], + [maan@tuebingen.mpg.de], [], [http://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)]) @@ -23,6 +24,46 @@ AC_DEFUN([objlist_to_errlist],[ \ make_errlist_defines($@) \ [const char **para_errlist[[]]] = {make_para_errlists($@)} \ ]) +AC_DEFUN([LIB_ARG_WITH], [ + AC_ARG_WITH($1-headers, [AS_HELP_STRING(--with-$1-headers=dir, + [look for $1 headers in dir])]) + AC_ARG_WITH($1-libs, [AS_HELP_STRING(--with-$1-libs=dir, + [look for $1 libraries in dir])]) + if test -n "$with_$1_headers"; then + $1_cppflags="-I$with_$1_headers" + CPPFLAGS="$CPPFLAGS $$1_cppflags" + fi + if test -n "$with_$1_libs"; then + $1_ldflags="-L$with_$1_libs $2" + else + $1_ldflags="$2" + fi + LDFLAGS="$LDFLAGS $$1_ldflags" +]) + +AC_DEFUN([STASH_FLAGS], [ + OLD_CPPFLAGS="$CPPFLAGS" + OLD_LDFLAGS="$LDFLAGS" + OLD_LIBS="$LIBS" +]) + +AC_DEFUN([UNSTASH_FLAGS], [ + CPPFLAGS="$OLD_CPPFLAGS" + LDFLAGS="$OLD_LDFLAGS" + LIBS="$OLD_LIBS" +]) +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) + else + $1_cppflags= + $1_ldflags= + fi + AC_SUBST(HAVE_[]m4_toupper([$1])) + AC_SUBST($1_cppflags) + AC_SUBST($1_ldflags) +]) AC_PATH_PROG(UNAMEPATH, uname, no) if test "$UNAMEPATH" = "no"; then @@ -55,54 +96,6 @@ test -z "$install" && AC_MSG_ERROR( AC_PROG_CC AC_PROG_CPP -AC_HEADER_DIRENT -AC_HEADER_STDC -AC_HEADER_SYS_WAIT -AC_HEADER_STDBOOL -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_INT8_T -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_MEMCMP -AC_FUNC_MKTIME -AC_FUNC_MMAP -AC_FUNC_SELECT_ARGTYPES -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 inet_ntoa socket], [], - [AC_MSG_ERROR([function not found, cannot live without it])]) - executables="recv filter audioc write afh play" ################################################################## clock_gettime clock_gettime_lib= @@ -116,41 +109,15 @@ fi if test "$clock_gettime_lib" = "rt"; then AC_SUBST(clock_gettime_ldflags, -lrt) fi + ########################################################################### osl -have_osl=yes -OLD_CPPFLAGS="$CPPFLAGS" -OLD_LDFLAGS="$LDFLAGS" -OLD_LIBS="$LIBS" -AC_ARG_WITH(osl_headers, [AS_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, [AS_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" = "yes"; then - AC_SUBST(osl_cppflags) - osl_ldflags="$osl_libs -losl" - AC_SUBST(osl_ldflags) -else - AC_MSG_WARN([libosl not found, can not build para_server. -Download libosl at - http://systemlinux.org/~maan/osl -or execute - git clone git://git.tuebingen.mpg.de/osl - ]) -fi -CPPFLAGS="$OLD_CPPFLAGS" -LDFLAGS="$OLD_LDFLAGS" -LIBS="$OLD_LIBS" +STASH_FLAGS +LIB_ARG_WITH([osl], [-losl]) +HAVE_OSL=yes +AC_CHECK_HEADER(osl.h, [], [HAVE_OSL=no]) +AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no]) +LIB_SUBST_FLAGS(osl) +UNSTASH_FLAGS ########################################################################### crypto AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [ Force using crypto library "lib". This package requires either @@ -380,11 +347,17 @@ if test -n "$with_ogg_libs"; then fi AC_CHECK_HEADERS([ogg/ogg.h], [], [ have_ogg="no"; ]) AC_CHECK_LIB([ogg], [ogg_stream_init], [], [ have_ogg="no" ]) +CPPFLAGS="$OLD_CPPFLAGS" +LDFLAGS="$OLD_LDFLAGS" +LIBS="$OLD_LIBS" have_vorbis="yes" have_speex="yes" have_opus="yes" if test "$have_ogg" = "yes"; then + OLD_CPPFLAGS="$CPPFLAGS" + OLD_LDFLAGS="$LDFLAGS" + OLD_LIBS="$LIBS" # vorbis if test -n "$with_vorbis_headers"; then vorbis_cppflags="-I$with_vorbis_headers" @@ -396,8 +369,14 @@ if test "$have_ogg" = "yes"; then fi AC_CHECK_HEADERS([vorbis/codec.h], [], [ have_vorbis="no" ]) AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [ have_vorbis="no" ]) + CPPFLAGS="$OLD_CPPFLAGS" + LDFLAGS="$OLD_LDFLAGS" + LIBS="$OLD_LIBS" # speex + OLD_CPPFLAGS="$CPPFLAGS" + OLD_LDFLAGS="$LDFLAGS" + OLD_LIBS="$LIBS" if test -n "$with_speex_headers"; then speex_cppflags="-I$with_speex_headers" CPPFLAGS="$CPPFLAGS $speex_cppflags" @@ -408,8 +387,14 @@ if test "$have_ogg" = "yes"; then fi AC_CHECK_LIB([speex], [speex_decoder_init], [], [ have_speex="no" ]) AC_CHECK_HEADERS([speex/speex.h], [], [ have_speex="no" ]) + CPPFLAGS="$OLD_CPPFLAGS" + LDFLAGS="$OLD_LDFLAGS" + LIBS="$OLD_LIBS" # opus + OLD_CPPFLAGS="$CPPFLAGS" + OLD_LDFLAGS="$LDFLAGS" + OLD_LIBS="$LIBS" if test -n "$with_opus_headers"; then opus_cppflags="-I$with_opus_headers" CPPFLAGS="$CPPFLAGS $opus_cppflags" @@ -420,6 +405,9 @@ if test "$have_ogg" = "yes"; then fi AC_CHECK_LIB([opus], [opus_multistream_decode], [], [ have_opus="no" ]) AC_CHECK_HEADERS([opus/opus.h], [], [ have_opus="no" ]) + CPPFLAGS="$OLD_CPPFLAGS" + LDFLAGS="$OLD_LDFLAGS" + LIBS="$OLD_LIBS" else AC_MSG_WARN([vorbis/speex/opus depend on libogg, which was not detected]) have_vorbis="no" @@ -440,6 +428,7 @@ if test "$have_vorbis" = "yes" || \ fi if test "$have_vorbis" = "yes"; then AC_DEFINE(HAVE_OGGVORBIS, 1, define to 1 to turn on ogg/vorbis support) + AC_SUBST(vorbis_cppflags) vorbis_ldflags="$vorbis_libs -lvorbis -lvorbisfile" AC_SUBST(vorbis_ldflags) fi @@ -460,9 +449,6 @@ if test "$have_opus" = "yes"; then else AC_MSG_WARN([no ogg/opus $msg]) fi -CPPFLAGS="$OLD_CPPFLAGS" -LDFLAGS="$OLD_LDFLAGS" -LIBS="$OLD_LIBS" ########################################################################### faad have_faad=yes OLD_CPPFLAGS="$CPPFLAGS" @@ -580,7 +566,11 @@ 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) @@ -727,22 +717,18 @@ 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"]) + readline_ldflags="$readline_libs" + AC_SEARCH_LIBS([rl_free_keymap], [readline], [ + readline_ldflags="$readline_ldflags -lreadline" + ], [have_readline="no"]) if test "$have_readline" = "no"; then # try with -lcurses # clear cache AC_MSG_NOTICE([trying again with -lcurses]) unset ac_cv_search_rl_free_keymap 2> /dev/null AC_SEARCH_LIBS([rl_free_keymap], [readline], [ have_readline=yes - readline_ldflags="$readline_ldflags -lcurses" + readline_ldflags="$readline_ldflags -lreadline -lcurses" ], [], [-lcurses]) fi if test "$have_readline" = "no"; then # try with -ltermcap @@ -751,13 +737,21 @@ if test "$have_readline" = "yes"; then unset ac_cv_search_rl_free_keymap 2> /dev/null AC_SEARCH_LIBS([rl_free_keymap], [readline], [ have_readline=yes - readline_ldflags="$readline_ldflags -ltermcap" + readline_ldflags="$readline_ldflags -lreadline -ltermcap" ], [], [-ltermcap]) fi fi if test "$have_readline" = "yes"; then - : + AC_CHECK_DECL( + [rl_free_keymap], + [AC_DEFINE(RL_FREE_KEYMAP_DECLARED, 1, readline >= 6.3)], + [], + [ + #include + #include + ] + ) AC_SUBST(readline_cppflags) AC_SUBST(readline_ldflags) AC_DEFINE(HAVE_READLINE, 1, define to 1 to turn on readline support) @@ -801,7 +795,7 @@ LDFLAGS="$OLD_LDFLAGS" LIBS="$OLD_LIBS" ######################################################################### server if test \( "$have_openssl" = "yes" -o "$have_gcrypt" = "yes" \) \ - -a "$have_osl" = "yes" ; then + -a "$HAVE_OSL" = "yes" ; then build_server="yes" executables="$executables server" @@ -930,6 +924,7 @@ if test "$have_openssl" = "yes" -o "$have_gcrypt" = "yes"; then amp_filter udp_recv prebuffer_filter + sync_filter " audiod_errlist_objs="$audiod_errlist_objs audiod @@ -967,6 +962,7 @@ if test "$have_openssl" = "yes" -o "$have_gcrypt" = "yes"; then wma_common wmadec_filter buffer_tree + sync_filter " if test "$have_openssl" = "yes"; then audiod_errlist_objs="$audiod_errlist_objs crypt" @@ -976,7 +972,7 @@ if test "$have_openssl" = "yes" -o "$have_gcrypt" = "yes"; then 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" + audiod_cmdline_objs="$audiod_cmdline_objs osx_write" fi if test "$have_vorbis" = "yes"; then audiod_errlist_objs="$audiod_errlist_objs oggdec_filter" @@ -1092,6 +1088,7 @@ if test "$have_curses" = "yes"; then gui gui_theme time + sched version ggo " @@ -1111,6 +1108,7 @@ filters=" fecdec wmadec prebuffer + sync " filter_errlist_objs=" filter_common @@ -1135,12 +1133,14 @@ filter_errlist_objs=" wmadec_filter buffer_tree net + sync_filter " filter_cmdline_objs=" filter compress_filter amp_filter prebuffer_filter + sync_filter " if test "$have_vorbis" = "yes"; then @@ -1173,6 +1173,8 @@ 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)) @@ -1237,6 +1239,7 @@ 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) @@ -1270,6 +1273,7 @@ if test "$have_speex" = "yes"; then 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" @@ -1317,6 +1321,7 @@ play_errlist_objs=" write_common file_write version + sync_filter " play_cmdline_objs=" http_recv @@ -1328,10 +1333,11 @@ play_cmdline_objs=" prebuffer_filter file_write play + sync_filter " if test "$have_core_audio" = "yes"; then play_errlist_objs="$play_errlist_objs osx_write ipc" - play_cmdline_objs="$play_cmdline_objs osx_write.cmdline" + play_cmdline_objs="$play_cmdline_objs osx_write" fi if test "$have_vorbis" = "yes" || \ test "$have_speex" = "yes" || \ @@ -1405,7 +1411,7 @@ default_writer="FILE_WRITE" if test "$have_core_audio" = "yes"; then write_errlist_objs="$write_errlist_objs osx_write ipc" - write_cmdline_objs="$write_cmdline_objs osx_write.cmdline" + write_cmdline_objs="$write_cmdline_objs osx_write" writers="$writers osx" default_writer="OSX_WRITE" fi @@ -1427,6 +1433,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, @@ -1501,9 +1508,8 @@ done # use echo to replace newlines by space AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix)) -for obj in $all_errlist_objs; do - SS="$SS SS_$(echo $obj | tr 'a-z' 'A-Z')," -done +SS=$(for obj in $all_errlist_objs; do + printf '%s' " SS_$obj,"; done | tr 'a-z' 'A-Z') AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM, [enum {$SS NUM_SS}], [list of all objects that use the paraslash error facility] @@ -1545,7 +1551,7 @@ 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 para_fade: $build_fade