]>
Commit | Line | Data |
---|---|---|
d17eeafb BB |
1 | dnl # |
2 | dnl # DESCRIPTION: | |
3 | dnl # Read meta data from the META file. When building from a git repository | |
4 | dnl # the ZFS_META_RELEASE field will be overwritten if there is an annotated | |
5 | dnl # tag matching the form ZFS_META_NAME-ZFS_META_VERSION-*. This allows | |
6 | dnl # for working builds to be uniquely identified using the git commit hash. | |
7 | dnl # | |
8 | dnl # The META file format is as follows: | |
9 | dnl # ^[ ]*KEY:[ \t]+VALUE$ | |
10 | dnl # | |
11 | dnl # In other words: | |
12 | dnl # - KEY is separated from VALUE by a colon and one or more spaces/tabs. | |
13 | dnl # - KEY and VALUE are case sensitive. | |
14 | dnl # - Leading spaces are ignored. | |
15 | dnl # - First match wins for duplicate keys. | |
16 | dnl # | |
17 | dnl # A line can be commented out by preceding it with a '#' (or technically | |
18 | dnl # any non-space character since that will prevent the regex from | |
19 | dnl # matching). | |
20 | dnl # | |
21 | dnl # WARNING: | |
22 | dnl # Placing a colon followed by a space or tab (ie, ":[ \t]+") within the | |
23 | dnl # VALUE will prematurely terminate the string since that sequence is | |
24 | dnl # used as the awk field separator. | |
25 | dnl # | |
26 | dnl # KEYS: | |
27 | dnl # The following META keys are recognized: | |
28 | dnl # Name, Version, Release, Date, Author, LT_Current, LT_Revision, LT_Age | |
29 | dnl # | |
30 | dnl # Written by Chris Dunlap <cdunlap@llnl.gov>. | |
31 | dnl # Modified by Brian Behlendorf <behlendorf1@llnl.gov>. | |
32 | dnl # | |
c9c0d073 BB |
33 | AC_DEFUN([ZFS_AC_META], [ |
34 | ||
35 | AH_BOTTOM([ | |
36 | #undef PACKAGE | |
37 | #undef PACKAGE_BUGREPORT | |
38 | #undef PACKAGE_NAME | |
39 | #undef PACKAGE_STRING | |
40 | #undef PACKAGE_TARNAME | |
41 | #undef PACKAGE_VERSION | |
42 | #undef STDC_HEADERS | |
43 | #undef VERSION]) | |
44 | ||
d17eeafb | 45 | AC_PROG_AWK |
c9c0d073 BB |
46 | AC_MSG_CHECKING([metadata]) |
47 | ||
48 | META="$srcdir/META" | |
f6fb7651 | 49 | _zfs_ac_meta_type="none" |
c9c0d073 | 50 | if test -f "$META"; then |
f6fb7651 | 51 | _zfs_ac_meta_type="META file" |
c9c0d073 | 52 | |
d17eeafb | 53 | ZFS_META_NAME=_ZFS_AC_META_GETVAL([(Name|Project|Package)]); |
c9c0d073 BB |
54 | if test -n "$ZFS_META_NAME"; then |
55 | AC_DEFINE_UNQUOTED([ZFS_META_NAME], ["$ZFS_META_NAME"], | |
56 | [Define the project name.] | |
57 | ) | |
58 | AC_SUBST([ZFS_META_NAME]) | |
59 | fi | |
60 | ||
d17eeafb | 61 | ZFS_META_VERSION=_ZFS_AC_META_GETVAL([Version]); |
c9c0d073 | 62 | if test -n "$ZFS_META_VERSION"; then |
93ce2b4c BB |
63 | AC_DEFINE_UNQUOTED([ZFS_META_VERSION], |
64 | ["$ZFS_META_VERSION"], | |
65 | [Define the project version.]) | |
66 | AC_DEFINE_UNQUOTED([SPL_META_VERSION], | |
67 | [ZFS_META_VERSION], | |
68 | [Defined for legacy compatibility.]) | |
c9c0d073 BB |
69 | AC_SUBST([ZFS_META_VERSION]) |
70 | fi | |
71 | ||
d17eeafb | 72 | ZFS_META_RELEASE=_ZFS_AC_META_GETVAL([Release]); |
d012ba38 | 73 | if test ! -f ".nogitrelease" && git rev-parse --git-dir > /dev/null 2>&1; then |
79aada61 | 74 | _match="${ZFS_META_NAME}-${ZFS_META_VERSION}" |
f6fb7651 | 75 | _alias=$(git describe --match=${_match} 2>/dev/null) |
420b4448 | 76 | _release=$(echo ${_alias}|sed "s/${ZFS_META_NAME}//"|cut -f3- -d'-'|tr - _) |
f6fb7651 BB |
77 | if test -n "${_release}"; then |
78 | ZFS_META_RELEASE=${_release} | |
79 | _zfs_ac_meta_type="git describe" | |
66e93f5e BB |
80 | else |
81 | _match="${ZFS_META_NAME}-${ZFS_META_VERSION}-${ZFS_META_RELEASE}" | |
82 | _alias=$(git describe --match=${_match} 2>/dev/null) | |
420b4448 | 83 | _release=$(echo ${_alias}|sed 's/${ZFS_META_NAME}//'|cut -f3- -d'-'|tr - _) |
66e93f5e BB |
84 | if test -n "${_release}"; then |
85 | ZFS_META_RELEASE=${_release} | |
86 | _zfs_ac_meta_type="git describe" | |
87 | fi | |
f6fb7651 BB |
88 | fi |
89 | fi | |
90 | ||
c9c0d073 | 91 | if test -n "$ZFS_META_RELEASE"; then |
93ce2b4c BB |
92 | AC_DEFINE_UNQUOTED([ZFS_META_RELEASE], |
93 | ["$ZFS_META_RELEASE"], | |
94 | [Define the project release.]) | |
95 | AC_DEFINE_UNQUOTED([SPL_META_RELEASE], | |
96 | [ZFS_META_RELEASE], | |
97 | [Defined for legacy compatibility.]) | |
c9c0d073 | 98 | AC_SUBST([ZFS_META_RELEASE]) |
f3757573 BB |
99 | |
100 | RELEASE="$ZFS_META_RELEASE" | |
101 | AC_SUBST([RELEASE]) | |
c9c0d073 BB |
102 | fi |
103 | ||
d17eeafb | 104 | ZFS_META_LICENSE=_ZFS_AC_META_GETVAL([License]); |
c9c0d073 BB |
105 | if test -n "$ZFS_META_LICENSE"; then |
106 | AC_DEFINE_UNQUOTED([ZFS_META_LICENSE], ["$ZFS_META_LICENSE"], | |
107 | [Define the project license.] | |
108 | ) | |
109 | AC_SUBST([ZFS_META_LICENSE]) | |
110 | fi | |
111 | ||
112 | if test -n "$ZFS_META_NAME" -a -n "$ZFS_META_VERSION"; then | |
113 | ZFS_META_ALIAS="$ZFS_META_NAME-$ZFS_META_VERSION" | |
114 | test -n "$ZFS_META_RELEASE" && | |
115 | ZFS_META_ALIAS="$ZFS_META_ALIAS-$ZFS_META_RELEASE" | |
116 | AC_DEFINE_UNQUOTED([ZFS_META_ALIAS], | |
93ce2b4c BB |
117 | ["$ZFS_META_ALIAS"], |
118 | [Define the project alias string.]) | |
119 | AC_DEFINE_UNQUOTED([SPL_META_ALIAS], | |
120 | [ZFS_META_ALIAS], | |
121 | [Defined for legacy compatibility.]) | |
c9c0d073 BB |
122 | AC_SUBST([ZFS_META_ALIAS]) |
123 | fi | |
124 | ||
d17eeafb | 125 | ZFS_META_DATA=_ZFS_AC_META_GETVAL([Date]); |
c9c0d073 BB |
126 | if test -n "$ZFS_META_DATA"; then |
127 | AC_DEFINE_UNQUOTED([ZFS_META_DATA], ["$ZFS_META_DATA"], | |
128 | [Define the project release date.] | |
129 | ) | |
130 | AC_SUBST([ZFS_META_DATA]) | |
131 | fi | |
132 | ||
d17eeafb | 133 | ZFS_META_AUTHOR=_ZFS_AC_META_GETVAL([Author]); |
c9c0d073 BB |
134 | if test -n "$ZFS_META_AUTHOR"; then |
135 | AC_DEFINE_UNQUOTED([ZFS_META_AUTHOR], ["$ZFS_META_AUTHOR"], | |
136 | [Define the project author.] | |
137 | ) | |
138 | AC_SUBST([ZFS_META_AUTHOR]) | |
139 | fi | |
140 | ||
608f8749 BB |
141 | ZFS_META_KVER_MIN=_ZFS_AC_META_GETVAL([Linux-Minimum]); |
142 | if test -n "$ZFS_META_KVER_MIN"; then | |
143 | AC_DEFINE_UNQUOTED([ZFS_META_KVER_MIN], | |
144 | ["$ZFS_META_KVER_MIN"], | |
145 | [Define the minimum compatible kernel version.] | |
146 | ) | |
147 | AC_SUBST([ZFS_META_KVER_MIN]) | |
148 | fi | |
149 | ||
150 | ZFS_META_KVER_MAX=_ZFS_AC_META_GETVAL([Linux-Maximum]); | |
151 | if test -n "$ZFS_META_KVER_MAX"; then | |
152 | AC_DEFINE_UNQUOTED([ZFS_META_KVER_MAX], | |
153 | ["$ZFS_META_KVER_MAX"], | |
154 | [Define the maximum compatible kernel version.] | |
155 | ) | |
156 | AC_SUBST([ZFS_META_KVER_MAX]) | |
157 | fi | |
158 | ||
c9c0d073 | 159 | m4_pattern_allow([^LT_(CURRENT|REVISION|AGE)$]) |
d17eeafb BB |
160 | ZFS_META_LT_CURRENT=_ZFS_AC_META_GETVAL([LT_Current]); |
161 | ZFS_META_LT_REVISION=_ZFS_AC_META_GETVAL([LT_Revision]); | |
162 | ZFS_META_LT_AGE=_ZFS_AC_META_GETVAL([LT_Age]); | |
c9c0d073 BB |
163 | if test -n "$ZFS_META_LT_CURRENT" \ |
164 | -o -n "$ZFS_META_LT_REVISION" \ | |
165 | -o -n "$ZFS_META_LT_AGE"; then | |
166 | test -n "$ZFS_META_LT_CURRENT" || ZFS_META_LT_CURRENT="0" | |
167 | test -n "$ZFS_META_LT_REVISION" || ZFS_META_LT_REVISION="0" | |
168 | test -n "$ZFS_META_LT_AGE" || ZFS_META_LT_AGE="0" | |
169 | AC_DEFINE_UNQUOTED([ZFS_META_LT_CURRENT], | |
170 | ["$ZFS_META_LT_CURRENT"], | |
171 | [Define the libtool library 'current' | |
172 | version information.] | |
173 | ) | |
174 | AC_DEFINE_UNQUOTED([ZFS_META_LT_REVISION], | |
175 | ["$ZFS_META_LT_REVISION"], | |
176 | [Define the libtool library 'revision' | |
177 | version information.] | |
178 | ) | |
179 | AC_DEFINE_UNQUOTED([ZFS_META_LT_AGE], ["$ZFS_META_LT_AGE"], | |
180 | [Define the libtool library 'age' | |
181 | version information.] | |
182 | ) | |
183 | AC_SUBST([ZFS_META_LT_CURRENT]) | |
184 | AC_SUBST([ZFS_META_LT_REVISION]) | |
185 | AC_SUBST([ZFS_META_LT_AGE]) | |
186 | fi | |
187 | fi | |
188 | ||
f6fb7651 | 189 | AC_MSG_RESULT([$_zfs_ac_meta_type]) |
c9c0d073 BB |
190 | ] |
191 | ) | |
192 | ||
d17eeafb BB |
193 | dnl # _ZFS_AC_META_GETVAL (KEY_NAME_OR_REGEX) |
194 | dnl # | |
195 | dnl # Returns the META VALUE associated with the given KEY_NAME_OR_REGEX expr. | |
196 | dnl # | |
197 | dnl # Despite their resemblance to line noise, | |
198 | dnl # the "@<:@" and "@:>@" constructs are quadrigraphs for "[" and "]". | |
199 | dnl # <www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs> | |
200 | dnl # | |
201 | dnl # The "$[]1" and "$[]2" constructs prevent M4 parameter expansion | |
202 | dnl # so a literal $1 and $2 will be passed to the resulting awk script, | |
203 | dnl # whereas the "$1" will undergo M4 parameter expansion for the META key. | |
204 | dnl # | |
205 | AC_DEFUN([_ZFS_AC_META_GETVAL], | |
206 | [`$AWK -F ':@<:@ \t@:>@+' '$[]1 ~ /^ *$1$/ { print $[]2; exit }' $META`]dnl | |
c9c0d073 | 207 | ) |