625eccd2aced0bc014a5be93a3c5694d5d69bb3f
[platform/upstream/gstreamer.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 ! -d ffmpeg/CVS; 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     echo "$2" > Tag
32   else
33     # compare against Tag file and see if it needs updating
34     if test "`cat Tag`" == "$2"; then
35       AC_MSG_NOTICE(ffmpeg cvs code in sync)
36     else
37       cd ffmpeg 
38       AC_MSG_NOTICE(updating ffmpeg cvs code to $2)
39       cvs -Q update -dP -D '$2' || FAILED=yes
40       cd ..
41       echo "$2" > Tag
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 ])