Annotation of embedaddon/libiconv/srcm4/libunistring-base.m4, revision 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>