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>