Blame gettext-runtime/gnulib-m4/libunistring-base.m4

Packit 5b56b6
# libunistring-base.m4 serial 5
Packit 5b56b6
dnl Copyright (C) 2010-2015 Free Software Foundation, Inc.
Packit 5b56b6
dnl This file is free software; the Free Software Foundation
Packit 5b56b6
dnl gives unlimited permission to copy and/or distribute it,
Packit 5b56b6
dnl with or without modifications, as long as this notice is preserved.
Packit 5b56b6
Packit 5b56b6
dnl From Paolo Bonzini and Bruno Haible.
Packit 5b56b6
Packit 5b56b6
dnl gl_LIBUNISTRING_MODULE([VERSION], [Module])
Packit 5b56b6
dnl Declares that the source files of Module should be compiled, unless we
Packit 5b56b6
dnl are linking with libunistring and its version is >= the given VERSION.
Packit 5b56b6
dnl Defines an automake conditional LIBUNISTRING_COMPILE_$MODULE that is
Packit 5b56b6
dnl true if the source files of Module should be compiled.
Packit 5b56b6
dnl This macro is to be used for public libunistring API, not for
Packit 5b56b6
dnl undocumented API.
Packit 5b56b6
dnl
Packit 5b56b6
dnl You have to bump the VERSION argument to the next projected version
Packit 5b56b6
dnl number each time you make a change that affects the behaviour of the
Packit 5b56b6
dnl functions defined in Module (even if the sources of Module itself do not
Packit 5b56b6
dnl change).
Packit 5b56b6
Packit 5b56b6
AC_DEFUN([gl_LIBUNISTRING_MODULE],
Packit 5b56b6
[
Packit 5b56b6
  AC_REQUIRE([gl_LIBUNISTRING_LIB_PREPARE])
Packit 5b56b6
  dnl Use the variables HAVE_LIBUNISTRING, LIBUNISTRING_VERSION from
Packit 5b56b6
  dnl gl_LIBUNISTRING_CORE if that macro has been run.
Packit 5b56b6
  AM_CONDITIONAL(AS_TR_CPP([LIBUNISTRING_COMPILE_$2]),
Packit 5b56b6
    [gl_LIBUNISTRING_VERSION_CMP([$1])])
Packit 5b56b6
])
Packit 5b56b6
Packit 5b56b6
dnl gl_LIBUNISTRING_LIBHEADER([VERSION], [HeaderFile])
Packit 5b56b6
dnl Declares that HeaderFile should be created, unless we are linking
Packit 5b56b6
dnl with libunistring and its version is >= the given VERSION.
Packit 5b56b6
dnl HeaderFile should be relative to the lib directory and end in '.h'.
Packit 5b56b6
dnl Prepares for substituting LIBUNISTRING_HEADERFILE (to HeaderFile or empty).
Packit 5b56b6
dnl
Packit 5b56b6
dnl When we are linking with the already installed libunistring and its version
Packit 5b56b6
dnl is < VERSION, we create HeaderFile here, because we may compile functions
Packit 5b56b6
dnl (via gl_LIBUNISTRING_MODULE above) that are not contained in the installed
Packit 5b56b6
dnl version.
Packit 5b56b6
dnl When we are linking with the already installed libunistring and its version
Packit 5b56b6
dnl is > VERSION, we don't create HeaderFile here: it could cause compilation
Packit 5b56b6
dnl errors in other libunistring header files if some types are missing.
Packit 5b56b6
dnl
Packit 5b56b6
dnl You have to bump the VERSION argument to the next projected version
Packit 5b56b6
dnl number each time you make a non-comment change to the HeaderFile.
Packit 5b56b6
Packit 5b56b6
AC_DEFUN([gl_LIBUNISTRING_LIBHEADER],
Packit 5b56b6
[
Packit 5b56b6
  AC_REQUIRE([gl_LIBUNISTRING_LIB_PREPARE])
Packit 5b56b6
  dnl Use the variables HAVE_LIBUNISTRING, LIBUNISTRING_VERSION from
Packit 5b56b6
  dnl gl_LIBUNISTRING_CORE if that macro has been run.
Packit 5b56b6
  if gl_LIBUNISTRING_VERSION_CMP([$1]); then
Packit 5b56b6
    LIBUNISTRING_[]AS_TR_CPP([$2])='$2'
Packit 5b56b6
  else
Packit 5b56b6
    LIBUNISTRING_[]AS_TR_CPP([$2])=
Packit 5b56b6
  fi
Packit 5b56b6
  AC_SUBST([LIBUNISTRING_]AS_TR_CPP([$2]))
Packit 5b56b6
])
Packit 5b56b6
Packit 5b56b6
dnl Miscellaneous preparations/initializations.
Packit 5b56b6
Packit 5b56b6
AC_DEFUN([gl_LIBUNISTRING_LIB_PREPARE],
Packit 5b56b6
[
Packit 5b56b6
  dnl Ensure that HAVE_LIBUNISTRING is fully determined at this point.
Packit 5b56b6
  m4_ifdef([gl_LIBUNISTRING], [AC_REQUIRE([gl_LIBUNISTRING])])
Packit 5b56b6
Packit 5b56b6
  AC_REQUIRE([AC_PROG_AWK])
Packit 5b56b6
Packit 5b56b6
dnl Sed expressions to extract the parts of a version number.
Packit 5b56b6
changequote(,)
Packit 5b56b6
gl_libunistring_sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
Packit 5b56b6
i\
Packit 5b56b6
0
Packit 5b56b6
q
Packit 5b56b6
'
Packit 5b56b6
gl_libunistring_sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
Packit 5b56b6
i\
Packit 5b56b6
0
Packit 5b56b6
q
Packit 5b56b6
'
Packit 5b56b6
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;}
Packit 5b56b6
i\
Packit 5b56b6
0
Packit 5b56b6
q
Packit 5b56b6
'
Packit 5b56b6
changequote([,])
Packit 5b56b6
Packit 5b56b6
  if test "$HAVE_LIBUNISTRING" = yes; then
Packit 5b56b6
    LIBUNISTRING_VERSION_MAJOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_major"`
Packit 5b56b6
    LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"`
Packit 5b56b6
    LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"`
Packit 5b56b6
  fi
Packit 5b56b6
])
Packit 5b56b6
Packit 5b56b6
dnl gl_LIBUNISTRING_VERSION_CMP([VERSION])
Packit 5b56b6
dnl Expands to a shell statement that evaluates to true if LIBUNISTRING_VERSION
Packit 5b56b6
dnl is less than the VERSION argument.
Packit 5b56b6
AC_DEFUN([gl_LIBUNISTRING_VERSION_CMP],
Packit 5b56b6
[ { test "$HAVE_LIBUNISTRING" != yes \
Packit 5b56b6
    || {
Packit 5b56b6
         dnl AS_LITERAL_IF exists and works fine since autoconf-2.59 at least.
Packit 5b56b6
         AS_LITERAL_IF([$1],
Packit 5b56b6
           [dnl This is the optimized variant, that assumes the argument is a literal:
Packit 5b56b6
            m4_pushdef([requested_version_major],
Packit 5b56b6
              [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^\([0-9]*\).*], [\1]), [])])
Packit 5b56b6
            m4_pushdef([requested_version_minor],
Packit 5b56b6
              [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^[0-9]*[.]\([0-9]*\).*], [\1]), [$1])])
Packit 5b56b6
            m4_pushdef([requested_version_subminor],
Packit 5b56b6
              [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^[0-9]*[.][0-9]*[.]\([0-9]*\).*], [\1]), [$1])])
Packit 5b56b6
            test $LIBUNISTRING_VERSION_MAJOR -lt requested_version_major \
Packit 5b56b6
            || { test $LIBUNISTRING_VERSION_MAJOR -eq requested_version_major \
Packit 5b56b6
                 && { test $LIBUNISTRING_VERSION_MINOR -lt requested_version_minor \
Packit 5b56b6
                      || { test $LIBUNISTRING_VERSION_MINOR -eq requested_version_minor \
Packit 5b56b6
                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt requested_version_subminor
Packit 5b56b6
                         }
Packit 5b56b6
                    }
Packit 5b56b6
               }
Packit 5b56b6
            m4_popdef([requested_version_subminor])
Packit 5b56b6
            m4_popdef([requested_version_minor])
Packit 5b56b6
            m4_popdef([requested_version_major])
Packit 5b56b6
           ],
Packit 5b56b6
           [dnl This is the unoptimized variant:
Packit 5b56b6
            requested_version_major=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_major"`
Packit 5b56b6
            requested_version_minor=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_minor"`
Packit 5b56b6
            requested_version_subminor=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_subminor"`
Packit 5b56b6
            test $LIBUNISTRING_VERSION_MAJOR -lt $requested_version_major \
Packit 5b56b6
            || { test $LIBUNISTRING_VERSION_MAJOR -eq $requested_version_major \
Packit 5b56b6
                 && { test $LIBUNISTRING_VERSION_MINOR -lt $requested_version_minor \
Packit 5b56b6
                      || { test $LIBUNISTRING_VERSION_MINOR -eq $requested_version_minor \
Packit 5b56b6
                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt $requested_version_subminor
Packit 5b56b6
                         }
Packit 5b56b6
                    }
Packit 5b56b6
               }
Packit 5b56b6
           ])
Packit 5b56b6
       }
Packit 5b56b6
  }])
Packit 5b56b6
Packit 5b56b6
dnl gl_LIBUNISTRING_ARG_OR_ZERO([ARG], [ORIG]) expands to ARG if it is not the
Packit 5b56b6
dnl same as ORIG, otherwise to 0.
Packit 5b56b6
m4_define([gl_LIBUNISTRING_ARG_OR_ZERO], [m4_if([$1], [$2], [0], [$1])])