Blame lib/unistring/m4/libunistring-base.m4

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