Annotation of embedaddon/libiconv/srcm4/libunistring-base.m4, revision 1.1.1.1

1.1       misho       1: # libunistring-base.m4 serial 5
                      2: dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
                      3: dnl This file is free software; the Free Software Foundation
                      4: dnl gives unlimited permission to copy and/or distribute it,
                      5: dnl with or without modifications, as long as this notice is preserved.
                      6: 
                      7: dnl From Paolo Bonzini and Bruno Haible.
                      8: 
                      9: dnl gl_LIBUNISTRING_MODULE([VERSION], [Module])
                     10: dnl Declares that the source files of Module should be compiled, unless we
                     11: dnl are linking with libunistring and its version is >= the given VERSION.
                     12: dnl Defines an automake conditional LIBUNISTRING_COMPILE_$MODULE that is
                     13: dnl true if the source files of Module should be compiled.
                     14: dnl This macro is to be used for public libunistring API, not for
                     15: dnl undocumented API.
                     16: dnl
                     17: dnl You have to bump the VERSION argument to the next projected version
                     18: dnl number each time you make a change that affects the behaviour of the
                     19: dnl functions defined in Module (even if the sources of Module itself do not
                     20: dnl change).
                     21: 
                     22: AC_DEFUN([gl_LIBUNISTRING_MODULE],
                     23: [
                     24:   AC_REQUIRE([gl_LIBUNISTRING_LIB_PREPARE])
                     25:   dnl Use the variables HAVE_LIBUNISTRING, LIBUNISTRING_VERSION from
                     26:   dnl gl_LIBUNISTRING_CORE if that macro has been run.
                     27:   AM_CONDITIONAL(AS_TR_CPP([LIBUNISTRING_COMPILE_$2]),
                     28:     [gl_LIBUNISTRING_VERSION_CMP([$1])])
                     29: ])
                     30: 
                     31: dnl gl_LIBUNISTRING_LIBHEADER([VERSION], [HeaderFile])
                     32: dnl Declares that HeaderFile should be created, unless we are linking
                     33: dnl with libunistring and its version is >= the given VERSION.
                     34: dnl HeaderFile should be relative to the lib directory and end in '.h'.
                     35: dnl Prepares for substituting LIBUNISTRING_HEADERFILE (to HeaderFile or empty).
                     36: dnl
                     37: dnl When we are linking with the already installed libunistring and its version
                     38: dnl is < VERSION, we create HeaderFile here, because we may compile functions
                     39: dnl (via gl_LIBUNISTRING_MODULE above) that are not contained in the installed
                     40: dnl version.
                     41: dnl When we are linking with the already installed libunistring and its version
                     42: dnl is > VERSION, we don't create HeaderFile here: it could cause compilation
                     43: dnl errors in other libunistring header files if some types are missing.
                     44: dnl
                     45: dnl You have to bump the VERSION argument to the next projected version
                     46: dnl number each time you make a non-comment change to the HeaderFile.
                     47: 
                     48: AC_DEFUN([gl_LIBUNISTRING_LIBHEADER],
                     49: [
                     50:   AC_REQUIRE([gl_LIBUNISTRING_LIB_PREPARE])
                     51:   dnl Use the variables HAVE_LIBUNISTRING, LIBUNISTRING_VERSION from
                     52:   dnl gl_LIBUNISTRING_CORE if that macro has been run.
                     53:   if gl_LIBUNISTRING_VERSION_CMP([$1]); then
                     54:     LIBUNISTRING_[]AS_TR_CPP([$2])='$2'
                     55:   else
                     56:     LIBUNISTRING_[]AS_TR_CPP([$2])=
                     57:   fi
                     58:   AC_SUBST([LIBUNISTRING_]AS_TR_CPP([$2]))
                     59: ])
                     60: 
                     61: dnl Miscellaneous preparations/initializations.
                     62: 
                     63: AC_DEFUN([gl_LIBUNISTRING_LIB_PREPARE],
                     64: [
                     65:   dnl Ensure that HAVE_LIBUNISTRING is fully determined at this point.
                     66:   m4_ifdef([gl_LIBUNISTRING], [AC_REQUIRE([gl_LIBUNISTRING])])
                     67: 
                     68:   AC_REQUIRE([AC_PROG_AWK])
                     69: 
                     70: dnl Sed expressions to extract the parts of a version number.
                     71: changequote(,)
                     72: gl_libunistring_sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
                     73: i\
                     74: 0
                     75: q
                     76: '
                     77: gl_libunistring_sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
                     78: i\
                     79: 0
                     80: q
                     81: '
                     82: gl_libunistring_sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q;}
                     83: i\
                     84: 0
                     85: q
                     86: '
                     87: changequote([,])
                     88: 
                     89:   if test "$HAVE_LIBUNISTRING" = yes; then
                     90:     LIBUNISTRING_VERSION_MAJOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_major"`
                     91:     LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"`
                     92:     LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"`
                     93:   fi
                     94: ])
                     95: 
                     96: dnl gl_LIBUNISTRING_VERSION_CMP([VERSION])
                     97: dnl Expands to a shell statement that evaluates to true if LIBUNISTRING_VERSION
                     98: dnl is less than the VERSION argument.
                     99: AC_DEFUN([gl_LIBUNISTRING_VERSION_CMP],
                    100: [ { test "$HAVE_LIBUNISTRING" != yes \
                    101:     || {
                    102:          dnl AS_LITERAL_IF exists and works fine since autoconf-2.59 at least.
                    103:          AS_LITERAL_IF([$1],
                    104:            [dnl This is the optimized variant, that assumes the argument is a literal:
                    105:             m4_pushdef([requested_version_major],
                    106:               [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^\([0-9]*\).*], [\1]), [])])
                    107:             m4_pushdef([requested_version_minor],
                    108:               [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^[0-9]*[.]\([0-9]*\).*], [\1]), [$1])])
                    109:             m4_pushdef([requested_version_subminor],
                    110:               [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^[0-9]*[.][0-9]*[.]\([0-9]*\).*], [\1]), [$1])])
                    111:             test $LIBUNISTRING_VERSION_MAJOR -lt requested_version_major \
                    112:             || { test $LIBUNISTRING_VERSION_MAJOR -eq requested_version_major \
                    113:                  && { test $LIBUNISTRING_VERSION_MINOR -lt requested_version_minor \
                    114:                       || { test $LIBUNISTRING_VERSION_MINOR -eq requested_version_minor \
                    115:                            && test $LIBUNISTRING_VERSION_SUBMINOR -lt requested_version_subminor
                    116:                          }
                    117:                     }
                    118:                }
                    119:             m4_popdef([requested_version_subminor])
                    120:             m4_popdef([requested_version_minor])
                    121:             m4_popdef([requested_version_major])
                    122:            ],
                    123:            [dnl This is the unoptimized variant:
                    124:             requested_version_major=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_major"`
                    125:             requested_version_minor=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_minor"`
                    126:             requested_version_subminor=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_subminor"`
                    127:             test $LIBUNISTRING_VERSION_MAJOR -lt $requested_version_major \
                    128:             || { test $LIBUNISTRING_VERSION_MAJOR -eq $requested_version_major \
                    129:                  && { test $LIBUNISTRING_VERSION_MINOR -lt $requested_version_minor \
                    130:                       || { test $LIBUNISTRING_VERSION_MINOR -eq $requested_version_minor \
                    131:                            && test $LIBUNISTRING_VERSION_SUBMINOR -lt $requested_version_subminor
                    132:                          }
                    133:                     }
                    134:                }
                    135:            ])
                    136:        }
                    137:   }])
                    138: 
                    139: dnl gl_LIBUNISTRING_ARG_OR_ZERO([ARG], [ORIG]) expands to ARG if it is not the
                    140: dnl same as ORIG, otherwise to 0.
                    141: m4_define([gl_LIBUNISTRING_ARG_OR_ZERO], [m4_if([$1], [$2], [0], [$1])])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>