1AC_PREREQ([2.62])
2AC_INIT([XMLStarlet], [m4_esyscmd_s([git describe --tags --dirty])],
3        [http://sourceforge.net/projects/xmlstar/support],
4        [],
5        [http://xmlstar.sourceforge.net/])
6AC_REVISION(AC_PACKAGE_VERSION)
7
8AM_INIT_AUTOMAKE([1.11 foreign -Wall subdir-objects no-define std-options parallel-tests color-tests])
9AM_SILENT_RULES([yes])
10AM_MAINTAINER_MODE
11
12[LIBXML_REQUIRED_VERSION=2.6.27]
13[LIBXSLT_REQUIRED_VERSION=1.1.9]
14
15XSTAR_LIB_ARGS_WITH([LIBXML], [with-src])
16XSTAR_LIB_ARGS_WITH([LIBXSLT], [with-src])
17XSTAR_LIB_ARGS_WITH([LIBICONV])
18
19AC_ARG_ENABLE([static-libs],
20        [AS_HELP_STRING([--enable-static-libs],
21                [link statically with libxml2 and lib(e)xslt @<:@default=no@:>@])],
22        [STATIC_LIBS=$enableval],
23        [STATIC_LIBS=no])
24
25AS_IF([test -r doc/xmlstarlet.1], [LACK_DOCS=no], [LACK_DOCS=yes])
26
27AC_ARG_ENABLE([build_docs],
28        [AS_HELP_STRING([--enable-build-docs],
29                [include rules to build documentation files])],
30        [], [enable_build_docs=$LACK_DOCS])
31
32dnl
33dnl Check the environment
34dnl
35
36AC_DEFINE([_XOPEN_SOURCE], [500], [needed to get lstat declaration in -ansi mode])
37
38AC_CANONICAL_HOST
39AC_PROG_CC
40AM_CONDITIONAL([GCC], [test x$GCC = xyes])
41AS_IF([test x$GCC = xyes], [CFLAGS="-ansi $CFLAGS"])
42AM_PROG_CC_C_O
43AC_ARG_PROGRAM          dnl Transforming Program Names When Installing
44AC_PROG_SED
45AC_PROG_AWK
46
47XSTAR_LIB_CHECK([LIBXML], [xml2-config])
48
49AS_IF([test "x$LIBXML_SRCDIR" != x],
50      [LIBXML_INCDIR="$LIBXML_SRCDIR/include"])
51[: ${LIBXML_INCDIR="$LIBXML_PREFIX/include/libxml2"}]
52
53AS_IF([test "x$STATIC_LIBS" != xno],
54      [LIBXML_CPPFLAGS="-I$LIBXML_INCDIR -DLIBXML_STATIC"],
55      [LIBXML_CPPFLAGS="-I$LIBXML_INCDIR"])
56
57AS_IF([test "x$STATIC_LIBS" != xno],
58      [LIBXML_LIBS="$LIBXML_LIBDIR/libxml2.a"],
59      [LIBXML_LIBS="-lxml2"])
60[LIBXML_LDFLAGS="-L$LIBXML_LIBDIR"]
61
62
63XSTAR_LIB_CHECK([LIBXSLT], [xslt-config])
64
65AS_IF([test "x$LIBXSLT_SRCDIR" != x],
66      [XSLTPROC_PATH="$LIBXSLT_SRCDIR/xsltproc:$PATH"
67       LIBXSLT_INCDIR="$LIBXSLT_SRCDIR"
68       LIBXSLT_LDFLAGS="-L$LIBXSLT_SRCDIR/libexslt/.libs -L$LIBXSLT_SRCDIR/libxslt/.libs"
69       AS_IF([test "x$STATIC_LIBS" != xno],
70             [LIBXSLT_LIBS="$LIBXSLT_SRCDIR/libexslt/.libs/libexslt.a $LIBXSLT_SRCDIR/libxslt/.libs/libxslt.a"])],
71      [XSLTPROC_PATH="$PATH"
72       LIBXSLT_LDFLAGS="-L$LIBXSLT_LIBDIR"
73      AS_IF([test "x$STATIC_LIBS" != xno],
74             [LIBXSLT_LIBS="$LIBXSLT_LIBDIR/libexslt.a $LIBXSLT_LIBDIR/libxslt.a"])])
75
76AS_IF([test x"$enable_build_docs" = xyes],
77      [AC_PATH_PROG(XSLTPROC, xsltproc, [none], [$XSLTPROC_PATH])
78       AS_IF([test "$XSLTPROC" = none], [AC_MSG_ERROR([xsltproc not found, unable to build documentation])])
79
80       AC_PATH_PROG(FOP, fop, [none])
81       AM_CONDITIONAL([HAVE_FOP], [test x"$FOP" != xnone])
82
83       AC_PATH_PROG(PDF2PS, pdf2ps, [none])
84       AM_CONDITIONAL([HAVE_PDF2PS], [test x"$PDF2PS" != xnone])],
85
86       [# these don't get used when BUILD_DOCS is false but Automake
87        # will get cranky if we don't set the conditional
88        AM_CONDITIONAL([HAVE_FOP], [false])
89        AM_CONDITIONAL([HAVE_PDF2PS], [false])])
90
91AM_CONDITIONAL([BUILD_DOCS], [test x"$enable_build_docs" = xyes])
92
93
94AS_IF([test "x$STATIC_LIBS" = xno],
95      [LIBXSLT_LIBS="-lexslt -lxslt"])
96
97[: ${LIBXSLT_INCDIR="$LIBXSLT_PREFIX/include"}]
98[LIBXSLT_CPPFLAGS="-I$LIBXSLT_INCDIR"]
99
100
101[WIN32_EXTRA_LDFLAGS=]
102[WIN32_EXTRA_LIBS=]
103
104AS_CASE(["${host}"],
105  [*-hpux*],
106      [AS_IF([test "x$GCC" != "xyes"],
107             [CFLAGS="-Ae"])],
108  [*mingw*],
109      [WIN32_EXTRA_LIBS='-lwsock32'
110       AC_DEFINE([_WINSOCKAPI_],1,[Using the Win32 Socket implementation])])
111
112AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
113AC_FUNC_MALLOC
114AC_FUNC_REALLOC
115AC_TYPE_MODE_T
116AC_TYPE_SIZE_T
117
118# The trick with USER_LIBS allows make LIBS=-lfoo to add rather than
119# replace the libraries from ./configure
120[USER_LIBS="$LIBS"]
121[LIBS=]
122# shared libraries link to dependant libraries automatically
123AS_IF([test "x$STATIC_LIBS" != xno],
124   [AC_SEARCH_LIBS([dlopen], [dl], [], [], "$USER_LIBS")
125    AC_SEARCH_LIBS([sqrt], [m], [], [], "$USER_LIBS")
126    AC_SEARCH_LIBS([iconv_open], [iconv], [],
127    [AC_SEARCH_LIBS([libiconv_open], [iconv], [], [], "$USER_LIBS")], "$USER_LIBS")
128    AC_SEARCH_LIBS([clock_gettime], [rt], [], [], "$USER_LIBS")
129    AC_SEARCH_LIBS([deflate], [z], [], [], "$USER_LIBS")
130    AC_SEARCH_LIBS([gcry_cipher_encrypt], [gcrypt], [], [], "$USER_LIBS")
131
132    # Checks for inet libraries:
133    AC_SEARCH_LIBS([gethostent], [nsl], [], [], "$USER_LIBS")
134    AC_SEARCH_LIBS([setsockopt], [socket net network], [], [], "$USER_LIBS")
135    AC_SEARCH_LIBS([connect], [inet], [], [], "$USER_LIBS")])
136
137AC_CHECK_FUNCS_ONCE([lstat stat])
138
139AC_CHECK_DECL([O_BINARY], [AC_DEFINE([HAVE_DECL_O_BINARY],1,[have O_BINARY])],
140[AC_DEFINE([HAVE_DECL_O_BINARY],0,[don't have O_BINARY])], [[
141#include <io.h>
142#include <fcntl.h>
143]])
144AC_CHECK_FUNCS_ONCE([setmode])
145
146# check for exslt*XpathCtxtRegister() functions
147[OLD_CPPFLAGS="$CPPFLAGS"
148 CPPFLAGS="$LIBXSLT_CPPFLAGS $LIBXML_CPPFLAGS $CPPFLAGS"]
149AC_CHECK_DECL([exsltDateXpathCtxtRegister],
150        [AC_DEFINE([HAVE_EXSLT_XPATH_REGISTER],1,[have exslt*XpathCtxtRegister()])
151        HAVE_EXSLT_XPATH_REGISTER=1],
152        [AC_DEFINE([HAVE_EXSLT_XPATH_REGISTER],0,[have exslt*XpathCtxtRegister()])
153        HAVE_EXSLT_XPATH_REGISTER=0],
154        [#include <libexslt/exslt.h>])
155
156AM_CONDITIONAL([HAVE_EXSLT_XPATH_REGISTER], [test $HAVE_EXSLT_XPATH_REGISTER = 1])
157[CPPFLAGS="$OLD_CPPFLAGS"]
158
159# put warnings about missing docs at the end, so there is a better
160# chance of seeing them.
161AS_IF([test x$LACK_DOCS = xyes],
162      [AS_IF([test "$FOP" = none],
163        [AC_MSG_WARN([fop not installed, unable to build pdf documentation])])
164       AS_IF([test "$PDF2PS" = none],
165        [AC_MSG_WARN([pdf2ps not installed, unable to build postscript documentation])])])
166
167# make flags
168AC_SUBST([AM_CPPFLAGS], ["$LIBXSLT_CPPFLAGS $LIBXML_CPPFLAGS"])
169AC_SUBST([AM_LDFLAGS], ["$LIBXSLT_LDFLAGS $LIBXML_LDFLAGS"])
170AC_SUBST([LDADD], ["$LIBXSLT_LIBS $LIBXML_LIBS $WIN32_EXTRA_LIBS $LIBS"])
171AC_SUBST([LIBS], ["$USER_LIBS"])
172AC_SUBST([LIBXML_REQUIRED_VERSION])
173AC_SUBST([LIBXSLT_REQUIRED_VERSION])
174
175AC_SUBST([SED])
176
177np_SILENT_RULE([FOP])
178np_SILENT_RULE([DOCBOOK], [DBOOK])
179
180AC_SUBST(PACKAGE_NAME)
181AC_SUBST(PACKAGE_TARNAME)
182AC_SUBST(PACKAGE_VERSION)
183
184dnl for the spec file
185
186AC_CONFIG_HEADERS([config.h])
187AC_CONFIG_FILES([
188xmlstarlet.spec
189Makefile
190solaris/package/sol8-sparc/pkginfo
191solaris/package/sol9-sparc/pkginfo
192])
193AC_OUTPUT
194
195