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