# CFLAGS and library paths for FFMPEG # taken from Autostar Sandbox, http://autostars.sourceforge.net/ dnl Usage: dnl AM_PATH_FFMPEG([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl FIXME: version checking does not work currently dnl dnl Example: dnl AM_PATH_FFMPEG(0.4.6, , AC_MSG_ERROR([*** FFMPEG >= 0.4.6 not installed)) dnl dnl Defines FFMPEG_LIBS dnl FIXME: should define FFMPEG_VERSION dnl AC_DEFUN([AM_PATH_FFMPEG], [ dnl allow for specification of a source path (for uninstalled) AC_ARG_WITH(ffmpeg-source, AC_HELP_STRING([--with-ffmpeg-source=DIR], [Directory where FFmpeg source is (optional)]), ffmpeg_source="$withval") dnl save CFLAGS and LIBS here CFLAGS_save=$CFLAGS LIBS_save=$LIBS if test "x$ffmpeg_source" != "x"; then dnl uninstalled FFmpeg copy AC_MSG_NOTICE([Looking for FFmpeg source in $ffmpeg_source]) CFLAGS="-I$ffmpeg_source/libav -I$ffmpeg_source/libavcodec" LIBS="-L$ffmpeg_source/libav -L$ffmpeg_source/libavcodec" AC_DEFINE_UNQUOTED(HAVE_FFMPEG_UNINSTALLED, 1, [defined if we compile against uninstalled FFmpeg]) FFMPEG_COMMON_INCLUDE="#include " else FFMPEG_COMMON_INCLUDE="#include " fi dnl check for libavcodec AC_CHECK_LIB(avcodec, avcodec_init, HAVE_FFMPEG=yes, HAVE_FFMPEG=no) dnl check for avcodec.h and avformat.h if test "x$ffmpeg_source" != "x"; then dnl uninstalled AC_CHECK_HEADER(avcodec.h, , HAVE_FFMPEG=no, [/* only compile */]) AC_CHECK_HEADER(avformat.h, , HAVE_FFMPEG=no, [/* only compile */]) else AC_CHECK_HEADER(ffmpeg/avcodec.h, , HAVE_FFMPEG=no) AC_CHECK_HEADER(ffmpeg/avformat.h, , HAVE_FFMPEG=no) fi dnl now check if it's sufficiently new AC_LANG_SAVE() AC_LANG_C() dnl FIXME: we use strcmp, which we know is going to break if ffmpeg ever uses dnl two digits for any of their version numbers. It makes the test so much dnl easier though so let's ignore that AC_TRY_RUN([ $FFMPEG_COMMON_INCLUDE #include #include int main () { if (strcmp (FFMPEG_VERSION, "$1") == -1) { fprintf (stderr, "ERROR: your copy of ffmpeg is too old (%s)\n", FFMPEG_VERSION); return 1; } else return 0; } ], , HAVE_FFMPEG=no) dnl now do the actual "do we have it ?" test if test "x$HAVE_FFMPEG" = "xyes"; then FFMPEG_LIBS="$LIBS -lavcodec -lavformat" FFMPEG_CFLAGS="$CFLAGS" AC_MSG_NOTICE(we have ffmpeg) dnl execute what we have to because it's found ifelse([$2], , :, [$2]) else FFMPEG_LIBS="" FFMPEG_CFLAGS="" dnl execute what we have to because it's not found ifelse([$3], , :, [$3]) fi dnl make variables available AC_SUBST(FFMPEG_LIBS) AC_SUBST(FFMPEG_CFLAGS) AC_SUBST(HAVE_FFMPEG) AC_LANG_RESTORE() CFLAGS=$CFLAGS_save LIBS=$LIBS_save ])