changing ffmpeg to only update when required
[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   DIRECTORY=`pwd`
22   # get/update cvs
23   if test ! -d $1; then mkdir -p $1; fi
24   cd $1
25
26   if test ! -d ffmpeg/CVS; then
27     # check out cvs code
28     AC_MSG_NOTICE(checking out ffmpeg cvs code from $2 into $1)
29     cvs -Q -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co -D '$2' ffmpeg || FAILED=yes
30     cd ffmpeg
31   else
32     # compare against Tag file and see if it needs updating
33     if diff -q Tag ffmpeg/CVS/Tag > /dev/null 2> /dev/null
34     then
35       # diff returned no problem
36       AC_MSG_NOTICE(ffmpeg cvs code in sync)
37     else
38       # diff says they differ
39       cd ffmpeg 
40       AC_MSG_NOTICE(updating ffmpeg cvs code)
41       cvs -Q update -dP -D '$2' || FAILED=yes
42     fi
43   fi
44   
45   # now go back
46   cd $DIRECTORY
47
48   if test "x$FAILED" == "xyes"; then
49     [$4]
50     false
51   else
52     [$3]
53     true
54   fi
55 ])