1 |
dnl AC_DEFINE_VERSION(library, header, cfile, version, prefix) |
2 |
AC_DEFUN([AC_DEFINE_VERSION], |
3 |
[# create files to designate the version |
4 |
dnl get upper- and lower-case versions of string `LIBRARY' |
5 |
m4_pushdef([UP], m4_translit([$1], [a-z], [A-Z]))dnl |
6 |
m4_pushdef([DOWN], m4_translit([$1], [A-Z], [a-z]))dnl |
7 |
m4_pushdef([UPREFIX], m4_if([$5], , UP, m4_translit([$5], [a-z], [A-Z])))dnl |
8 |
m4_pushdef([LPREFIX], m4_if([$5], , DOWN, m4_translit([$5], [A-Z], [a-z])))dnl |
9 |
m4_pushdef([HEADER], m4_if([$2], , $1[]_version.h, [$2]))dnl |
10 |
m4_pushdef([CFILE], m4_if([$3], , $1[]_version.c, [$3]))dnl |
11 |
|
12 |
UPREFIX[]_VERSION_HEADER=HEADER |
13 |
UPREFIX[]_VERSION_CFILE=CFILE |
14 |
lib_version=[]m4_if([$4], , "$UP[]_VERSION", [$4]) |
15 |
|
16 |
UPREFIX[]_MAJOR_VERSION=`echo "$lib_version" | \ |
17 |
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` |
18 |
UPREFIX[]_MINOR_VERSION=`echo "$lib_version" | \ |
19 |
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` |
20 |
UPREFIX[]_MICRO_VERSION=`echo "$lib_version" | \ |
21 |
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` |
22 |
|
23 |
AC_MSG_NOTICE([configuring $1 version: $UPREFIX[]_MAJOR_VERSION.$UPREFIX[]_MINOR_VERSION.$UPREFIX[]_MICRO_VERSION]) |
24 |
|
25 |
AC_CONFIG_COMMANDS(HEADER, |
26 |
AC_MSG_NOTICE([creating HEADER]) |
27 |
rm -f HEADER |
28 |
echo "/* HEADER library version header" >> HEADER |
29 |
echo ' * generated by ac_define_version.m4' >> HEADER |
30 |
echo ' */' >> HEADER |
31 |
echo '@%:@ifndef included_[]LPREFIX[]_version_h__' >> HEADER |
32 |
echo '@%:@define included_[]LPREFIX[]_version_h__' >> HEADER |
33 |
echo '' >> HEADER |
34 |
echo "@%:@define UPREFIX[]_MAJOR_VERSION ($UPREFIX[]_MAJOR_VERSION)" >> HEADER |
35 |
echo "@%:@define UPREFIX[]_MINOR_VERSION ($UPREFIX[]_MINOR_VERSION)" >> HEADER |
36 |
echo "@%:@define UPREFIX[]_MICRO_VERSION ($UPREFIX[]_MICRO_VERSION)" >> HEADER |
37 |
echo '' >> HEADER |
38 |
echo 'extern const unsigned int LPREFIX[]_major_version;' >> HEADER |
39 |
echo 'extern const unsigned int LPREFIX[]_minor_version;' >> HEADER |
40 |
echo 'extern const unsigned int LPREFIX[]_micro_version;' >> HEADER |
41 |
echo '' >> HEADER |
42 |
echo '@%:@endif /* included_[]LPREFIX[]_version_h__ */' >> HEADER, |
43 |
UPREFIX[]_MAJOR_VERSION=$UPREFIX[]_MAJOR_VERSION |
44 |
UPREFIX[]_MINOR_VERSION=$UPREFIX[]_MINOR_VERSION |
45 |
UPREFIX[]_MICRO_VERSION=$UPREFIX[]_MICRO_VERSION) |
46 |
|
47 |
AC_CONFIG_COMMANDS(CFILE, |
48 |
AC_MSG_NOTICE([creating CFILE]) |
49 |
rm -f CFILE |
50 |
echo "/* CFILE library C file" >> CFILE |
51 |
echo ' * generated by ac_define_version.m4' >> CFILE |
52 |
echo ' */' >> CFILE |
53 |
echo '' >> CFILE |
54 |
echo "const unsigned int LPREFIX[]_major_version = $UPREFIX[]_MAJOR_VERSION;" >> CFILE |
55 |
echo "const unsigned int LPREFIX[]_minor_version = $UPREFIX[]_MINOR_VERSION;" >> CFILE |
56 |
echo "const unsigned int LPREFIX[]_micro_version = $UPREFIX[]_MICRO_VERSION;" >> CFILE) |
57 |
|
58 |
AC_SUBST(UPREFIX[]_MAJOR_VERSION) |
59 |
AC_SUBST(UPREFIX[]_MINOR_VERSION) |
60 |
AC_SUBST(UPREFIX[]_MICRO_VERSION) |
61 |
AC_SUBST_FILE(UPREFIX[]_VERSION_HEADER) |
62 |
AC_SUBST_FILE(UPREFIX[]_VERSION_CFILE) |
63 |
|
64 |
dnl Pop the macros we defined earlier |
65 |
m4_popdef([UP])dnl |
66 |
m4_popdef([DOWN])dnl |
67 |
m4_popdef([UPREFIX])dnl |
68 |
m4_popdef([LPREFIX])dnl |
69 |
m4_popdef([HEADER])dnl |
70 |
m4_popdef([CFILE])dnl |
71 |
])# AC_DEFINE_VERSION |