build: refactor GR_GIT and GR_VERSION
[debian/gnuradio] / config / gr_git.m4
1 dnl Copyright 2009,2010 Free Software Foundation, Inc.
2 dnl 
3 dnl This file is part of GNU Radio
4 dnl 
5 dnl GNU Radio is free software; you can redistribute it and/or modify
6 dnl it under the terms of the GNU General Public License as published by
7 dnl the Free Software Foundation; either version 3, or (at your option)
8 dnl any later version.
9 dnl 
10 dnl GNU Radio is distributed in the hope that it will be useful,
11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 dnl GNU General Public License for more details.
14 dnl 
15 dnl You should have received a copy of the GNU General Public License
16 dnl along with GNU Radio; see the file COPYING.  If not, write to
17 dnl the Free Software Foundation, Inc., 51 Franklin Street,
18 dnl Boston, MA 02110-1301, USA.
19
20
21 AC_DEFUN([GR_GIT],[
22   dnl Identify git binary
23   AC_PATH_PROG([GIT],[git])
24   
25   dnl If it exists, get either 'git describe' or fallback to current commit
26   if test x$GIT != x ; then
27     AC_MSG_CHECKING([existence of git version control directory])
28     if test -d $srcdir/.git ; then
29       AC_MSG_RESULT([ok])
30       AC_MSG_CHECKING([git description of current commit])
31       if (cd $srcdir && $GIT describe >/dev/null 2>&1); then
32         GIT_DESCRIBE=`cd $srcdir && $GIT describe --abbrev=8 --long`
33         GIT_TAG=`echo $GIT_DESCRIBE | cut -f 1 -d '-'`
34         GIT_SEQNO=`echo $GIT_DESCRIBE | cut -f 2 -d '-'`
35         GIT_COMMIT=`echo $GIT_DESCRIBE | cut -f 3 -d '-' | cut -f 2- -d 'g'`
36         # Release candidate tags create an extra -rcX field
37         if test x`echo $GIT_DESCRIBE | cut -f 1- -d '-' --output-delimiter=' ' | wc -w` = x4; then
38           GIT_TAG=`echo $GIT_DESCRIBE | cut -f -2 -d '-'`
39           GIT_SEQNO=`echo $GIT_DESCRIBE | cut -f 3 -d '-'`
40           GIT_COMMIT=`echo $GIT_DESCRIBE | cut -f 4 -d '-' | cut -f 2- -d 'g'`
41         fi
42         AC_MSG_RESULT([$GIT_DESCRIBE])
43       else
44         AC_MSG_RESULT([unable to find, using current commit])
45         GIT_TAG=''
46         GIT_SEQNO=''
47         GIT_COMMIT=`cd $srcdir && $GIT describe --always --abbrev=8`
48       fi
49     else
50       AC_MSG_RESULT([not found])
51     fi
52
53     AC_SUBST([GIT_DESCRIBE])
54     AC_SUBST([GIT_TAG])
55     AC_SUBST([GIT_SEQNO])
56     AC_SUBST([GIT_COMMIT])
57   fi
58 ])