File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srcm4 / libunistring-base.m4
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 13:38:46 2021 UTC (3 years, 9 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_16p0, HEAD
libiconv 1.16

    1: # libunistring-base.m4 serial 5
    2: dnl Copyright (C) 2010-2019 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>