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=26
16 LIBEXSLT_MAJOR_VERSION=0
17 LIBEXSLT_MINOR_VERSION=8
18 LIBEXSLT_MICRO_VERSION=15
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 VERSION_SCRIPT_FLAGS=
134 $(/usr/bin/ld --help 2>&1 | grep -- --version-script >/dev/null) && \
135 VERSION_SCRIPT_FLAGS=-Wl,--version-script=
136 test "`uname`" = "SunOS" && \
137 VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
138 AC_SUBST(VERSION_SCRIPT_FLAGS)
139 AM_CONDITIONAL([USE_VERSION_SCRIPT], [test -n "$VERSION_SCRIPT_FLAGS"])
141 dnl Look for pthread.h, needed for testThreads
146 AC_CHECK_HEADER(pthread.h,
147 AC_CHECK_LIB(pthread, pthread_join,[
148 AC_DEFINE([HAVE_LIBPTHREAD], [], [Define if pthread library is there (-lpthread)])
149 AC_DEFINE([HAVE_PTHREAD_H], [], [Define if <pthread.h> is there])
150 THREAD_LIBS="-lpthread"]))
154 AC_SUBST(THREAD_LIBS)
157 dnl Detect supported locale
160 XSLT_LOCALE_XLOCALE=0
163 AC_CHECK_HEADERS([locale.h xlocale.h])
164 if test $ac_cv_header_xlocale_h = yes; then
166 dnl Check for generic locale_t declaration
168 AC_MSG_CHECKING([if xlocale program link])
169 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
173 #ifdef HAVE_XLOCALE_H
184 typedef __locale_t xsltLocale;
186 typedef locale_t xsltLocale;
188 #if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ <= 2
189 #define newlocale __newlocale
190 #define freelocale __freelocale
191 #define strxfrm_l __strxfrm_l
192 #define LC_COLLATE_MASK (1 << LC_COLLATE)
196 const char *src[[2]] = { "\xc3\x84rger", "Zeppelin" };
201 locale = newlocale(LC_COLLATE_MASK, "en_US.utf8", NULL);
202 if (locale == NULL) exit(1);
203 for (i=0; i<2; ++i) {
204 len = strxfrm_l(NULL, src[[i]], 0, locale) + 1;
205 dst[[i]] = malloc(len);
206 if(dst[[i]] == NULL) exit(1);
207 r = strxfrm_l(dst[[i]], src[[i]], len, locale);
208 if(r >= len) exit(1);
210 if (strcmp(dst[[0]], dst[[1]]) >= 0) exit(1);
215 [AC_MSG_RESULT(yes); XSLT_LOCALE_XLOCALE=1],
221 AC_MSG_NOTICE([using winapi locale])
222 XSLT_LOCALE_WINAPI=1;;
226 AC_SUBST(XSLT_LOCALE_XLOCALE)
227 AC_SUBST(XSLT_LOCALE_WINAPI)
233 AC_CHECK_HEADERS(ieeefp.h nan.h math.h fp_class.h float.h ansidecl.h)
234 AC_CHECK_HEADERS(sys/timeb.h time.h sys/stat.h sys/select.h stdarg.h)
235 AC_CHECK_FUNCS(stat _stat)
236 AC_CHECK_FUNC(pow, , AC_CHECK_LIB(m, pow,
237 [M_LIBS="-lm"; AC_DEFINE([HAVE_POW],[], [Define if pow is there])]))
239 AC_CHECK_FUNC(floor, , AC_CHECK_LIB(m, floor,
240 [M_LIBS="-lm"; AC_DEFINE([HAVE_FLOOR],[], [Define if floor is there])]))
242 AC_CHECK_FUNC(fabs, , AC_CHECK_LIB(m, fabs,
243 [M_LIBS="-lm"; AC_DEFINE([HAVE_FABS],[], [Define if fabs is there])]))
246 AC_CHECK_FUNCS(gettimeofday)
247 AC_CHECK_FUNCS(mktime localtime localtime_r asctime time gmtime gmtime_r ftime)
249 dnl Checking the standard string functions availability
250 AC_CHECK_FUNCS(printf sprintf fprintf snprintf vfprintf vsprintf vsnprintf sscanf,,
253 dnl Checking for POSIX timers
254 AC_CHECK_FUNCS(clock_gettime, [], [
255 AC_CHECK_LIB(rt, clock_gettime, [
256 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
257 EXTRA_LIBS="$EXTRA_LIBS -lrt"
262 dnl Check for trio string functions
265 if test "${NEED_TRIO}" = "1" ; then
266 echo Reusing trio library for string functions
274 dnl Some packages need to be checked against version numbers so we
275 dnl define a function here for later use
277 AC_DEFUN([VERSION_TO_NUMBER],
278 [`$1 | sed -e 's/libxml //' | awk 'BEGIN { FS = "."; } { printf "%d", ([$]1 * 1000 + [$]2) * 1000 + [$]3;}'`])
281 dnl Perl is just needed for generating some data for XSLtmark
284 AC_CHECK_PROG(PERL, perl, perl, false)
285 AM_CONDITIONAL(WITH_PERL, test "$PERL" != "false")
293 PYTHON_SITE_PACKAGES=
295 AC_ARG_WITH(python, [ --with-python[=DIR] Build Python bindings if found])
296 if test "$with_python" != "no" ; then
297 if test -x "$with_python/bin/python"
299 echo Found python in $with_python/bin/python
300 PYTHON="$with_python/bin/python"
302 if test -x "$with_python"
304 echo Found python in $with_python
305 PYTHON="$with_python"
309 echo Found python in environment PYTHON=$PYTHON
310 with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
312 AC_PATH_PROG(PYTHON, python python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
316 if test "$PYTHON" != ""
318 echo "PYTHON is pointing at $PYTHON"
319 PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
320 echo Found Python version $PYTHON_VERSION
321 LIBXML2_PYTHON=`$PYTHON -c "try : import libxml2 ; print 1
323 if test "$LIBXML2_PYTHON" = "1"
325 echo Found libxml2-python module
327 echo Warning: Missing libxml2-python
330 if test "$PYTHON_VERSION" != ""
332 if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \
333 -d $with_python/lib/python$PYTHON_VERSION/site-packages
335 PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION
336 PYTHON_SITE_PACKAGES='$(libdir)/python$(PYTHON_VERSION)/site-packages'
338 if test -r $prefix/include/python$PYTHON_VERSION/Python.h
340 PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
341 PYTHON_SITE_PACKAGES='$(libdir)/python$(PYTHON_VERSION)/site-packages'
343 if test -r /usr/include/python$PYTHON_VERSION/Python.h
345 PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
346 PYTHON_SITE_PACKAGES='$(libdir)/python$(PYTHON_VERSION)/site-packages'
348 echo could not find python$PYTHON_VERSION/Python.h
351 if test ! -d "$PYTHON_SITE_PACKAGES"
353 PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"`
356 PYTHON_LIBS=`python$PYTHON_VERSION-config --libs`
358 if test "$with_python" != ""
360 pythondir='$(PYTHON_SITE_PACKAGES)'
362 pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages'
365 AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "")
366 if test "$PYTHON_INCLUDES" != ""
373 AC_SUBST(PYTHON_SUBDIR)
374 AC_SUBST(PYTHON_LIBS)
376 AC_ARG_WITH(crypto, [ --with-crypto Add crypto support to exslt (on)])
378 if test "$with_crypto" = "no" ; then
379 echo Disabling crypto support
385 dnl Use only native crypto-API for mingw* hosts
386 dnl TODO: to implement --with-crypto=foo to allow switch between
391 AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config, no)
392 if test "$LIBGCRYPT_CONFIG" != "no" ; then
393 LIBGCRYPT_VERSION=`$LIBGCRYPT_CONFIG --version`
394 if test VERSION_TO_NUMBER(echo $LIBGCRYPT_VERSION) -lt VERSION_TO_NUMBER(echo "1.1.42")
398 echo 'gcrypt library version < 1.1.42 - Crypto extensions will not be available.'
400 LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --cflags`
401 LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --libs`
402 AC_DEFINE(HAVE_GCRYPT, 1, [Define if gcrypt library is available.])
403 echo 'Crypto extensions will be available.'
409 echo 'Crypto extensions will not be available. Install libgcrypt and reconfigure to make available.'
413 AC_SUBST(WITH_CRYPTO)
414 AC_SUBST(LIBGCRYPT_CFLAGS)
415 AC_SUBST(LIBGCRYPT_LIBS)
418 dnl Debug for DV (-Wunreachable-code)
420 if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XSLT" ]] || \
421 [[ "${LOGNAME}" = "bill" -a "`pwd`" = "/home/bill/gnomesvn/libxslt" ]]
423 if test "${with_mem_debug}" = "" ;
427 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 "
430 AC_ARG_WITH(debug, [ --with-debug Add the debugging code (on)])
431 if test "$with_debug" = "no" ; then
432 echo Disabling debug support
437 AC_SUBST(WITH_XSLT_DEBUG)
439 AC_ARG_WITH(mem_debug, [ --with-mem-debug Add the memory debugging module (off)])
440 if test "$with_mem_debug" = "yes" ; then
441 echo Enabling memory debug support
446 AC_SUBST(WITH_MEM_DEBUG)
449 dnl Is debugger support requested
451 AC_ARG_WITH(debugger, [ --with-debugger Add the debugging support (on)])
452 if test "$with_debugger" = "no" ; then
453 echo Disabling debugger
456 echo Enabling debugger
458 AC_DEFINE([WITH_DEBUGGER],[], [Define if debugging support is enabled])
460 AC_SUBST(WITH_DEBUGGER)
463 dnl The following new parameters were added to offer
464 dnl the ability to specify the location of the libxml
465 dnl library during linking and compilation.
467 dnl original work - Mathieu Lacage 30/03/2000
468 dnl some tweaking - David Härdeman 30/10/2001
471 LIBXML_CONFIG_PREFIX=""
474 AC_ARG_WITH(libxml-prefix,
475 [ --with-libxml-prefix=[PFX] Specify location of libxml config],
476 LIBXML_CONFIG_PREFIX=$withval
479 AC_ARG_WITH(libxml-include-prefix,
480 [ --with-libxml-include-prefix=[PFX] Specify location of libxml headers],
481 LIBXML_CFLAGS="-I$withval"
484 AC_ARG_WITH(libxml-libs-prefix,
485 [ --with-libxml-libs-prefix=[PFX] Specify location of libxml libs],
486 LIBXML_LIBS="-L$withval"
489 AC_ARG_WITH(libxml-src,
490 [ --with-libxml-src=[DIR] For libxml thats not installed yet (sets all three above)],
491 LIBXML_SRC="$withval"
496 dnl where is xml2-config
499 AC_SUBST(LIBXML_REQUIRED_VERSION)
500 AC_MSG_CHECKING(for libxml libraries >= $LIBXML_REQUIRED_VERSION)
501 if test "x$LIBXML_CONFIG_PREFIX" != "x"
503 XML_CONFIG=${LIBXML_CONFIG_PREFIX}/bin/xml2-config
505 XML_CONFIG=xml2-config
509 dnl imported from libxml2, c.f. #77827
511 if test "${GCC}" != "yes" ; then
514 CFLAGS="${CFLAGS} -Wp,-H30000"
517 CFLAGS="${CFLAGS} -ieee"
521 CFLAGS="${CFLAGS} -Wall"
524 CFLAGS="${CFLAGS} -mieee"
527 CFLAGS="${CFLAGS} -mieee"
533 dnl Override other variables if LIBXML_SRC is set
536 if test "x$LIBXML_SRC" != "x"
542 XML_CONFIG=${SRC_DIR}/xml2-config
543 LIBXML_CFLAGS="-I${SRC_DIR}/include"
544 LIBXML_LIBS="-L${SRC_DIR}"
547 AC_MSG_ERROR([libxml source dir not found (${LIBXML_SRC}), typo?])
552 dnl make sure xml2-config is executable,
553 dnl test version and init our variables
556 if ${XML_CONFIG} --libs print > /dev/null 2>&1
558 XMLVERS=`$XML_CONFIG --version`
559 if test VERSION_TO_NUMBER(echo $XMLVERS) -ge VERSION_TO_NUMBER(echo $LIBXML_REQUIRED_VERSION)
561 AC_MSG_RESULT($XMLVERS found)
563 AC_MSG_ERROR(Version $XMLVERS found. You need at least libxml2 $LIBXML_REQUIRED_VERSION for this version of libxslt)
565 LIBXML_LIBS="$LIBXML_LIBS `$XML_CONFIG --libs`"
566 if test "x$LIBXML_SRC" = "x"; then
567 LIBXML_CFLAGS="$LIBXML_CFLAGS `$XML_CONFIG --cflags`"
570 AC_MSG_ERROR([Could not find libxml2 anywhere, check ftp://xmlsoft.org/.])
579 [ --with-plugins Add plugin extension support (on)])
580 if test "$with_plugins" = ""
585 AC_MSG_CHECKING([whether shared libraries will be built (required for plugins)])
586 if test "$enable_shared" = "no" -a "$with_plugins" = "yes"; then
588 AC_MSG_WARN([Disabling plugin support.])
589 AC_MSG_WARN([Plugins require that shared libraries be built.])
595 if test "$with_plugins" = "yes" ; then
596 AC_MSG_CHECKING([libxml2 module support])
597 WITH_MODULES="`$XML_CONFIG --modules`"
598 if test "${WITH_MODULES}" = "1"; then
608 AC_SUBST(WITH_MODULES)
609 AM_CONDITIONAL(WITH_MODULES, test "$WITH_MODULES" = "1")
612 dnl setup default module path
614 module_prefix=$prefix
615 test "x$module_prefix" = xNONE && module_prefix=$ac_default_prefix
616 LIBXSLT_DEFAULT_PLUGINS_PATH="$module_prefix/lib/libxslt-plugins"
617 AC_SUBST(LIBXSLT_DEFAULT_PLUGINS_PATH)
623 WIN32_EXTRA_LDFLAGS="-no-undefined"
626 WIN32_EXTRA_LIBADD="-lwsock32"
627 WIN32_EXTRA_LDFLAGS="-no-undefined"
628 AC_DEFINE([_WINSOCKAPI_],1,[Using the Win32 Socket implementation])
629 AC_DEFINE([snprintf],[_snprintf],[Win32 Std C name mangling work-around])
630 AC_DEFINE([vsnprintf],[_vsnprintf],[Win32 Std C name mangling work-around])
633 AC_SUBST(WIN32_EXTRA_LIBADD)
634 AC_SUBST(WIN32_EXTRA_LDFLAGS)
640 AC_SUBST(LIBXML_LIBS)
641 AC_SUBST(LIBXML_CFLAGS)
643 AC_SUBST(PYTHON_VERSION)
644 AC_SUBST(PYTHON_INCLUDES)
645 AC_SUBST(PYTHON_SITE_PACKAGES)
647 XSLT_LIBDIR='-L${libdir}'
648 XSLT_INCLUDEDIR='-I${includedir}'
649 XSLT_LIBS="-lxslt $LIBXML_LIBS $M_LIBS"
650 AC_SUBST(XSLT_LIBDIR)
651 AC_SUBST(XSLT_INCLUDEDIR)
654 EXSLT_LIBDIR='-L${libdir}'
655 EXSLT_INCLUDEDIR='-I${includedir}'
656 EXSLT_LIBS="-lexslt $XSLT_LIBS $LIBGCRYPT_LIBS"
657 AC_SUBST(EXSLT_LIBDIR)
658 AC_SUBST(EXSLT_INCLUDEDIR)
665 dnl for the spec file
666 RELDATE=`date +'%a %b %e %Y'`
669 rm -f COPYING.LIB COPYING 2>/dev/null && $LN_S $srcdir/Copyright COPYING
678 libxslt/xsltwin32config.h
680 libexslt/exsltconfig.h
683 python/tests/Makefile
689 tests/general/Makefile
690 tests/reports/Makefile
691 tests/extensions/Makefile
692 tests/namespaces/Makefile
694 tests/numbers/Makefile
695 tests/documents/Makefile
696 tests/xmlspec/Makefile
697 tests/multiple/Makefile
698 tests/xinclude/Makefile
699 tests/XSLTMark/Makefile
700 tests/docbook/Makefile
702 tests/exslt/common/Makefile
703 tests/exslt/functions/Makefile
704 tests/exslt/math/Makefile
705 tests/exslt/sets/Makefile
706 tests/exslt/strings/Makefile
707 tests/exslt/date/Makefile
708 tests/exslt/dynamic/Makefile
709 tests/plugins/Makefile