]> git.proxmox.com Git - mirror_zfs.git/blame - config/zfs-meta.m4
Use 'git describe' for working builds
[mirror_zfs.git] / config / zfs-meta.m4
CommitLineData
f6fb7651
BB
1###############################################################################
2# Written by Chris Dunlap <cdunlap@llnl.gov>.
3# Modified by Brian Behlendorf <behlendorf1@llnl.gov>.
4###############################################################################
5# ZFS_AC_META: Read metadata from the META file. When building from a
6# git repository the ZFS_META_RELEASE field will be overwritten if there
7# is an annotated tag matching the form ZFS_META_NAME-ZFS_META_VERSION-*.
8# This allows for working builds to be uniquely identified using the git
9# commit hash.
10###############################################################################
11
c9c0d073
BB
12AC_DEFUN([ZFS_AC_META], [
13
14 AH_BOTTOM([
15#undef PACKAGE
16#undef PACKAGE_BUGREPORT
17#undef PACKAGE_NAME
18#undef PACKAGE_STRING
19#undef PACKAGE_TARNAME
20#undef PACKAGE_VERSION
21#undef STDC_HEADERS
22#undef VERSION])
23
24 AC_MSG_CHECKING([metadata])
25
26 META="$srcdir/META"
f6fb7651 27 _zfs_ac_meta_type="none"
c9c0d073 28 if test -f "$META"; then
f6fb7651 29 _zfs_ac_meta_type="META file"
c9c0d073
BB
30
31 ZFS_META_NAME=_ZFS_AC_META_GETVAL([(?:NAME|PROJECT|PACKAGE)]);
32 if test -n "$ZFS_META_NAME"; then
33 AC_DEFINE_UNQUOTED([ZFS_META_NAME], ["$ZFS_META_NAME"],
34 [Define the project name.]
35 )
36 AC_SUBST([ZFS_META_NAME])
37 fi
38
39 ZFS_META_VERSION=_ZFS_AC_META_GETVAL([VERSION]);
40 if test -n "$ZFS_META_VERSION"; then
41 AC_DEFINE_UNQUOTED([ZFS_META_VERSION], ["$ZFS_META_VERSION"],
42 [Define the project version.]
43 )
44 AC_SUBST([ZFS_META_VERSION])
45 fi
46
47 ZFS_META_RELEASE=_ZFS_AC_META_GETVAL([RELEASE]);
f6fb7651
BB
48 if git rev-parse --git-dir > /dev/null 2>&1; then
49 _match="${ZFS_META_NAME}-${ZFS_META_VERSION}*"
50 _alias=$(git describe --match=${_match} 2>/dev/null)
51 _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g')
52 if test -n "${_release}"; then
53 ZFS_META_RELEASE=${_release}
54 _zfs_ac_meta_type="git describe"
55 fi
56 fi
57
c9c0d073
BB
58 if test -n "$ZFS_META_RELEASE"; then
59 AC_DEFINE_UNQUOTED([ZFS_META_RELEASE], ["$ZFS_META_RELEASE"],
60 [Define the project release.]
61 )
62 AC_SUBST([ZFS_META_RELEASE])
f3757573
BB
63
64 RELEASE="$ZFS_META_RELEASE"
65 AC_SUBST([RELEASE])
c9c0d073
BB
66 fi
67
68 ZFS_META_LICENSE=_ZFS_AC_META_GETVAL([LICENSE]);
69 if test -n "$ZFS_META_LICENSE"; then
70 AC_DEFINE_UNQUOTED([ZFS_META_LICENSE], ["$ZFS_META_LICENSE"],
71 [Define the project license.]
72 )
73 AC_SUBST([ZFS_META_LICENSE])
74 fi
75
76 if test -n "$ZFS_META_NAME" -a -n "$ZFS_META_VERSION"; then
77 ZFS_META_ALIAS="$ZFS_META_NAME-$ZFS_META_VERSION"
78 test -n "$ZFS_META_RELEASE" &&
79 ZFS_META_ALIAS="$ZFS_META_ALIAS-$ZFS_META_RELEASE"
80 AC_DEFINE_UNQUOTED([ZFS_META_ALIAS],
81 ["$ZFS_META_ALIAS"],
82 [Define the project alias string.]
83 )
84 AC_SUBST([ZFS_META_ALIAS])
85 fi
86
87 ZFS_META_DATA=_ZFS_AC_META_GETVAL([DATE]);
88 if test -n "$ZFS_META_DATA"; then
89 AC_DEFINE_UNQUOTED([ZFS_META_DATA], ["$ZFS_META_DATA"],
90 [Define the project release date.]
91 )
92 AC_SUBST([ZFS_META_DATA])
93 fi
94
95 ZFS_META_AUTHOR=_ZFS_AC_META_GETVAL([AUTHOR]);
96 if test -n "$ZFS_META_AUTHOR"; then
97 AC_DEFINE_UNQUOTED([ZFS_META_AUTHOR], ["$ZFS_META_AUTHOR"],
98 [Define the project author.]
99 )
100 AC_SUBST([ZFS_META_AUTHOR])
101 fi
102
103 m4_pattern_allow([^LT_(CURRENT|REVISION|AGE)$])
104 ZFS_META_LT_CURRENT=_ZFS_AC_META_GETVAL([LT_CURRENT]);
105 ZFS_META_LT_REVISION=_ZFS_AC_META_GETVAL([LT_REVISION]);
106 ZFS_META_LT_AGE=_ZFS_AC_META_GETVAL([LT_AGE]);
107 if test -n "$ZFS_META_LT_CURRENT" \
108 -o -n "$ZFS_META_LT_REVISION" \
109 -o -n "$ZFS_META_LT_AGE"; then
110 test -n "$ZFS_META_LT_CURRENT" || ZFS_META_LT_CURRENT="0"
111 test -n "$ZFS_META_LT_REVISION" || ZFS_META_LT_REVISION="0"
112 test -n "$ZFS_META_LT_AGE" || ZFS_META_LT_AGE="0"
113 AC_DEFINE_UNQUOTED([ZFS_META_LT_CURRENT],
114 ["$ZFS_META_LT_CURRENT"],
115 [Define the libtool library 'current'
116 version information.]
117 )
118 AC_DEFINE_UNQUOTED([ZFS_META_LT_REVISION],
119 ["$ZFS_META_LT_REVISION"],
120 [Define the libtool library 'revision'
121 version information.]
122 )
123 AC_DEFINE_UNQUOTED([ZFS_META_LT_AGE], ["$ZFS_META_LT_AGE"],
124 [Define the libtool library 'age'
125 version information.]
126 )
127 AC_SUBST([ZFS_META_LT_CURRENT])
128 AC_SUBST([ZFS_META_LT_REVISION])
129 AC_SUBST([ZFS_META_LT_AGE])
130 fi
131 fi
132
f6fb7651 133 AC_MSG_RESULT([$_zfs_ac_meta_type])
c9c0d073
BB
134 ]
135)
136
137AC_DEFUN([_ZFS_AC_META_GETVAL],
138 [`perl -n\
139 -e "BEGIN { \\$key=shift @ARGV; }"\
140 -e "next unless s/^\s*\\$key@<:@:=@:>@//i;"\
141 -e "s/^((?:@<:@^'\"#@:>@*(?:(@<:@'\"@:>@)@<:@^\2@:>@*\2)*)*)#.*/\\@S|@1/;"\
142 -e "s/^\s+//;"\
143 -e "s/\s+$//;"\
144 -e "s/^(@<:@'\"@:>@)(.*)\1/\\@S|@2/;"\
145 -e "\\$val=\\$_;"\
146 -e "END { print \\$val if defined \\$val; }"\
147 '$1' $META`]dnl
148)