1 dnl /usr/share/aclocal/guidod-cvs/ax_spec_package_version.m4
2 dnl @synopsis AX_SPEC_PACKAGE_AND_VERSION ([specfile])
3 dnl @synopsis AX_SPEC_PACKAGE_NAME ([shellvar],[defaultvalue])
4 dnl @synopsis AX_SPEC_PACKAGE_VERSION ([shellvar],[defaultvalue])
5 dnl @synopsis AX_SPEC_PACKAGE_SUMMARY ([shellvar],[defaultvalue])
6 dnl @synopsis AX_SPEC_PACKAGE_LICENSE ([shellvar],[defaultvalue])
7 dnl @synopsis AX_SPEC_PACKAGE_CATEGORY ([shellvar],[defaultvalue])
8 dnl @synopsis AX_SPEC_PACKAGE_ICON ([shellvar],[defaultvalue])
9 dnl @synopsis AX_SPEC_DEFAULTS([specfile])
11 dnl set PACKAGE from the given specfile - default to basename of the
12 dnl rpmspecfile if no "name:" could be found in the spec file.
14 dnl set VERSION from the given specfile - default to a date-derived
15 dnl value if no "version:" could be found in the spec file.
17 dnl this macro builds on top of AX_SPEC_FILE / AX_SPEC_EXTRACT
19 dnl more specific: if not "name:" or "%define name" was found in the
20 dnl myproject.spec file then the PACKAGE var is set to the basename
21 dnl "myproject". When no spec file was present then it will usually
22 dnl default to "TODO".
24 dnl The version spec looks for "version:" or "%define version" in the
25 dnl spec file. When no such value was seen or no spec file had been
26 dnl present then the value is set to `date +0.%y.%W%w`.
28 dnl the version value itself is sanitized somewhat with making it to
29 dnl always carry atleast three digits (1.2.3) and clensing superflous
30 dnl "0" chars around from generating numbers elsewhere.
32 dnl additional macros are provided that extract a specific value from
33 dnl the spec file, among these:
35 dnl set PACKAGE_SUMMARY from the given specfile - default to package
36 dnl and try to detect a type suffix if "summary:" was not in the spec
39 dnl set PACKAGE_LICENSE from the given specfile - if no "license:" tag
40 dnl was given in the spec file then various COPYING files are grepped
41 dnl to have a guess and the final fallback will be GNU GPL (or GNU
44 dnl set PACKAGE_ICON from the given specfile - if no "icon:" tag was
45 dnl given in the spec file then we default to $PACKAGE-icon.png
47 dnl the final AX_SPEC_INIT(specfile) will initialize all variables to
48 dnl its defaults according to the spec file given.
51 dnl @author Guido U. Draheim <guidod@gmx.de>
52 dnl @version 2005-01-21
53 dnl @license GPLWithACException
55 AC_DEFUN([AX_SPEC_PACKAGE_LICENSE],[AC_REQUIRE([AX_SPEC_FILE])dnl
56 AS_VAR_PUSHDEF([VAR],[PACKAGE_LICENSE])dnl
57 AC_MSG_CHECKING([for spec license type])
58 if test ".$VAR" = "." ; then if test ! -f $ax_spec_file
61 AX_SPEC_EXTRACT(VAR,[license],m4_ifval($1,$1))
62 VAR=`echo $VAR | sed -e 's/ *License//g'`
64 test ".$VAR" = "." && k="(fallback)"
65 ifelse($2,,[dnl here the defaults for LICENSE / COPYRIGHT
66 if test ".$VAR" = "." ; then
67 for ac_file in "$srcdir/COPYING" "$srcdir/COPYING" "$srcdir/LICENSE" ; do
68 test -f "$ac_file" || continue
69 dnl http://www.ibiblio.org/osrt/omf/omf_elements "16. Rights"
70 if grep "GNU LESSER GENERAL PUBLIC LICENSE" "$ac_file" >/dev/null
71 then VAR="GNU LGPL" ; break
72 elif grep "GNU GENERAL PUBLIC LICENSE" "$ac_file" >/dev/null
73 then VAR="GNU GPL" ; break
74 elif grep "MOZILLA PUBLIC LICENSE" "$ac_file" >/dev/null
75 then VAR="MPL" ; break
76 elif grep "Mozilla Public License" "$ac_file" >/dev/null
77 then VAR="MPL" ; break
78 elif grep -i "artistic license" "$ac_file" >/dev/null
79 then VAR="Artistic" ; break
80 elif grep -i "artistic control" "$ac_file" >/dev/null
81 then VAR="Artistic" ; break
82 elif grep -i "semblance of artistic" "$ac_file" >/dev/null
83 then VAR="Artistic" ; break
84 elif grep -i "above copyright notice" "$ac_file" >/dev/null
85 then VAR="BSD" ; break
88 if test ".$VAR" = "." ; then
89 if test "$srcdir/COPYING.LIB" ; then VAR="GNU LGPL"
90 elif test ".$ltmain" != "." ; then VAR="GNU LGPL"
95 ],[test ".$VAR" = "." && VAR="$2"])
96 test "$VAR" = "GPL" && VAR="GNU GPL"
97 test "$VAR" = "LGPL" && VAR="GNU LGPL"
98 AC_MSG_RESULT([m4_ifval([$1],[$1 = ])$VAR $k])
99 AS_VAR_POPDEF([VAR])dnl
102 AC_DEFUN([AX_SPEC_PACKAGE_SUMMARY],[AC_REQUIRE([AX_SPEC_FILE])dnl
103 AS_VAR_PUSHDEF([VAR],[PACKAGE_SUMMARY])dnl
104 AC_MSG_CHECKING([for spec summary])
105 if test ".$VAR" = "." ; then if test ! -f $ax_spec_file
108 AX_SPEC_EXTRACT(VAR,[summary],m4_ifval($1,$1))
110 test ".$VAR" = "." && k="(fallback)"
111 ifelse($2,,[dnl here the defaults for SUMMARY
112 if test ".$VAR" = "." ; then VAR="$PACKAGE"
113 test ".$VAR" = "." && VAR="foo"
114 test ".$ltmain" != "." && VAR="$VAR library"
116 ],[test ".$VAR" = "." && VAR="$2"])
117 AC_MSG_RESULT([m4_ifval([$1],[$1 = ])$VAR $k])
118 AS_VAR_POPDEF([VAR])dnl
121 AC_DEFUN([AX_SPEC_PACKAGE_ICON],[AC_REQUIRE([AX_SPEC_FILE])dnl
122 AS_VAR_PUSHDEF([VAR],[PACKAGE_ICON])dnl
123 AC_MSG_CHECKING([for spec icon])
124 if test ".$VAR" = "." ; then if test ! -f $ax_spec_file
127 AX_SPEC_EXTRACT(VAR,[icon],m4_ifval($1,$1))
129 test ".$VAR" = "." && k="(fallback)"
130 ifelse($2,,[dnl here the defaults for ICON
131 if test ".$VAR" = "." ; then VAR="$PACKAGE-icon.png" ; fi
132 ],[test ".$VAR" = "." && VAR="$2"])
133 AC_MSG_RESULT([m4_ifval([$1],[$1 = ])$VAR $k])
134 AS_VAR_POPDEF([VAR])dnl
137 AC_DEFUN([AX_SPEC_PACKAGE_CATEGORY],[AC_REQUIRE([AX_SPEC_FILE])dnl
138 AS_VAR_PUSHDEF([VAR],[PACKAGE_CATEGORY])dnl
139 AC_MSG_CHECKING([for spec category])
140 if test ".$VAR" = "." ; then if test ! -f $ax_spec_file
143 AX_SPEC_EXTRACT(VAR,[group],m4_ifval($1,$1))
144 VAR=`echo $VAR | sed -e 's/ /-/g'`
146 test ".$VAR" = "." && k="(fallback)"
147 ifelse($2,,[dnl here the defaults for CATEGORY
148 if test ".$VAR" = "." ; then if test ".$ltmain" != "."
149 then VAR="Development/Library"
150 else VAR="Development/Other"
152 ],[test ".$VAR" = "." && VAR="$2"])
153 AC_MSG_RESULT([m4_ifval([$1],[$1 = ])$VAR $k])
154 AS_VAR_POPDEF([VAR])dnl
157 AC_DEFUN([AX_SPEC_PACKAGE_NAME],[AC_REQUIRE([AX_SPEC_FILE])dnl
158 AS_VAR_PUSHDEF([VAR],[PACKAGE_NAME])dnl
159 AC_MSG_CHECKING([for spec package])
160 if test ".$VAR" = "." ; then if test ! -f $ax_spec_file
163 AX_SPEC_EXTRACT(VAR,[name],m4_ifval($1,$1))
164 VAR=`echo $VAR | sed -e 's/ /-/g'`
166 test ".$VAR" = "." && k="(fallback)"
167 ifelse($2,,[dnl here the defaults for PACKAGE
168 test ".$VAR" = "." && VAR=`basename $ax_spec_file .spec`
169 test ".$VAR" = ".README" && VAR="TODO"
170 test ".$VAR" = ".TODO" && VAR="foo"
171 ],[test ".$VAR" = "." && VAR="$2"])
172 test "VAR" = "PACKAGE_NAME" && test ".$PACKAGE" = "." && PACKAGE="$VAR"
173 AC_MSG_RESULT([m4_ifval([$1],[$1 = ])$VAR $k])
174 AS_VAR_POPDEF([VAR])dnl
177 AC_DEFUN([AX_SPEC_PACKAGE_VERSION_],[AC_REQUIRE([AX_SPEC_FILE])dnl
178 AS_VAR_PUSHDEF([VAR],[PACKAGE_VERSION])dnl
179 AC_MSG_CHECKING([for spec version])
180 if test ".$VAR" = "." ; then if test ! -f $ax_spec_file
183 AX_SPEC_EXTRACT(VAR,[version],m4_ifval($1,$1))
184 VAR=`echo $VAR | sed -e 's/ /-/g'`
186 test ".$VAR" = "." && k="(fallback)"
187 ifelse($2,,[dnl here the defaults for VERSION
188 test ".$VAR" = "." && VAR=`date +0.%y.%W%w`
189 ],[test ".$VAR" = "." && VAR="$2"])
190 test "VAR" = "PACKAGE_VERSION" && test ".$VERSION" = "." && VERSION="$VAR"
191 case "$VAR" in # note we set traditional VERSION before cleaning things up
192 *.*.) VAR="$VAR"`date +%W%w` ;;
194 *.) VAR="$VAR"`date +%y.%W%w` ;;
196 *) VAR=AS_TR_SH([$VAR]) ; VAR="$VAR.`date +%y.%W%w`" ;;
198 VAR=`echo $VAR | sed -e "s/[[.]][0]\\([0-9]\\)/.\\1/g"`
199 AC_MSG_RESULT([m4_ifval([$1],[$1 = ])$VAR $k])
200 AS_VAR_POPDEF([VAR])dnl
203 dnl for compatibility, we define ax_spec_package_version
204 dnl to do all of ax_spec_package_name as well.
205 AC_DEFUN([AX_SPEC_PACKAGE_VERSION],[AC_REQUIRE([AX_SPEC_FILE])dnl
207 AC_MSG_WARN([please use ax_spec_package_AND_version now!]),
208 AC_MSG_ERROR([please use ax_spec_package_AND_version now!]))
210 AX_SPEC_PACKAGE_VERSION_
214 AC_DEFUN([AX_SPEC_PACKAGE_AND_VERSION],[
215 m4_ifset([m4_ax_spec_file],,[AX_SPEC_FILE($1)])
217 AX_SPEC_PACKAGE_VERSION_
220 AC_DEFUN([AX_SPEC_DEFAULTS],[
221 m4_ifset([m4_ax_spec_file],,[AX_SPEC_FILE($1)])
223 AX_SPEC_PACKAGE_VERSION_
224 AX_SPEC_PACKAGE_LICENSE
225 AX_SPEC_PACKAGE_SUMMARY
226 AX_SPEC_PACKAGE_CATEGORY