Blame gettext-tools/gnulib-m4/libxml.m4

Packit 5b56b6
# libxml.m4 serial 6 (gettext-0.18.2)
Packit 5b56b6
dnl Copyright (C) 2006, 2008, 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 Bruno Haible.
Packit 5b56b6
Packit 5b56b6
AC_DEFUN([gl_LIBXML],
Packit 5b56b6
[
Packit 5b56b6
  AC_REQUIRE([AM_ICONV_LINK])
Packit 5b56b6
Packit 5b56b6
  AC_MSG_CHECKING([whether included libxml is requested])
Packit 5b56b6
  AC_ARG_WITH([included-libxml],
Packit 5b56b6
    [  --with-included-libxml  use the libxml2 included here],
Packit 5b56b6
    [gl_cv_libxml_force_included=$withval],
Packit 5b56b6
    [gl_cv_libxml_force_included=no])
Packit 5b56b6
  AC_MSG_RESULT([$gl_cv_libxml_force_included])
Packit 5b56b6
Packit 5b56b6
  gl_cv_libxml_use_included="$gl_cv_libxml_force_included"
Packit 5b56b6
  LIBXML=
Packit 5b56b6
  LTLIBXML=
Packit 5b56b6
  INCXML=
Packit 5b56b6
  if test "$gl_cv_libxml_use_included" != yes; then
Packit 5b56b6
    dnl Figure out whether we can use a preinstalled libxml2, or have to use
Packit 5b56b6
    dnl the included one.
Packit 5b56b6
    AC_CACHE_VAL([gl_cv_libxml], [
Packit 5b56b6
      gl_cv_libxml=no
Packit 5b56b6
      gl_cv_LIBXML=
Packit 5b56b6
      gl_cv_LTLIBXML=
Packit 5b56b6
      gl_cv_INCXML=
Packit 5b56b6
      gl_save_LIBS="$LIBS"
Packit 5b56b6
      LIBS="$LIBS $LIBICONV"
Packit 5b56b6
      dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
Packit 5b56b6
      dnl accordingly.
Packit 5b56b6
      dnl Don't use xml2-config nor pkg-config, since it doesn't work when
Packit 5b56b6
      dnl cross-compiling or when the C compiler in use is different from the
Packit 5b56b6
      dnl one that built the library.
Packit 5b56b6
      dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
Packit 5b56b6
      dnl libxml2 is built in such a way that uses of xmlFree work fine with
Packit 5b56b6
      dnl -Wl,--enable-auto-import but lead to a link error with
Packit 5b56b6
      dnl -Wl,--disable-auto-import.
Packit 5b56b6
      AC_LIB_LINKFLAGS_BODY([xml2])
Packit 5b56b6
      LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
Packit 5b56b6
      AC_TRY_LINK([#include <libxml/xmlversion.h>
Packit 5b56b6
                   #include <libxml/xmlmemory.h>
Packit 5b56b6
                  ],
Packit 5b56b6
        [xmlCheckVersion (0); xmlFree ((void *) 0);],
Packit 5b56b6
        [gl_cv_libxml=yes
Packit 5b56b6
         gl_cv_LIBXML="$LIBXML2 $LIBICONV"
Packit 5b56b6
         gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
Packit 5b56b6
        ])
Packit 5b56b6
      if test "$gl_cv_libxml" != yes; then
Packit 5b56b6
        gl_save_CPPFLAGS="$CPPFLAGS"
Packit 5b56b6
        CPPFLAGS="$CPPFLAGS $INCXML2"
Packit 5b56b6
        AC_TRY_LINK([#include <libxml/xmlversion.h>
Packit 5b56b6
                     #include <libxml/xmlmemory.h>
Packit 5b56b6
                    ],
Packit 5b56b6
          [xmlCheckVersion (0); xmlFree ((void *) 0);],
Packit 5b56b6
          [gl_cv_libxml=yes
Packit 5b56b6
           gl_cv_LIBXML="$LIBXML2 $LIBICONV"
Packit 5b56b6
           gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
Packit 5b56b6
           gl_cv_INCXML="$INCXML2"
Packit 5b56b6
          ])
Packit 5b56b6
        if test "$gl_cv_libxml" != yes; then
Packit 5b56b6
          dnl Often the include files are installed in /usr/include/libxml2.
Packit 5b56b6
          dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
Packit 5b56b6
          dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
Packit 5b56b6
          dnl self-contained.
Packit 5b56b6
          libxml2_include_dir=
Packit 5b56b6
          AC_TRY_CPP([#include <libxml2/libxml/xmlexports.h>],
Packit 5b56b6
            [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
Packit 5b56b6
             libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
Packit 5b56b6
            ])
Packit 5b56b6
          if test -z "$libxml2_include_dir"; then
Packit 5b56b6
            AC_TRY_CPP([#include <libxml2/libxml/xmlversion.h>],
Packit 5b56b6
              [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
Packit 5b56b6
               libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
Packit 5b56b6
              ])
Packit 5b56b6
          fi
Packit 5b56b6
          if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
Packit 5b56b6
            CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
Packit 5b56b6
            AC_TRY_LINK([#include <libxml/xmlversion.h>
Packit 5b56b6
                         #include <libxml/xmlmemory.h>
Packit 5b56b6
                        ],
Packit 5b56b6
              [xmlCheckVersion (0); xmlFree ((void *) 0);],
Packit 5b56b6
              [gl_cv_libxml=yes
Packit 5b56b6
               gl_cv_LIBXML="$LIBXML2 $LIBICONV"
Packit 5b56b6
               gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
Packit 5b56b6
               gl_cv_INCXML="-I$libxml2_include_dir"
Packit 5b56b6
              ])
Packit 5b56b6
          fi
Packit 5b56b6
        fi
Packit 5b56b6
        CPPFLAGS="$gl_save_CPPFLAGS"
Packit 5b56b6
      fi
Packit 5b56b6
      LIBS="$gl_save_LIBS"
Packit 5b56b6
    ])
Packit 5b56b6
    AC_MSG_CHECKING([for libxml])
Packit 5b56b6
    AC_MSG_RESULT([$gl_cv_libxml])
Packit 5b56b6
    if test $gl_cv_libxml = yes; then
Packit 5b56b6
      LIBXML="$gl_cv_LIBXML"
Packit 5b56b6
      LTLIBXML="$gl_cv_LTLIBXML"
Packit 5b56b6
      INCXML="$gl_cv_INCXML"
Packit 5b56b6
    else
Packit 5b56b6
      gl_cv_libxml_use_included=yes
Packit 5b56b6
    fi
Packit 5b56b6
  fi
Packit 5b56b6
  AC_SUBST([LIBXML])
Packit 5b56b6
  AC_SUBST([LTLIBXML])
Packit 5b56b6
  AC_SUBST([INCXML])
Packit 5b56b6
  AC_MSG_CHECKING([whether to use the included libxml])
Packit 5b56b6
  AC_MSG_RESULT([$gl_cv_libxml_use_included])
Packit 5b56b6
Packit 5b56b6
  if test "$gl_cv_libxml_use_included" = yes; then
Packit 5b56b6
    LIBXML_H=
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/DOCBparser.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/HTMLparser.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/HTMLtree.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/SAX2.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/SAX.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/c14n.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/catalog.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/chvalid.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/debugXML.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/dict.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/encoding.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/entities.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/globals.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/hash.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/list.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/nanoftp.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/nanohttp.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/parser.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/parserInternals.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/pattern.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/relaxng.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/schemasInternals.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/schematron.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/threads.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/tree.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/uri.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/valid.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xinclude.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xlink.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlIO.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlautomata.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlerror.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlexports.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlmemory.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlmodule.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlreader.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlregexp.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlsave.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlschemas.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlschemastypes.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlstring.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlunicode.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlversion.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xmlwriter.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xpath.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xpathInternals.h"
Packit 5b56b6
    LIBXML_H="$LIBXML_H libxml/xpointer.h"
Packit 5b56b6
    AC_CHECK_HEADERS([arpa/inet.h ctype.h dlfcn.h dl.h errno.h \
Packit 5b56b6
                      fcntl.h float.h limits.h malloc.h math.h netdb.h \
Packit 5b56b6
                      netinet/in.h signal.h stdlib.h string.h \
Packit 5b56b6
                      strings.h sys/select.h sys/socket.h sys/stat.h \
Packit 5b56b6
                      sys/time.h sys/types.h time.h unistd.h])
Packit 5b56b6
    AC_CHECK_HEADERS([arpa/nameser.h], [], [], [
Packit 5b56b6
      #if HAVE_SYS_TYPES_H
Packit 5b56b6
      # include <sys/types.h>
Packit 5b56b6
      #endif
Packit 5b56b6
    ])
Packit 5b56b6
    AC_CHECK_HEADERS([resolv.h], [], [], [
Packit 5b56b6
      #if HAVE_SYS_TYPES_H
Packit 5b56b6
      # include <sys/types.h>
Packit 5b56b6
      #endif
Packit 5b56b6
      #if HAVE_NETINET_IN_H
Packit 5b56b6
      # include <netinet/in.h>
Packit 5b56b6
      #endif 
Packit 5b56b6
      #if HAVE_ARPA_NAMESER_H 
Packit 5b56b6
      # include <arpa/nameser.h>
Packit 5b56b6
      #endif
Packit 5b56b6
    ])
Packit 5b56b6
    AC_CHECK_FUNCS([dlopen getaddrinfo localtime shlload stat _stat strftime])
Packit 5b56b6
    dnl This relies on the va_copy replacement from the stdarg module.
Packit 5b56b6
    AC_DEFINE([VA_COPY], [va_copy],
Packit 5b56b6
      [Define to a working va_copy macro or replacement.])
Packit 5b56b6
    dnl Don't bother checking for pthread.h and other multithread facilities.
Packit 5b56b6
    dnl Don't bother checking for zlib.h and how to link with libz.
Packit 5b56b6
  else
Packit 5b56b6
    LIBXML_H=
Packit 5b56b6
  fi
Packit 5b56b6
  AC_SUBST([LIBXML_H])
Packit 5b56b6
Packit 5b56b6
  AM_CONDITIONAL([INCLUDED_LIBXML],
Packit 5b56b6
    [test "$gl_cv_libxml_use_included" = yes])
Packit 5b56b6
])