123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- # libunistring.m4 serial 11
- dnl Copyright (C) 2009-2014 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
- dnl with or without modifications, as long as this notice is preserved.
- dnl gl_LIBUNISTRING
- dnl Searches for an installed libunistring.
- dnl If found, it sets and AC_SUBSTs HAVE_LIBUNISTRING=yes and the LIBUNISTRING
- dnl and LTLIBUNISTRING variables, sets the LIBUNISTRING_VERSION variable, and
- dnl augments the CPPFLAGS variable, and #defines HAVE_LIBUNISTRING to 1.
- dnl Otherwise, it sets and AC_SUBSTs HAVE_LIBUNISTRING=no and LIBUNISTRING and
- dnl LTLIBUNISTRING to empty.
- dnl Define gl_LIBUNISTRING using AC_DEFUN_ONCE for Autoconf >= 2.64, in order
- dnl to avoid warnings like
- dnl "warning: AC_REQUIRE: `gl_LIBUNISTRING' was expanded before it was required".
- dnl This is tricky because of the way 'aclocal' is implemented:
- dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
- dnl Otherwise aclocal's initial scan pass would miss the macro definition.
- dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
- dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
- dnl warnings.
- m4_define([gl_libunistring_AC_DEFUN],
- m4_version_prereq([2.64],
- [[AC_DEFUN_ONCE(
- [$1], [$2])]],
- [m4_ifdef([gl_00GNULIB],
- [[AC_DEFUN_ONCE(
- [$1], [$2])]],
- [[AC_DEFUN(
- [$1], [$2])]])]))
- gl_libunistring_AC_DEFUN([gl_LIBUNISTRING],
- [
- AC_BEFORE([$0], [gl_LIBUNISTRING_MODULE])
- AC_BEFORE([$0], [gl_LIBUNISTRING_LIBHEADER])
- AC_BEFORE([$0], [gl_LIBUNISTRING_LIB_PREPARE])
- m4_ifdef([gl_LIBUNISTRING_OPTIONAL],
- [
- AC_MSG_CHECKING([whether included libunistring is requested])
- AC_ARG_WITH([included-libunistring],
- [ --with-included-libunistring use the libunistring parts included here],
- [gl_libunistring_force_included=$withval],
- [gl_libunistring_force_included=no])
- AC_MSG_RESULT([$gl_libunistring_force_included])
- gl_libunistring_use_included="$gl_libunistring_force_included"
- if test "$gl_libunistring_use_included" = yes; then
- dnl Assume that libunistring is not installed until some other macro
- dnl explicitly invokes gl_LIBUNISTRING_CORE.
- if test -z "$HAVE_LIBUNISTRING"; then
- HAVE_LIBUNISTRING=no
- fi
- LIBUNISTRING=
- LTLIBUNISTRING=
- else
- gl_LIBUNISTRING_CORE
- if test $HAVE_LIBUNISTRING = no; then
- gl_libunistring_use_included=yes
- LIBUNISTRING=
- LTLIBUNISTRING=
- fi
- fi
- ],
- [gl_LIBUNISTRING_CORE])
- ])
- AC_DEFUN([gl_LIBUNISTRING_CORE],
- [
- AC_REQUIRE([AM_ICONV])
- if test -n "$LIBICONV"; then
- dnl First, try to link without -liconv. libunistring often depends on
- dnl libiconv, but we don't know (and often don't need to know) where
- dnl libiconv is installed.
- AC_LIB_HAVE_LINKFLAGS([unistring], [],
- [#include <uniconv.h>], [u8_strconv_from_locale((char*)0);],
- [no, trying again together with libiconv])
- if test "$ac_cv_libunistring" != yes; then
- dnl Second try, with -liconv.
- dnl We have to erase the cached result of the first AC_LIB_HAVE_LINKFLAGS
- dnl invocation, otherwise the second one will not be run.
- unset ac_cv_libunistring
- glus_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- AC_LIB_HAVE_LINKFLAGS([unistring], [],
- [#include <uniconv.h>], [u8_strconv_from_locale((char*)0);],
- [no, consider installing GNU libunistring])
- if test -n "$LIBUNISTRING"; then
- LIBUNISTRING="$LIBUNISTRING $LIBICONV"
- LTLIBUNISTRING="$LTLIBUNISTRING $LTLIBICONV"
- fi
- LIBS="$glus_save_LIBS"
- fi
- else
- AC_LIB_HAVE_LINKFLAGS([unistring], [],
- [#include <uniconv.h>], [u8_strconv_from_locale((char*)0);],
- [no, consider installing GNU libunistring])
- fi
- if test $HAVE_LIBUNISTRING = yes; then
- dnl Determine the installed version.
- AC_CACHE_CHECK([for libunistring version], [gl_cv_libunistring_version],
- [AC_COMPUTE_INT([gl_libunistring_hexversion],
- [_LIBUNISTRING_VERSION],
- [#include <unistring/version.h>])
- dnl Versions <= 0.9.3 had a hexversion of 0x0009.
- dnl Use other tests to distinguish them.
- if test $gl_libunistring_hexversion = 9; then
- dnl Version 0.9.2 introduced the header <unistring/cdefs.h>.
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[#include <unistring/cdefs.h>]], [[]])],
- [gl_cv_libunistring_version092=true],
- [gl_cv_libunistring_version092=false])
- if $gl_cv_libunistring_version092; then
- dnl Version 0.9.3 changed a comment in <unistr.h>.
- gl_ABSOLUTE_HEADER_ONE([unistr.h])
- if test -n "$gl_cv_absolute_unistr_h" \
- && grep 'Copy no more than N units of SRC to DEST. Return a pointer' $gl_cv_absolute_unistr_h > /dev/null; then
- dnl Detected version 0.9.3.
- gl_libunistring_hexversion=2307
- else
- dnl Detected version 0.9.2.
- gl_libunistring_hexversion=2306
- fi
- else
- dnl Version 0.9.1 introduced the type casing_suffix_context_t.
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <unicase.h>
- casing_suffix_context_t ct;]],
- [[]])],
- [gl_cv_libunistring_version091=true],
- [gl_cv_libunistring_version091=false])
- if $gl_cv_libunistring_version091; then
- dnl Detected version 0.9.1.
- gl_libunistring_hexversion=2305
- else
- dnl Detected version 0.9.
- gl_libunistring_hexversion=2304
- fi
- fi
- fi
- dnl Transform into the usual major.minor.subminor notation.
- gl_libunistring_major=`expr $gl_libunistring_hexversion / 65536`
- gl_libunistring_minor=`expr $gl_libunistring_hexversion / 256 % 256`
- gl_libunistring_subminor=`expr $gl_libunistring_hexversion % 256`
- gl_cv_libunistring_version="$gl_libunistring_major.$gl_libunistring_minor.$gl_libunistring_subminor"
- ])
- LIBUNISTRING_VERSION="$gl_cv_libunistring_version"
- fi
- ])
|