make ffmpeg erroring out work:
[platform/upstream/gst-plugins-good.git] / m4 / as-slurp-ffmpeg.m4
1 dnl slurp-ffmpeg.m4 0.1.1
2 dnl a macro to slurp in ffmpeg's cvs source inside a project tree
3 dnl taken from Autostar Sandbox, http://autostars.sourceforge.net/
4
5 dnl Usage:
6 dnl AS_SLURP_FFMPEG(DIRECTORY, DATE, [ACTION-IF-WORKED [, ACTION-IF-NOT-WORKED]]])
7 dnl
8 dnl Example:
9 dnl AM_PATH_FFMPEG(lib/ffmpeg, 2002-12-14 12:00 GMT)
10 dnl
11 dnl make sure you have a Tag file in the dir where you check out that
12 dnl is the Tag of CVS you want to have checked out
13 dnl it should correspond to the DATE argument you supply, ie resolve to
14 dnl the same date
15 dnl (in an ideal world, cvs would understand it's own Tag file format as
16 dnl a date spec)
17
18 AC_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   cd $1
26
27   if test ! -e ffmpeg/README; then
28     # check out cvs code
29     AC_MSG_NOTICE(checking out ffmpeg cvs code from $2 into $1)
30     cvs -Q -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co -D '$2' ffmpeg || FAILED=yes
31   else
32     # compare against Tag file and see if it needs updating
33     if test "`cat Tag`" == "$2"; then
34       AC_MSG_NOTICE(ffmpeg cvs code in sync)
35     else
36       cd ffmpeg 
37       AC_MSG_NOTICE(updating ffmpeg cvs code to $2)
38       cvs -Q update -dP -D '$2' || FAILED=yes
39       cd ..
40     fi
41   fi
42   if test "x$FAILED" != "xyes"; then
43     echo "$2" > Tag 
44   fi
45   
46   # now go back
47   cd $DIRECTORY
48
49   if test "x$FAILED" == "xyes"; then
50     [$4]
51     false
52   else
53     [$3]
54     true
55   fi
56 ])