]>
Commit | Line | Data |
---|---|---|
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 |
12 | AC_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 | ||
137 | AC_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 | ) |