1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
|
# libxml.m4
# serial 10
dnl Copyright (C) 2006-2024 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 From Bruno Haible.
dnl gl_LIBXML
dnl gives the user the option to decide whether to use the included or
dnl an external libxml.
dnl gl_LIBXML(FORCE-INCLUDED)
dnl forces the use of the included or an external libxml.
AC_DEFUN([gl_LIBXML],
[
AC_REQUIRE([AM_ICONV_LINK])
ifelse([$1], , [
AC_MSG_CHECKING([whether included libxml is requested])
AC_ARG_WITH([included-libxml],
[ --with-included-libxml use the libxml2 included here],
[gl_cv_libxml_force_included=$withval],
[gl_cv_libxml_force_included=no])
AC_MSG_RESULT([$gl_cv_libxml_force_included])
], [gl_cv_libxml_force_included=$1])
gl_cv_libxml_use_included="$gl_cv_libxml_force_included"
LIBXML=
LTLIBXML=
INCXML=
ifelse([$1], [yes], , [
if test "$gl_cv_libxml_use_included" != yes; then
dnl Figure out whether we can use a preinstalled libxml2, or have to use
dnl the included one.
AC_CACHE_VAL([gl_cv_libxml], [
gl_cv_libxml=no
gl_cv_LIBXML=
gl_cv_LTLIBXML=
gl_cv_INCXML=
gl_save_LIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
dnl accordingly.
dnl Don't use xml2-config nor pkg-config, since it doesn't work when
dnl cross-compiling or when the C compiler in use is different from the
dnl one that built the library.
dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
dnl libxml2 is built in such a way that uses of xmlFree work fine with
dnl -Wl,--enable-auto-import but lead to a link error with
dnl -Wl,--disable-auto-import.
AC_LIB_LINKFLAGS_BODY([xml2])
LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <libxml/xmlversion.h>
#include <libxml/xmlmemory.h>
#include <libxml/xpath.h>
]],
[[xmlCheckVersion (0);
xmlFree ((void *) 0);
xmlXPathSetContextNode ((void *)0, (void *)0);
]])],
[gl_cv_libxml=yes
gl_cv_LIBXML="$LIBXML2 $LIBICONV"
gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
])
if test "$gl_cv_libxml" != yes; then
gl_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $INCXML2"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <libxml/xmlversion.h>
#include <libxml/xmlmemory.h>
#include <libxml/xpath.h>
]],
[[xmlCheckVersion (0);
xmlFree ((void *) 0);
xmlXPathSetContextNode ((void *)0, (void *)0);
]])],
[gl_cv_libxml=yes
gl_cv_LIBXML="$LIBXML2 $LIBICONV"
gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
gl_cv_INCXML="$INCXML2"
])
if test "$gl_cv_libxml" != yes; then
dnl Often the include files are installed in /usr/include/libxml2.
dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
dnl self-contained.
libxml2_include_dir=
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <libxml2/libxml/xmlexports.h>]])],
[gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
])
if test -z "$libxml2_include_dir"; then
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <libxml2/libxml/xmlversion.h>]])],
[gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
])
fi
if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <libxml/xmlversion.h>
#include <libxml/xmlmemory.h>
#include <libxml/xpath.h>
]],
[[xmlCheckVersion (0);
xmlFree ((void *) 0);
xmlXPathSetContextNode ((void *)0, (void *)0);
]])],
[gl_cv_libxml=yes
gl_cv_LIBXML="$LIBXML2 $LIBICONV"
gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
gl_cv_INCXML="-I$libxml2_include_dir"
])
fi
fi
CPPFLAGS="$gl_save_CPPFLAGS"
fi
LIBS="$gl_save_LIBS"
])
AC_MSG_CHECKING([for libxml])
AC_MSG_RESULT([$gl_cv_libxml])
if test $gl_cv_libxml = yes; then
LIBXML="$gl_cv_LIBXML"
LTLIBXML="$gl_cv_LTLIBXML"
INCXML="$gl_cv_INCXML"
else
gl_cv_libxml_use_included=yes
fi
fi
])
AC_SUBST([LIBXML])
AC_SUBST([LTLIBXML])
AC_SUBST([INCXML])
AC_MSG_CHECKING([whether to use the included libxml])
AC_MSG_RESULT([$gl_cv_libxml_use_included])
if test "$gl_cv_libxml_use_included" = yes; then
LIBXML_H=
LIBXML_H="$LIBXML_H libxml/DOCBparser.h"
LIBXML_H="$LIBXML_H libxml/HTMLparser.h"
LIBXML_H="$LIBXML_H libxml/HTMLtree.h"
LIBXML_H="$LIBXML_H libxml/SAX2.h"
LIBXML_H="$LIBXML_H libxml/SAX.h"
LIBXML_H="$LIBXML_H libxml/c14n.h"
LIBXML_H="$LIBXML_H libxml/catalog.h"
LIBXML_H="$LIBXML_H libxml/chvalid.h"
LIBXML_H="$LIBXML_H libxml/debugXML.h"
LIBXML_H="$LIBXML_H libxml/dict.h"
LIBXML_H="$LIBXML_H libxml/encoding.h"
LIBXML_H="$LIBXML_H libxml/entities.h"
LIBXML_H="$LIBXML_H libxml/globals.h"
LIBXML_H="$LIBXML_H libxml/hash.h"
LIBXML_H="$LIBXML_H libxml/list.h"
LIBXML_H="$LIBXML_H libxml/nanoftp.h"
LIBXML_H="$LIBXML_H libxml/nanohttp.h"
LIBXML_H="$LIBXML_H libxml/parser.h"
LIBXML_H="$LIBXML_H libxml/parserInternals.h"
LIBXML_H="$LIBXML_H libxml/pattern.h"
LIBXML_H="$LIBXML_H libxml/relaxng.h"
LIBXML_H="$LIBXML_H libxml/schemasInternals.h"
LIBXML_H="$LIBXML_H libxml/schematron.h"
LIBXML_H="$LIBXML_H libxml/threads.h"
LIBXML_H="$LIBXML_H libxml/tree.h"
LIBXML_H="$LIBXML_H libxml/uri.h"
LIBXML_H="$LIBXML_H libxml/valid.h"
LIBXML_H="$LIBXML_H libxml/xinclude.h"
LIBXML_H="$LIBXML_H libxml/xlink.h"
LIBXML_H="$LIBXML_H libxml/xmlIO.h"
LIBXML_H="$LIBXML_H libxml/xmlautomata.h"
LIBXML_H="$LIBXML_H libxml/xmlerror.h"
LIBXML_H="$LIBXML_H libxml/xmlexports.h"
LIBXML_H="$LIBXML_H libxml/xmlmemory.h"
LIBXML_H="$LIBXML_H libxml/xmlmodule.h"
LIBXML_H="$LIBXML_H libxml/xmlreader.h"
LIBXML_H="$LIBXML_H libxml/xmlregexp.h"
LIBXML_H="$LIBXML_H libxml/xmlsave.h"
LIBXML_H="$LIBXML_H libxml/xmlschemas.h"
LIBXML_H="$LIBXML_H libxml/xmlschemastypes.h"
LIBXML_H="$LIBXML_H libxml/xmlstring.h"
LIBXML_H="$LIBXML_H libxml/xmlunicode.h"
LIBXML_H="$LIBXML_H libxml/xmlversion.h"
LIBXML_H="$LIBXML_H libxml/xmlwriter.h"
LIBXML_H="$LIBXML_H libxml/xpath.h"
LIBXML_H="$LIBXML_H libxml/xpathInternals.h"
LIBXML_H="$LIBXML_H libxml/xpointer.h"
AC_CHECK_HEADERS([arpa/inet.h ctype.h dlfcn.h dl.h errno.h \
fcntl.h float.h limits.h malloc.h math.h netdb.h \
netinet/in.h signal.h stdlib.h string.h \
strings.h sys/select.h sys/socket.h sys/stat.h \
sys/time.h sys/types.h time.h unistd.h])
AC_CHECK_HEADERS([arpa/nameser.h], [], [], [
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
])
AC_CHECK_HEADERS([resolv.h], [], [], [
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#if HAVE_ARPA_NAMESER_H
# include <arpa/nameser.h>
#endif
])
AC_CHECK_FUNCS([getaddrinfo localtime stat strftime])
dnl This relies on the va_copy replacement from the stdarg module.
AC_DEFINE([VA_COPY], [va_copy],
[Define to a working va_copy macro or replacement.])
dnl Don't bother checking for pthread.h and other multithread facilities.
dnl Don't bother checking for zlib.h and how to link with libz.
else
LIBXML_H=
fi
AC_SUBST([LIBXML_H])
AM_CONDITIONAL([INCLUDED_LIBXML],
[test "$gl_cv_libxml_use_included" = yes])
])
|