1dnl slurp-ffmpeg.m4 0.1.1
2dnl a macro to slurp in ffmpeg's cvs source inside a project tree
3dnl taken from Autostar Sandbox, http://autostars.sourceforge.net/
4
5dnl Usage:
6dnl AS_SLURP_FFMPEG(DIRECTORY, DATE, [ACTION-IF-WORKED [, ACTION-IF-NOT-WORKED]]])
7dnl
8dnl Example:
9dnl AM_PATH_FFMPEG(lib/ffmpeg, 2002-12-14 12:00 GMT)
10dnl
11dnl make sure you have a Tag file in the dir where you check out that
12dnl is the Tag of CVS you want to have checked out
13dnl it should correspond to the DATE argument you supply, ie resolve to
14dnl the same date
15dnl (in an ideal world, cvs would understand it's own Tag file format as
16dnl a date spec)
17
18AC_DEFUN([AS_SLURP_FFMPEG],
19[
20  # save original dir
21  FAILED=""
22  DIRECTORY=`pwd`
23  # get/update cvs
24  if test ! -d $1; then mkdir -p $1; fi
25  dnl we need to check $srcdir/$1 or it will always checkout ffmpeg even if it is there
26  dnl at least when top_srcdir != top_builddir.
27  dnl FIXME: unfortunately this makes the checkout go into top_srcdir
28  cd $srcdir/$1
29
30  if test ! -e ffmpeg/README; then
31    # check out cvs code
32    AC_MSG_NOTICE(checking out ffmpeg cvs code from $2 into $1)
33    cvs -Q -z4 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -D '$2' ffmpeg || FAILED=yes
34  else
35    # compare against Tag file and see if it needs updating
36    if test "`cat Tag`" == "$2"; then
37      AC_MSG_NOTICE(ffmpeg cvs code in sync)
38    else
39      cd ffmpeg
40      AC_MSG_NOTICE(updating ffmpeg cvs code to $2)
41      cvs -Q -z4 update -dP -D '$2' || FAILED=yes
42      cd ..
43    fi
44  fi
45  if test "x$FAILED" != "xyes"; then
46    echo "$2" > Tag
47  fi
48
49  # now go back
50  cd $DIRECTORY
51
52  if test "x$FAILED" == "xyes"; then
53    [$4]
54    false
55  else
56    [$3]
57    true
58  fi
59])
60