1 dnl Process this file with autoconf to produce a configuration script.
3 AC_INIT(libxslt/xslt.c)
4 AC_CONFIG_HEADERS(config.h)
6 AC_USE_SYSTEM_EXTENSIONS
9 dnl libxslt is the main part of the package
10 dnl libexslt is an extension
12 LIBXSLT_MAJOR_VERSION=1
13 LIBXSLT_MINOR_VERSION=1
14 LIBXSLT_MICRO_VERSION=28
16 LIBEXSLT_MAJOR_VERSION=0
17 LIBEXSLT_MINOR_VERSION=8
18 LIBEXSLT_MICRO_VERSION=17
19 LIBXML_REQUIRED_VERSION=2.6.27
22 LIBXSLT_VERSION=$LIBXSLT_MAJOR_VERSION.$LIBXSLT_MINOR_VERSION.$LIBXSLT_MICRO_VERSION
23 LIBXSLT_VERSION_INFO=`expr $LIBXSLT_MAJOR_VERSION + $LIBXSLT_MINOR_VERSION`:$LIBXSLT_MICRO_VERSION:$LIBXSLT_MINOR_VERSION
25 LIBXSLT_VERSION_NUMBER=`expr $LIBXSLT_MAJOR_VERSION \* 10000 + $LIBXSLT_MINOR_VERSION \* 100 + $LIBXSLT_MICRO_VERSION`
26 LIBXSLT_MAJOR_MINOR_VERSION=$LIBXSLT_MAJOR_VERSION.$LIBXSLT_MINOR_VERSION
28 if test -f CVS/Entries; then
29 extra=`grep ChangeLog CVS/Entries | grep -v LIBXSLT | sed -e s\%/ChangeLog/1\.%% -e s\%/.*$%%`
31 if test "$extra" != ""
33 LIBXSLT_VERSION_EXTRA="-CVS$extra"
35 else if test -d .svn ; then
36 extra=`svn info | grep Revision | sed 's+Revision: ++'`
38 if test "$extra" != ""
40 LIBXSLT_VERSION_EXTRA="-SVN$extra"
42 else if test -d .git ; then
43 extra=`git describe | sed 's+LIBXSLT[[0-9.]]*-++'`
45 if test "$extra" != ""
47 LIBXSLT_VERSION_EXTRA="-GIT$extra"
53 AC_SUBST(LIBXSLT_MAJOR_VERSION)
54 AC_SUBST(LIBXSLT_MINOR_VERSION)
55 AC_SUBST(LIBXSLT_MICRO_VERSION)
56 AC_SUBST(LIBXSLT_VERSION)
57 AC_SUBST(LIBXSLT_VERSION_INFO)
58 AC_SUBST(LIBXSLT_VERSION_NUMBER)
59 AC_SUBST(LIBXSLT_VERSION_EXTRA)
60 AC_SUBST(LIBXSLT_MAJOR_MINOR_VERSION)
63 dnl libexslt is an extension library
66 LIBEXSLT_VERSION=$LIBEXSLT_MAJOR_VERSION.$LIBEXSLT_MINOR_VERSION.$LIBEXSLT_MICRO_VERSION
67 LIBEXSLT_VERSION_INFO=`expr $LIBEXSLT_MAJOR_VERSION + $LIBEXSLT_MINOR_VERSION`:$LIBEXSLT_MICRO_VERSION:$LIBEXSLT_MINOR_VERSION
69 LIBEXSLT_VERSION_NUMBER=`expr $LIBEXSLT_MAJOR_VERSION \* 10000 + $LIBEXSLT_MINOR_VERSION \* 100 + $LIBEXSLT_MICRO_VERSION`
71 if test -f CVS/Entries; then
72 LIBEXSLT_VERSION_EXTRA=-CVS`grep ChangeLog CVS/Entries | sed -e s\%/ChangeLog/1\.%% -e s\%/.*$%%`
75 AC_SUBST(LIBEXSLT_MAJOR_VERSION)
76 AC_SUBST(LIBEXSLT_MINOR_VERSION)
77 AC_SUBST(LIBEXSLT_MICRO_VERSION)
78 AC_SUBST(LIBEXSLT_VERSION)
79 AC_SUBST(LIBEXSLT_VERSION_INFO)
80 AC_SUBST(LIBEXSLT_VERSION_NUMBER)
81 AC_SUBST(LIBEXSLT_VERSION_EXTRA)
83 VERSION=${LIBXSLT_VERSION}
85 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
89 # Support silent build rules, requires at least automake-1.11. Disable
90 # by either passing --disable-silent-rules to configure or passing V=1
92 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
95 dnl Specific dir for HTML output ?
98 AC_ARG_WITH(html-dir, AS_HELP_STRING([--with-html-dir=path],
99 [path to base html directory, default $datadir/doc/html]),
100 [HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc'])
102 AC_ARG_WITH(html-subdir, AS_HELP_STRING([--with-html-subdir=path],
103 [directory used under html-dir, default $PACKAGE-$VERSION/html]),
104 [test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"],
105 [HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"])
110 dnl Check the environment
116 AC_PATH_PROG(RM, rm, /bin/rm)
117 AC_PATH_PROG(MV, mv, /bin/mv)
118 AC_PATH_PROG(TAR, tar, /bin/tar)
119 AC_PATH_PROG(XMLLINT, xmllint, /usr/bin/xmllint)
120 AC_PATH_PROG(XSLTPROC, xsltproc, /usr/bin/xsltproc)
127 AC_CHECK_HEADERS(sys/types.h sys/time.h stdlib.h unistd.h string.h)
130 dnl if the system support linker version scripts for symbol versioning
133 AC_MSG_CHECKING([how to pass version script to the linker ($LD)])
134 VERSION_SCRIPT_FLAGS=none
135 if $LD --help 2>&1 | grep "version-script" >/dev/null 2>/dev/null; then
136 VERSION_SCRIPT_FLAGS=-Wl,--version-script=
137 elif $LD --help 2>&1 | grep "M mapfile" >/dev/null 2>/dev/null; then
138 VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
140 AC_MSG_RESULT([$VERSION_SCRIPT_FLAGS])
141 AC_SUBST(VERSION_SCRIPT_FLAGS)
142 AM_CONDITIONAL([USE_VERSION_SCRIPT], [test "$VERSION_SCRIPT_FLAGS" != none])
144 dnl Look for pthread.h, needed for testThreads
149 AC_CHECK_HEADER(pthread.h,
150 AC_CHECK_LIB(pthread, pthread_join,[
151 AC_DEFINE([HAVE_LIBPTHREAD], [], [Define if pthread library is there (-lpthread)])
152 AC_DEFINE([HAVE_PTHREAD_H], [], [Define if <pthread.h> is there])
153 THREAD_LIBS="-lpthread"]))
157 AC_SUBST(THREAD_LIBS)
160 dnl Detect supported locale
163 XSLT_LOCALE_XLOCALE=0
166 AC_CHECK_HEADERS([locale.h xlocale.h])
167 if test $ac_cv_header_xlocale_h = yes; then
169 dnl Check for generic locale_t declaration
171 AC_MSG_CHECKING([if xlocale program link])
172 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
176 #ifdef HAVE_XLOCALE_H
187 typedef __locale_t xsltLocale;
189 typedef locale_t xsltLocale;
191 #if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ <= 2
192 #define newlocale __newlocale
193 #define freelocale __freelocale
194 #define strxfrm_l __strxfrm_l
195 #define LC_COLLATE_MASK (1 << LC_COLLATE)
199 const char *src[[2]] = { "\xc3\x84rger", "Zeppelin" };
204 locale = newlocale(LC_COLLATE_MASK, "en_US.utf8", NULL);
205 if (locale == NULL) exit(1);
206 for (i=0; i<2; ++i) {
207 len = strxfrm_l(NULL, src[[i]], 0, locale) + 1;
208 dst[[i]] = malloc(len);
209 if(dst[[i]] == NULL) exit(1);
210 r = strxfrm_l(dst[[i]], src[[i]], len, locale);
211 if(r >= len) exit(1);
213 if (strcmp(dst[[0]], dst[[1]]) >= 0) exit(1);
218 [AC_MSG_RESULT(yes); XSLT_LOCALE_XLOCALE=1],
224 AC_MSG_NOTICE([using winapi locale])
225 XSLT_LOCALE_WINAPI=1;;
229 AC_SUBST(XSLT_LOCALE_XLOCALE)
230 AC_SUBST(XSLT_LOCALE_WINAPI)
236 AC_CHECK_HEADERS(ieeefp.h nan.h math.h fp_class.h float.h ansidecl.h)
237 AC_CHECK_HEADERS(sys/timeb.h time.h sys/stat.h sys/select.h stdarg.h)
238 AC_CHECK_FUNCS(stat _stat)
239 AC_CHECK_FUNC(pow, , AC_CHECK_LIB(m, pow,
240 [M_LIBS="-lm"; AC_DEFINE([HAVE_POW],[], [Define if pow is there])]))
242 AC_CHECK_FUNC(floor, , AC_CHECK_LIB(m, floor,
243 [M_LIBS="-lm"; AC_DEFINE([HAVE_FLOOR],[], [Define if floor is there])]))
245 AC_CHECK_FUNC(fabs, , AC_CHECK_LIB(m, fabs,
246 [M_LIBS="-lm"; AC_DEFINE([HAVE_FABS],[], [Define if fabs is there])]))
249 AC_CHECK_FUNCS(gettimeofday)
250 AC_CHECK_FUNCS(mktime localtime localtime_r asctime time gmtime gmtime_r ftime)
252 dnl Checking the standard string functions availability
253 AC_CHECK_FUNCS(printf sprintf fprintf snprintf vfprintf vsprintf vsnprintf sscanf,,
256 dnl Checking for POSIX timers
257 AC_CHECK_FUNCS(clock_gettime, [], [
258 AC_CHECK_LIB(rt, clock_gettime, [
259 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
260 EXTRA_LIBS="$EXTRA_LIBS -lrt"
265 dnl Check for trio string functions
268 if test "${NEED_TRIO}" = "1" ; then
269 echo Reusing trio library for string functions
277 dnl Some packages need to be checked against version numbers so we
278 dnl define a function here for later use
280 AC_DEFUN([VERSION_TO_NUMBER],
281 [`$1 | sed -e 's/libxml //' | awk 'BEGIN { FS = "."; } { printf "%d", ([$]1 * 1000 + [$]2) * 1000 + [$]3;}'`])
284 dnl Perl is just needed for generating some data for XSLtmark
287 AC_CHECK_PROG(PERL, perl, perl, false)
288 AM_CONDITIONAL(WITH_PERL, test "$PERL" != "false")
296 PYTHON_SITE_PACKAGES=
298 AC_ARG_WITH(python, [ --with-python[=DIR] Build Python bindings if found])
299 if test "$with_python" != "no" ; then
300 if test -x "$with_python/bin/python"
302 echo Found python in $with_python/bin/python
303 PYTHON="$with_python/bin/python"
305 if test -x "$with_python"
307 echo Found python in $with_python
308 PYTHON="$with_python"
312 echo Found python in environment PYTHON=$PYTHON
313 with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
315 AC_PATH_PROG(PYTHON, python python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
319 if test "$PYTHON" != ""
321 echo "PYTHON is pointing at $PYTHON"
322 PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
323 echo Found Python version $PYTHON_VERSION
324 LIBXML2_PYTHON=`$PYTHON -c "try : import libxml2 ; print 1
326 if test "$LIBXML2_PYTHON" = "1"
328 echo Found libxml2-python module
330 echo Warning: Missing libxml2-python
333 if test "$PYTHON_VERSION" != ""
335 if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \
336 -d $with_python/lib/python$PYTHON_VERSION/site-packages
338 PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION
339 PYTHON_SITE_PACKAGES='$(libdir)/python$(PYTHON_VERSION)/site-packages'
341 if test -r $prefix/include/python$PYTHON_VERSION/Python.h
343 PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
344 PYTHON_SITE_PACKAGES='$(libdir)/python$(PYTHON_VERSION)/site-packages'
346 if test -r /usr/include/python$PYTHON_VERSION/Python.h
348 PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
349 PYTHON_SITE_PACKAGES='$(libdir)/python$(PYTHON_VERSION)/site-packages'
351 echo could not find python$PYTHON_VERSION/Python.h
354 if test ! -d "$PYTHON_SITE_PACKAGES"
356 PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"`
359 PYTHON_LIBS=`python$PYTHON_VERSION-config --libs`
361 if test "$with_python" != ""
363 pythondir='$(PYTHON_SITE_PACKAGES)'
365 pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages'
368 AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "")
369 if test "$PYTHON_INCLUDES" != ""
376 AC_SUBST(PYTHON_SUBDIR)
377 AC_SUBST(PYTHON_LIBS)
379 AC_ARG_WITH(crypto, [ --with-crypto Add crypto support to exslt (on)])
381 if test "$with_crypto" = "no" ; then
382 echo Disabling crypto support
388 dnl Use only native crypto-API for mingw* hosts
389 dnl TODO: to implement --with-crypto=foo to allow switch between
394 AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config, no)
395 if test "$LIBGCRYPT_CONFIG" != "no" ; then
396 LIBGCRYPT_VERSION=`$LIBGCRYPT_CONFIG --version`
397 if test VERSION_TO_NUMBER(echo $LIBGCRYPT_VERSION) -lt VERSION_TO_NUMBER(echo "1.1.42")
401 echo 'gcrypt library version < 1.1.42 - Crypto extensions will not be available.'
403 LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --cflags`
404 LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --libs`
405 AC_DEFINE(HAVE_GCRYPT, 1, [Define if gcrypt library is available.])
406 echo 'Crypto extensions will be available.'
412 echo 'Crypto extensions will not be available. Install libgcrypt and reconfigure to make available.'
416 AC_SUBST(WITH_CRYPTO)
417 AC_SUBST(LIBGCRYPT_CFLAGS)
418 AC_SUBST(LIBGCRYPT_LIBS)
421 dnl Debug for DV (-Wunreachable-code)
423 if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XSLT" ]] || \
424 [[ "${LOGNAME}" = "bill" -a "`pwd`" = "/home/bill/gnomesvn/libxslt" ]]
426 if test "${with_mem_debug}" = "" ;
430 CFLAGS="-Wall -g -O -ansi -pedantic -W -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline "
433 AC_ARG_WITH(debug, [ --with-debug Add the debugging code (on)])
434 if test "$with_debug" = "no" ; then
435 echo Disabling debug support
440 AC_SUBST(WITH_XSLT_DEBUG)
442 AC_ARG_WITH(mem_debug, [ --with-mem-debug Add the memory debugging module (off)])
443 if test "$with_mem_debug" = "yes" ; then
444 echo Enabling memory debug support
449 AC_SUBST(WITH_MEM_DEBUG)
452 dnl Is debugger support requested
454 AC_ARG_WITH(debugger, [ --with-debugger Add the debugging support (on)])
455 if test "$with_debugger" = "no" ; then
456 echo Disabling debugger
459 echo Enabling debugger
461 AC_DEFINE([WITH_DEBUGGER],[], [Define if debugging support is enabled])
463 AC_SUBST(WITH_DEBUGGER)
466 dnl The following new parameters were added to offer
467 dnl the ability to specify the location of the libxml
468 dnl library during linking and compilation.
470 dnl original work - Mathieu Lacage 30/03/2000
471 dnl some tweaking - David Härdeman 30/10/2001
474 LIBXML_CONFIG_PREFIX=""
477 AC_ARG_WITH(libxml-prefix,
478 [ --with-libxml-prefix=[PFX] Specify location of libxml config],
479 LIBXML_CONFIG_PREFIX=$withval
482 AC_ARG_WITH(libxml-include-prefix,
483 [ --with-libxml-include-prefix=[PFX] Specify location of libxml headers],
484 LIBXML_CFLAGS="-I$withval"
487 AC_ARG_WITH(libxml-libs-prefix,
488 [ --with-libxml-libs-prefix=[PFX] Specify location of libxml libs],
489 LIBXML_LIBS="-L$withval"
492 AC_ARG_WITH(libxml-src,
493 [ --with-libxml-src=[DIR] For libxml thats not installed yet (sets all three above)],
494 LIBXML_SRC="$withval"
499 dnl where is xml2-config
502 AC_SUBST(LIBXML_REQUIRED_VERSION)
503 AC_MSG_CHECKING(for libxml libraries >= $LIBXML_REQUIRED_VERSION)
504 if test "x$LIBXML_CONFIG_PREFIX" != "x"
506 XML_CONFIG=${LIBXML_CONFIG_PREFIX}/bin/xml2-config
508 XML_CONFIG=xml2-config
512 dnl imported from libxml2, c.f. #77827
514 if test "${GCC}" != "yes" ; then
517 CFLAGS="${CFLAGS} -Wp,-H30000"
520 CFLAGS="${CFLAGS} -ieee"
524 CFLAGS="${CFLAGS} -Wall"
527 CFLAGS="${CFLAGS} -mieee"
530 CFLAGS="${CFLAGS} -mieee"
536 dnl Override other variables if LIBXML_SRC is set
539 if test "x$LIBXML_SRC" != "x"
545 XML_CONFIG=${SRC_DIR}/xml2-config
546 LIBXML_CFLAGS="-I${SRC_DIR}/include"
547 LIBXML_LIBS="-L${SRC_DIR}"
550 AC_MSG_ERROR([libxml source dir not found (${LIBXML_SRC}), typo?])
555 dnl make sure xml2-config is executable,
556 dnl test version and init our variables
559 if ${XML_CONFIG} --libs print > /dev/null 2>&1
561 XMLVERS=`$XML_CONFIG --version`
562 if test VERSION_TO_NUMBER(echo $XMLVERS) -ge VERSION_TO_NUMBER(echo $LIBXML_REQUIRED_VERSION)
564 AC_MSG_RESULT($XMLVERS found)
566 AC_MSG_ERROR(Version $XMLVERS found. You need at least libxml2 $LIBXML_REQUIRED_VERSION for this version of libxslt)
568 LIBXML_LIBS="$LIBXML_LIBS `$XML_CONFIG --libs`"
569 if test "x$LIBXML_SRC" = "x"; then
570 LIBXML_CFLAGS="$LIBXML_CFLAGS `$XML_CONFIG --cflags`"
573 AC_MSG_ERROR([Could not find libxml2 anywhere, check ftp://xmlsoft.org/.])
582 [ --with-plugins Add plugin extension support (on)])
583 if test "$with_plugins" = ""
588 AC_MSG_CHECKING([whether shared libraries will be built (required for plugins)])
589 if test "$enable_shared" = "no" -a "$with_plugins" = "yes"; then
591 AC_MSG_WARN([Disabling plugin support.])
592 AC_MSG_WARN([Plugins require that shared libraries be built.])
598 if test "$with_plugins" = "yes" ; then
599 AC_MSG_CHECKING([libxml2 module support])
600 WITH_MODULES="`$XML_CONFIG --modules`"
601 if test "${WITH_MODULES}" = "1"; then
611 AC_SUBST(WITH_MODULES)
612 AM_CONDITIONAL(WITH_MODULES, test "$WITH_MODULES" = "1")
615 dnl setup default module path
617 module_prefix=$prefix
618 test "x$module_prefix" = xNONE && module_prefix=$ac_default_prefix
619 LIBXSLT_DEFAULT_PLUGINS_PATH="$module_prefix/lib/libxslt-plugins"
620 AC_SUBST(LIBXSLT_DEFAULT_PLUGINS_PATH)
626 WIN32_EXTRA_LDFLAGS="-no-undefined"
629 WIN32_EXTRA_LIBADD="-lwsock32"
630 WIN32_EXTRA_LDFLAGS="-no-undefined"
631 AC_DEFINE([_WINSOCKAPI_],1,[Using the Win32 Socket implementation])
632 AC_DEFINE([snprintf],[_snprintf],[Win32 Std C name mangling work-around])
633 AC_DEFINE([vsnprintf],[_vsnprintf],[Win32 Std C name mangling work-around])
636 AC_SUBST(WIN32_EXTRA_LIBADD)
637 AC_SUBST(WIN32_EXTRA_LDFLAGS)
643 AC_SUBST(LIBXML_LIBS)
644 AC_SUBST(LIBXML_CFLAGS)
646 AC_SUBST(PYTHON_VERSION)
647 AC_SUBST(PYTHON_INCLUDES)
648 AC_SUBST(PYTHON_SITE_PACKAGES)
650 XSLT_LIBDIR='-L${libdir}'
651 XSLT_INCLUDEDIR='-I${includedir}'
652 XSLT_LIBS="-lxslt $LIBXML_LIBS $M_LIBS"
653 AC_SUBST(XSLT_LIBDIR)
654 AC_SUBST(XSLT_INCLUDEDIR)
657 EXSLT_LIBDIR='-L${libdir}'
658 EXSLT_INCLUDEDIR='-I${includedir}'
659 EXSLT_LIBS="-lexslt $XSLT_LIBS $LIBGCRYPT_LIBS"
660 AC_SUBST(EXSLT_LIBDIR)
661 AC_SUBST(EXSLT_INCLUDEDIR)
668 dnl for the spec file
669 RELDATE=`date +'%a %b %e %Y'`
672 rm -f COPYING.LIB COPYING 2>/dev/null && $LN_S $srcdir/Copyright COPYING
681 libxslt/xsltwin32config.h
683 libexslt/exsltconfig.h
686 python/tests/Makefile
692 tests/general/Makefile
693 tests/reports/Makefile
694 tests/extensions/Makefile
695 tests/namespaces/Makefile
697 tests/numbers/Makefile
698 tests/documents/Makefile
699 tests/xmlspec/Makefile
700 tests/multiple/Makefile
701 tests/xinclude/Makefile
702 tests/XSLTMark/Makefile
703 tests/docbook/Makefile
705 tests/exslt/common/Makefile
706 tests/exslt/functions/Makefile
707 tests/exslt/math/Makefile
708 tests/exslt/sets/Makefile
709 tests/exslt/strings/Makefile
710 tests/exslt/date/Makefile
711 tests/exslt/dynamic/Makefile
712 tests/plugins/Makefile