Thomas Vander Stichele | ab5a411 | 2002-11-26 14:51:33 +0000 | [diff] [blame] | 1 | # CFLAGS and library paths for FFMPEG |
| 2 | # taken from Autostar Sandbox, http://autostars.sourceforge.net/ |
| 3 | |
| 4 | dnl Usage: |
| 5 | dnl AM_PATH_FFMPEG([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) |
| 6 | dnl FIXME: version checking does not work currently |
| 7 | dnl |
| 8 | dnl Example: |
| 9 | dnl AM_PATH_FFMPEG(0.4.6, , AC_MSG_ERROR([*** FFMPEG >= 0.4.6 not installed)) |
| 10 | dnl |
| 11 | dnl Defines FFMPEG_LIBS |
| 12 | dnl FIXME: should define FFMPEG_VERSION |
| 13 | dnl |
| 14 | |
Thomas Vander Stichele | fd831b8 | 2004-02-11 16:44:05 +0000 | [diff] [blame] | 15 | AC_DEFUN([AM_PATH_FFMPEG], |
Thomas Vander Stichele | ab5a411 | 2002-11-26 14:51:33 +0000 | [diff] [blame] | 16 | [ |
| 17 | dnl allow for specification of a source path (for uninstalled) |
| 18 | AC_ARG_WITH(ffmpeg-source, |
| 19 | AC_HELP_STRING([--with-ffmpeg-source=DIR], |
| 20 | [Directory where FFmpeg source is (optional)]), |
Thomas Vander Stichele | e947d5f | 2002-12-26 10:53:21 +0000 | [diff] [blame] | 21 | ffmpeg_source="$withval") |
Thomas Vander Stichele | ab5a411 | 2002-11-26 14:51:33 +0000 | [diff] [blame] | 22 | |
| 23 | dnl save CFLAGS and LIBS here |
| 24 | CFLAGS_save=$CFLAGS |
| 25 | LIBS_save=$LIBS |
| 26 | if test "x$ffmpeg_source" != "x"; then |
| 27 | dnl uninstalled FFmpeg copy |
| 28 | AC_MSG_NOTICE([Looking for FFmpeg source in $ffmpeg_source]) |
| 29 | CFLAGS="-I$ffmpeg_source/libav -I$ffmpeg_source/libavcodec" |
| 30 | LIBS="-L$ffmpeg_source/libav -L$ffmpeg_source/libavcodec" |
| 31 | AC_DEFINE_UNQUOTED(HAVE_FFMPEG_UNINSTALLED, 1, |
| 32 | [defined if we compile against uninstalled FFmpeg]) |
| 33 | FFMPEG_COMMON_INCLUDE="#include <common.h>" |
| 34 | else |
| 35 | FFMPEG_COMMON_INCLUDE="#include <ffmpeg/common.h>" |
| 36 | fi |
| 37 | |
| 38 | dnl check for libavcodec |
| 39 | AC_CHECK_LIB(avcodec, avcodec_init, HAVE_FFMPEG=yes, HAVE_FFMPEG=no) |
| 40 | |
| 41 | dnl check for avcodec.h and avformat.h |
| 42 | if test "x$ffmpeg_source" != "x"; then |
| 43 | dnl uninstalled |
| 44 | AC_CHECK_HEADER(avcodec.h, , HAVE_FFMPEG=no, [/* only compile */]) |
| 45 | AC_CHECK_HEADER(avformat.h, , HAVE_FFMPEG=no, [/* only compile */]) |
| 46 | else |
| 47 | AC_CHECK_HEADER(ffmpeg/avcodec.h, , HAVE_FFMPEG=no) |
| 48 | AC_CHECK_HEADER(ffmpeg/avformat.h, , HAVE_FFMPEG=no) |
| 49 | fi |
| 50 | |
| 51 | dnl now check if it's sufficiently new |
| 52 | |
| 53 | AC_LANG_SAVE() |
| 54 | AC_LANG_C() |
| 55 | |
| 56 | dnl FIXME: we use strcmp, which we know is going to break if ffmpeg ever uses |
| 57 | dnl two digits for any of their version numbers. It makes the test so much |
| 58 | dnl easier though so let's ignore that |
| 59 | AC_TRY_RUN([ |
| 60 | $FFMPEG_COMMON_INCLUDE |
| 61 | #include <stdio.h> |
| 62 | #include <string.h> |
| 63 | |
| 64 | int |
| 65 | main () |
| 66 | { |
| 67 | if (strcmp (FFMPEG_VERSION, "$1") == -1) |
| 68 | { |
| 69 | fprintf (stderr, |
| 70 | "ERROR: your copy of ffmpeg is too old (%s)\n", FFMPEG_VERSION); |
| 71 | return 1; |
| 72 | } |
| 73 | else |
| 74 | return 0; |
| 75 | } |
| 76 | ], , HAVE_FFMPEG=no) |
| 77 | |
| 78 | dnl now do the actual "do we have it ?" test |
| 79 | if test "x$HAVE_FFMPEG" = "xyes"; then |
| 80 | FFMPEG_LIBS="$LIBS -lavcodec -lavformat" |
| 81 | FFMPEG_CFLAGS="$CFLAGS" |
| 82 | AC_MSG_NOTICE(we have ffmpeg) |
| 83 | dnl execute what we have to because it's found |
| 84 | ifelse([$2], , :, [$2]) |
| 85 | else |
| 86 | FFMPEG_LIBS="" |
| 87 | FFMPEG_CFLAGS="" |
| 88 | dnl execute what we have to because it's not found |
| 89 | ifelse([$3], , :, [$3]) |
| 90 | fi |
| 91 | |
| 92 | dnl make variables available |
| 93 | AC_SUBST(FFMPEG_LIBS) |
| 94 | AC_SUBST(FFMPEG_CFLAGS) |
| 95 | AC_SUBST(HAVE_FFMPEG) |
| 96 | AC_LANG_RESTORE() |
| 97 | CFLAGS=$CFLAGS_save |
| 98 | LIBS=$LIBS_save |
| 99 | ]) |