ogg/opus: Infrastructure.
[paraslash.git] / configure.ac
index 60bb6644286c3ba5b22a0b568ce63695d6d7479b..b3f3afaf66c34dafe95e0f9fe7f82da3b80a3de5 100644 (file)
@@ -247,6 +247,18 @@ if test x$ac_cv_have_working_snprintf$ac_cv_have_working_vsnprintf != "xyesyes";
 AC_MSG_ERROR([fatal: buggy snprintf() detected])
 fi])
 AX_FUNC_SNPRINTF()
+################################################################## clock_gettime
+clock_gettime_lib=
+AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
+       AC_CHECK_LIB([rt], [clock_gettime], [clock_gettime_lib=rt], [], [])
+])
+if test -n "$clock_gettime_lib"; then
+       AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [
+               define to 1 if clock_gettime() is supported])
+fi
+if test "$clock_gettime_lib" = "rt"; then
+       AC_SUBST(clock_gettime_ldflags, -lrt)
+fi
 ########################################################################### osl
 have_osl=yes
 OLD_CPPFLAGS="$CPPFLAGS"
@@ -289,7 +301,7 @@ else
                acl udp_send"
 
        server_ldflags=""
-       server_audio_formats="mp3 wma"
+       audio_format_handlers="mp3 wma"
        AC_SUBST(osl_cppflags)
        server_ldflags="$server_ldflags $osl_libs -losl"
 fi
@@ -471,12 +483,17 @@ fi
 AC_CHECK_HEADER(curses.h, [], [
        have_curses="no"
 ])
-AC_CHECK_LIB([curses], [initscr], [], [
-       have_curses="no"
-])
+gui_ldflags="$curses_libs"
+AC_CHECK_LIB([ncursesw], [initscr],
+       [gui_ldflags="$curses_libs -lncursesw"], [
+               AC_CHECK_LIB([curses], [initscr],
+                       [gui_ldflags="$curses_libs -lcurses"],
+                       [have_curses="no"]
+               )
+       ]
+)
 if test "$have_curses" = "yes"; then
        AC_SUBST(curses_cppflags)
-       AC_DEFINE(HAVE_NCURSES, 1, [define to 1 to turn on curses support])
        extras="$extras gui"
        executables="$executables gui"
 else
@@ -537,7 +554,7 @@ if test ${have_core_audio} = yes; then
        default_writer="OSX_WRITE"
        AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
 fi
-########################################################### ogg/vorbis/speex
+####################################################### ogg/vorbis/speex/opus
 have_ogg="yes"
 OLD_CPPFLAGS="$CPPFLAGS"
 OLD_LD_FLAGS="$LDFLAGS"
@@ -554,6 +571,10 @@ AC_ARG_WITH(speex_headers, [AS_HELP_STRING(--with-speex-headers=dir,
        [look for speex headers also in dir])])
 AC_ARG_WITH(speex_libs, [AS_HELP_STRING(--with-speex-libs=dir,
        [look for speex libs also in dir])])
+AC_ARG_WITH(opus_headers, [AS_HELP_STRING(--with-opus-headers=dir,
+       [look for opus headers also in dir])])
+AC_ARG_WITH(opus_libs, [AS_HELP_STRING(--with-opus-libs=dir,
+       [look for opus libs also in dir])])
 
 if test -n "$with_ogg_headers"; then
        ogg_cppflags="-I$with_ogg_headers"
@@ -568,6 +589,7 @@ AC_CHECK_LIB([ogg], [ogg_stream_init], [], [ have_ogg="no" ])
 
 have_vorbis="yes"
 have_speex="yes"
+have_opus="yes"
 if test "$have_ogg" = "yes"; then
        # vorbis
        if test -n "$with_vorbis_headers"; then
@@ -592,14 +614,29 @@ 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" ])
+
+       # opus
+       if test -n "$with_opus_headers"; then
+               opus_cppflags="-I$with_opus_headers"
+               CPPFLAGS="$CPPFLAGS $opus_cppflags"
+       fi
+       if test -n "$with_opus_libs"; then
+               speex_libs="-L$with_opus_libs"
+               LDFLAGS="$LDFLAGS $opus_libs"
+       fi
+       AC_CHECK_LIB([opus], [opus_multistream_decode], [], [ have_opus="no" ])
+       AC_CHECK_HEADERS([opus/opus.h], [], [ have_opus="no" ])
 else
-       AC_MSG_WARN([vorbis/speex depend on libogg, which was not detected])
+       AC_MSG_WARN([vorbis/speex/opus depend on libogg, which was not detected])
        have_vorbis="no"
        have_speex="no"
+       have_opus="no"
 fi
 
 msg="support in para_server/para_filter/para_afh"
-if test "$have_vorbis" = "yes" || test "$have_speex" = "yes"; then
+if test "$have_vorbis" = "yes" || \
+               test "$have_speex" = "yes" || \
+               test "$have_opus" = "yes"; then
        AC_SUBST(ogg_cppflags)
        ogg_libs="$ogg_libs -logg"
        if test "$OSTYPE" = "Darwin"; then
@@ -637,7 +674,7 @@ if test "$have_vorbis" = "yes"; then
        recv_errlist_objs="$recv_errlist_objs ogg_afh"
 
        audiod_audio_formats="$audiod_audio_formats ogg"
-       server_audio_formats="$server_audio_formats ogg"
+       audio_format_handlers="$audio_format_handlers ogg"
 else
        AC_MSG_WARN([no ogg/vorbis $msg])
 fi
@@ -661,10 +698,34 @@ if test "$have_speex" = "yes"; then
        recv_errlist_objs="$recv_errlist_objs spx_afh spx_common"
 
        audiod_audio_formats="$audiod_audio_formats spx"
-       server_audio_formats="$server_audio_formats spx"
+       audio_format_handlers="$audio_format_handlers spx"
 else
        AC_MSG_WARN([no ogg/speex $msg])
 fi
+if test "$have_opus" = "yes"; then
+       all_errlist_objs="$all_errlist_objs opusdec_filter opus_afh opus_common"
+       AC_DEFINE(HAVE_OPUS, 1, define to 1 to turn on ogg/opus support)
+       filters="$filters opusdec"
+       opus_libs="-lopus"
+       server_ldflags="$server_ldflags $opus_libs"
+       filter_ldflags="$filter_ldflags $opus_libs"
+       audiod_ldflags="$audiod_ldflags $opus_libs"
+       afh_ldflags="$afh_ldflags $opus_libs"
+       play_ldflags="$play_ldflags $opus_libs"
+       recv_ldflags="$recv_ldflags $opus_libs"
+
+       server_errlist_objs="$server_errlist_objs opus_afh opus_common"
+       filter_errlist_objs="$filter_errlist_objs opusdec_filter opus_common"
+       audiod_errlist_objs="$audiod_errlist_objs opusdec_filter opus_common"
+       afh_errlist_objs="$afh_errlist_objs opus_afh opus_common"
+       play_errlist_objs="$play_errlist_objs opusdec_filter opus_afh opus_common"
+       recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
+
+       audiod_audio_formats="$audiod_audio_formats opus"
+       server_audio_formats="$server_audio_formats opus"
+else
+       AC_MSG_WARN([no ogg/opus $msg])
+fi
 CPPFLAGS="$OLD_CPPFLAGS"
 LDFLAGS="$OLD_LDFLAGS"
 LIBS="$OLD_LIBS"
@@ -705,7 +766,7 @@ if test "$have_faad" = "yes"; then
        recv_ldflags="$afh_ldflags $faad_libs -lfaad"
 
        audiod_audio_formats="$audiod_audio_formats aac"
-       server_audio_formats="$server_audio_formats aac"
+       audio_format_handlers="$audio_format_handlers aac"
        filters="$filters aacdec"
        AC_SUBST(faad_cppflags)
 else
@@ -836,7 +897,7 @@ if test "$have_flac" = "yes"; then
        afh_ldflags="$afh_ldflags $flac_libs -lFLAC"
        recv_ldflags="$afh_ldflags $flac_libs -lFLAC"
        filters="$filters flacdec"
-       server_audio_formats="$server_audio_formats flac"
+       audio_format_handlers="$audio_format_handlers flac"
        audiod_audio_formats="$audiod_audio_formats flac"
        AC_SUBST(flac_cppflags)
 else
@@ -1186,7 +1247,7 @@ done
 AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
        [char * array of all status items])
 
-AC_DEFINE_UNQUOTED(SERVER_AUDIO_FORMATS, "$server_audio_formats",
+AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
        [formats supported by para_server and para_afh])
 
 AC_SUBST(executables, add_para($executables))
@@ -1243,6 +1304,7 @@ 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_SUBST(gui_ldflags, $gui_ldflags)
 AC_DEFINE_UNQUOTED(INIT_GUI_ERRLISTS,
        objlist_to_errlist($gui_errlist_objs), errors used by para_gui)
 
@@ -1251,8 +1313,6 @@ AC_SUBST(play_ldflags, $play_ldflags)
 AC_DEFINE_UNQUOTED(INIT_PLAY_ERRLISTS,
        objlist_to_errlist($play_errlist_objs), errors used by para_play)
 
-AC_MSG_NOTICE(play objs: $play_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)
@@ -1284,7 +1344,7 @@ paraslash configuration:
 ~~~~~~~~~~~~~~~~~~~~~~~~
 unix socket credentials: $have_ucred
 readline (interactive CLIs): $have_readline
-audio formats supported by para_server/para_afh: $server_audio_formats
+audio formats handlers: $audio_format_handlers
 id3 version2 support: $have_libid3tag
 filters: $filters
 writers: $writers