1 dnl Process this file with autoconf to produce a configure script.
3 dnl See xapian-core's HACKING document for details of the reasons for required
7 m4_define([project_version], [1.5.0])
8 AC_INIT([xapian-bindings], project_version, [https://xapian.org/bugs])
10 dnl See xapian-core's HACKING document for details of the reasons for required
12 AM_INIT_AUTOMAKE([1.13 parallel-tests -Wportability subdir-objects tar-ustar no-dist-gzip dist-xz])
13 AC_CONFIG_SRCDIR([xapian-headers.i])
15 AC_CONFIG_HEADERS([config.h])
17 AC_CONFIG_MACRO_DIRS([m4])
19 dnl Mac OS X needs MACOSX_DEPLOYMENT_TARGET set to 10.3 (or higher) to
20 dnl successfully link the SWIG generated modules. The link always fails on
21 dnl earlier versions of Mac OS X (10.1.4 and 10.2.8 tested), and these versions
22 dnl are long obsolete now, so we just ensure that MACOSX_DEPLOYMENT_TARGET is
23 dnl set to at least 10.3.
25 dnl NB we must do this *BEFORE* LT_INIT since that is what checks
26 dnl MACOSX_DEPLOYMENT_TARGET.
28 OVERRIDE_MACOSX_DEPLOYMENT_TARGET=
30 *86*-darwin8*|*-darwin[[91]]*)
31 dnl On 10.5 or later, and 10.4 on x86, the deployment target defaults to the
32 dnl OS version, so we don't need to override on these.
35 case $MACOSX_DEPLOYMENT_TARGET in
37 OVERRIDE_MACOSX_DEPLOYMENT_TARGET=10.3 ;;
39 AC_MSG_WARN([Overriding MACOSX_DEPLOYMENT_TARGET from $MACOSX_DEPLOYMENT_TARGET to 10.3])
40 OVERRIDE_MACOSX_DEPLOYMENT_TARGET=10.3 ;;
44 AM_CONDITIONAL(OVERRIDE_MACOSX_DEPLOYMENT_TARGET, test -n "$OVERRIDE_MACOSX_DEPLOYMENT_TARGET")
45 AC_SUBST(OVERRIDE_MACOSX_DEPLOYMENT_TARGET)
46 if test -n "$OVERRIDE_MACOSX_DEPLOYMENT_TARGET" ; then
47 MACOSX_DEPLOYMENT_TARGET=$OVERRIDE_MACOSX_DEPLOYMENT_TARGET
50 dnl Use libtool to manage our libraries, but don't build static libraries as
51 dnl the bindings only have a use for dynamic ones.
53 LT_INIT([disable-static])
55 dnl -no-undefined causes problems on Mac OS X with at least some
56 dnl MACOSX_DEPLOYMENT_TARGET settings, so only pass -no-undefined on
57 dnl platforms where it is required in order to link a shared library at
58 dnl all (Windows is the main one).
60 if test unsupported = "$allow_undefined_flag" ; then
61 NO_UNDEFINED=-no-undefined
63 AC_SUBST(NO_UNDEFINED)
65 dnl Checks for programs.
68 # Checked: freebsd8.0 openbsd4.6 solaris2.9 solaris2.10
70 linux* | k*bsd*-gnu | freebsd* | openbsd* | solaris*)
71 dnl Vanilla libtool sets this to "unknown" which it then handles as "yes".
72 link_all_deplibs_CXX=no
78 dnl Extract search path from ldconfig which is more reliable than the way
79 dnl vanilla libtool extracts them from ld.so.conf.
80 d=`/sbin/ldconfig -N -X -v 2>&AS_MESSAGE_LOG_FD|$SED 's,^\(/.*\):\( (.*)\)\?$,\1,p;d'|tr '\n' ' '`
81 test -z "$d" || sys_lib_dlsearch_path_spec=$d
85 dnl Run tests using the C++ compiler.
88 dnl Probe for any options needed to enable C++11 support.
89 AX_CXX_COMPILE_STDCXX_11
91 dnl Check for xapian-core.
93 [xapian-config]regexp(project_version,
94 [^\([0-9]*\.[0-9]*[13579]\)\..*$], [-\1]))
103 dnl If we're building against an uninstalled xapian-core, xapian-config
104 dnl --libs will give an error.
105 if $XAPIAN_CONFIG --libs >/dev/null 2>/dev/null ; then
109 dnl $XAPIAN_LIBS may have some options first, so grab the last argument,
110 dnl which should be the .la file.
115 dnl Make sure the path is absolute.
116 case $INTREE_DYLD_PATH in
118 *) INTREE_DYLD_PATH=`pwd`/$INTREE_DYLD_PATH ;;
120 dnl Add .libs or equivalent.
121 INTREE_DYLD_PATH=`echo "$INTREE_DYLD_PATH"|sed 's,\(.*/\).*,\1,'`$lt_cv_objdir
122 AC_SUBST([INTREE_DYLD_PATH])
126 AM_CONDITIONAL(NEED_JNILIB_EXT, test yes = "$NEED_JNILIB_EXT")
127 AM_CONDITIONAL(NEED_INTREE_DYLD, test yes = "$NEED_INTREE_DYLD")
129 dnl We want XAPIAN_CXXFLAGS to be used for configure tests, so add it to
130 dnl CXXFLAGS for the duration of configure.
131 save_CXXFLAGS=$CXXFLAGS
132 CXXFLAGS="$CXXFLAGS $XAPIAN_CXXFLAGS"
134 dnl COMPAT_VERSION is the version of xapian-core that "matches" our version.
135 dnl We allow for bindings being version 0.8.5.1 while xapian-core is 0.8.5.
136 dnl COMPAT_VERSION also ignores any _git123 suffix which snapshots will have.
137 COMPAT_VERSION=[`echo "$PACKAGE_VERSION"|sed 's/^\([0-9]*\.[0-9]*\.[0-9]*\).*/\1/'`]
138 AC_SUBST(COMPAT_VERSION)
140 dnl VERSION_NO_SNAPSHOT simply has any _git123 suffix removed.
141 VERSION_NO_SNAPSHOT=[`echo "$PACKAGE_VERSION"|sed 's/_.*$//'`]
142 AC_SUBST(VERSION_NO_SNAPSHOT)
144 dnl We only need to set docdir for compatibility with autoconf < 2.60 - this
145 dnl code can be removed once we move to requiring autoconf 2.60 or newer.
146 test -n "$docdir" || docdir='${datadir}/doc/${PACKAGE_TARNAME}'
149 AC_ARG_ENABLE(visibility,
150 [AS_HELP_STRING([--disable-visibility], [disable use of GCC visibility])],
151 [case ${enableval} in
153 *) AC_MSG_ERROR([bad value ${enableval} for --disable-visibility]) ;;
156 dnl Only probe for SWIG and enable SWIG rules in makefiles if
157 dnl configure --enable-maintainer-mode is used.
160 AC_ARG_ENABLE(documentation,
161 [AS_HELP_STRING([--enable-documentation], [enable make rules to rebuild shipped documentation [default=maintainer-mode]])],
162 [case ${enableval} in
164 *) AC_MSG_ERROR([bad value ${enableval} for --enable-documentation]) ;;
166 test -z "$enable_documentation" && enable_documentation=$USE_MAINTAINER_MODE
167 AM_CONDITIONAL(DOCUMENTATION_RULES, test x"$enable_documentation" = xyes)
168 AM_CONDITIONAL(MAINTAINER_NO_DOCS, test x"$USE_MAINTAINER_MODE$enable_documentation" = xyesno)
170 if test yes = "$enable_documentation" ; then
171 dnl Check for rst2html. (Needed to make HTML from reStructuredText format)
172 dnl Also look for rst2html.py, which archlinux reportedly installs it as.
173 AC_PATH_PROGS(RST2HTML, [rst2html rst2html.py], [])
174 test -z "$RST2HTML" && AC_MSG_ERROR([rst2html is required to build documentation (try package python-docutils)])
177 if test x$USE_MAINTAINER_MODE = xyes; then
178 dnl Check for swig - this does most of the work for the bindings.
179 dnl AC_PATH_PROGS only honours an already set SWIG if it's a full
180 dnl path. Listing it in the "to be searched" list like this allows
181 dnl ./configure SWIG=myswig to work.
182 swigoverridden=${SWIG+yes}
183 AC_PATH_PROGS(SWIG, ["${SWIG-swig}"], [])
184 AC_ARG_VAR(SWIG, [SWIG interface generator (only needed by Xapian developers)])
185 if test -z "$SWIG" ; then
186 AC_MSG_ERROR([Can't find SWIG utility])
188 dnl Check for new enough SWIG.
190 dnl 3.0.6 fixes compiling the Perl bindings under C++11 ("seed" macro issue).
191 dnl 3.0.8 fixes conversion of integers large than an int in Python 3.
192 dnl 3.0.9 fixes generation of unnecessary _swigconstant helpers for Python.
193 dnl 3.0.12 fixes segfault on unload with PHP 7.1
194 v=`$SWIG -version 2>&1|sed 's/^SWIG Version \([[0-9\.]]*\).*/\1/p;d'`
196 [[012].*|3.0.?|3.0.1[01]|""])
197 msg="SWIG >= 3.0.12 required (you have ${v:-an unknown version})"
198 if test -n "$swigoverridden" ; then
199 dnl If SWIG was explicitly set, make this a warning only.
205 SWIG_FLAGS=`$XAPIAN_CONFIG --swigflags`
209 for a in $SWIG_FLAGS ; do
212 d=`echo "x$a"|sed 's/^x-I//'`
213 dnl Quote each entry in XAPIAN_HEADER_DIRS with "".
214 XAPIAN_HEADER_DIRS=$XAPIAN_HEADER_DIRS' "'$d'"'
215 for f in "$d/"*.h "$d/xapian/*.h" ; do
216 if test -f "$f" ; then
217 XAPIAN_HEADERS="$XAPIAN_HEADERS $f"
223 AC_SUBST([XAPIAN_HEADER_DIRS])
224 AC_SUBST([XAPIAN_HEADERS])
226 dnl Need perl in maintainer mode to generate the except.i file for python.
227 AC_PATH_PROGS(PERL, ["${PERL-perl}"], [])
228 test -z "$PERL" && AC_MSG_ERROR([perl is required in maintainer mode])
229 dnl Need doxygen in maintainer mode to convert C++ doxygen comments to Python
231 AC_PATH_PROG(DOXYGEN, doxygen, [])
232 test -z "$DOXYGEN" && AC_MSG_ERROR([doxygen is required to build documentation])
236 AC_HELP_STRING([--with-python], [enable Python 2 bindings]),
241 AC_HELP_STRING([--with-python3], [enable Python 3 bindings]),
246 AC_HELP_STRING([--with-php], [enable PHP 5 bindings]),
251 AC_HELP_STRING([--with-php7], [enable PHP 7 bindings]),
256 AC_HELP_STRING([--with-ruby], [enable Ruby bindings]),
261 AC_HELP_STRING([--with-tcl], [enable Tcl bindings]),
266 AC_HELP_STRING([--with-csharp], [enable CSharp bindings]),
271 AC_HELP_STRING([--with-java], [enable Java bindings]),
276 AC_HELP_STRING([--with-perl], [enable Perl bindings]),
281 AC_HELP_STRING([--with-lua], [enable Lua bindings]),
285 case $with_python$with_python3$with_php$with_php7$with_ruby$with_tcl$with_csharp$with_java$with_perl$with_lua in
287 dnl Default unspecified values to no.
288 test -z "$with_python" && with_python=no
289 test -z "$with_python3" && with_python3=no
290 test -z "$with_php" && with_php=no
291 test -z "$with_php7" && with_php7=no
292 test -z "$with_tcl" && with_tcl=no
293 test -z "$with_csharp" && with_csharp=no
294 test -z "$with_java" && with_java=no
295 test -z "$with_ruby" && with_ruby=no
296 test -z "$with_perl" && with_perl=no
297 test -z "$with_lua" && with_lua=no
303 if test no != "$with_python" ; then
304 dnl For backward compatibility:
305 : ${PYTHON2="$PYTHON"}
306 : ${PYTHON2_INC="$PYTHON_INC"}
307 : ${PYTHON2_LIB="$PYTHON_LIB"}
308 : ${PYTHON2_LIBS="$PYTHON_LIBS"}
309 : ${PYTHON2_SO="$PYTHON_SO"}
310 dnl See comment for AC_PATH_PROGS(SWIG, ...).
311 if test -n "$PYTHON2" ; then
312 AC_PATH_PROGS(PYTHON2, ["$PYTHON2"], [])
314 AC_PATH_PROGS(PYTHON2, [python2 python], [])
316 AC_ARG_VAR(PYTHON2, [Python 2 interpreter])
317 if test -n "$PYTHON2" ; then
318 dnl Require Python 2.6 or newer. Older versions are essentially
319 dnl unsupported upstream.
320 AC_MSG_CHECKING([$PYTHON2 version])
321 version=`$PYTHON2 -c 'import sys;print("%d.%d" % sys.version_info[[:2]])' 2>/dev/null`
323 [2.[6-9]*|2.[1-5][0-9]*])
324 AC_MSG_RESULT([$version])
327 AC_MSG_RESULT([$version (too new - use --with-python3 for Python 3 support)])
328 if test yes = "$with_python" ; then
329 AC_MSG_ERROR([Use --with-python3 for Python 3 support ($PYTHON2 is $version)])
334 AC_MSG_RESULT([$version (too old)])
335 if test yes = "$with_python" ; then
336 AC_MSG_ERROR([Only Python 2.6 or newer is supported ($PYTHON2 is $version)])
341 if test -n "$PYTHON2" ; then
342 if $PYTHON2 -c 'import distutils.sysconfig' 2>/dev/null ; then
343 PYTHON2_INC=`$PYTHON2 -c 'import os,distutils.sysconfig;print(distutils.sysconfig.get_python_inc().replace(os.sep,"/"))'`
344 AC_SUBST(PYTHON2_INC)
346 if test yes = "$with_python" ; then
347 AC_MSG_ERROR([Couldn't import Python module distutils.sysconfig - you probably need to install a python-dev or python-devel package])
349 AC_MSG_WARN([Couldn't import Python module distutils.sysconfig - you probably don't have a python-dev or python-devel package installed])
354 AC_MSG_CHECKING([for python2 sphinx module])
355 if $PYTHON2 -c 'import sphinx;print(repr(sphinx.main))' >&5 2>&5 ; then
359 if test yes = "$with_python" ; then
360 AC_MSG_ERROR([Couldn't import sphinx module and call sphinx.main() for Python2 - try package python-sphinx])
364 if test -n "$PYTHON2" ; then
365 dnl Check that Python.h is there, which is a good way to check that
366 dnl the appropriate python-dev package has been installed.
367 AC_MSG_CHECKING([for $PYTHON2_INC/Python.h])
368 if test -f "$PYTHON2_INC/Python.h" ; then
370 AC_MSG_CHECKING([for directory to install python2 bindings in])
371 if test -z "$PYTHON2_LIB" ; then
372 PYTHON2_LIB=`$PYTHON2 -c 'import os,distutils.sysconfig;print(distutils.sysconfig.get_python_lib(1).replace(os.sep,"/"))'`
374 AC_MSG_RESULT([$PYTHON2_LIB])
375 AC_ARG_VAR(PYTHON2_LIB, [Directory to install python2 bindings in])
377 AC_MSG_CHECKING([for python2 libraries to link against])
380 PYTHON2_LIBS=`$PYTHON2 -c 'import os,sys;print("-L"+os.path.join(sys.prefix,"libs").replace(os.sep,"/")+" -lpython"+sys.version[[:3]].replace(".",""))'` ;;
382 PYTHON2_LIBS=`$PYTHON2 -c 'import os,sys;print("-L"+os.path.join(sys.path[[3]],"config")+" -lpython"+sys.version[[:3]])'` ;;
386 AC_SUBST(PYTHON2_LIBS)
387 AC_MSG_RESULT([$PYTHON2_LIBS])
389 AC_MSG_CHECKING([for python2 module extension])
390 dnl Usually ".so", but for example, Mac OS X uses ".dylib".
391 PYTHON2_SO=`$PYTHON2 -c 'import distutils.sysconfig;print(distutils.sysconfig.get_config_vars("SO")[[0]])'`
393 AC_MSG_RESULT([$PYTHON2_SO])
394 BINDINGS="$BINDINGS python"
396 AC_MSG_RESULT([no (install python-dev or python-devel package or similar)])
397 if test yes = "$with_python" ; then
398 AC_MSG_ERROR([Python.h not found])
405 if test no != "$with_python3" ; then
406 dnl See comment for AC_PATH_PROGS(SWIG, ...).
407 if test -n "$PYTHON3" ; then
408 AC_PATH_PROGS(PYTHON3, ["$PYTHON3"], [])
410 AC_PATH_PROGS(PYTHON3, [python3 python], [])
412 AC_ARG_VAR(PYTHON3, [Python 3 interpreter])
413 if test -n "$PYTHON3" ; then
414 dnl Require Python 3.2 or newer, as that's the oldest version we can
415 dnl easily test with. If anyone's keen to support older versions, please
416 dnl test and send in any patches needed to get it to work.
417 AC_MSG_CHECKING([$PYTHON3 version])
418 version=`$PYTHON3 -c 'import sys;print("%d.%d" % sys.version_info[[:2]])' 2>/dev/null`
420 [3.[2-9]*|3.1[0-9]*|[4-9].*])
421 AC_MSG_RESULT([$version])
424 AC_MSG_RESULT([$version (too old)])
425 if test yes = "$with_python3" ; then
426 AC_MSG_ERROR([Only Python 3.2 or newer is supported ($python3 is $version)])
431 if test -n "$PYTHON3" ; then
432 if $PYTHON3 -c 'import distutils.sysconfig' 2>/dev/null ; then
433 PYTHON3_INC=`$PYTHON3 -c 'import os,distutils.sysconfig;print(distutils.sysconfig.get_python_inc().replace(os.sep,"/"))'`
434 AC_SUBST(PYTHON3_INC)
436 if test yes = "$with_python3" ; then
437 AC_MSG_ERROR([Couldn't import Python module distutils.sysconfig - you probably need to install a python3-dev or python3-devel package])
439 AC_MSG_WARN([Couldn't import Python module distutils.sysconfig - you probably don't have a python3-dev or python3-devel package installed])
444 AC_MSG_CHECKING([for python3 sphinx module])
445 if $PYTHON3 -c 'import sphinx;print(repr(sphinx.main))' >&5 2>&5 ; then
449 if test yes = "$with_python3" ; then
450 AC_MSG_ERROR([Couldn't import sphinx module and call sphinx.main() for Python3 - try package python3-sphinx])
454 if test -n "$PYTHON3" ; then
455 dnl Check that Python.h is there, which is a good way to check that
456 dnl the appropriate python3-dev package has been installed.
457 AC_MSG_CHECKING([for $PYTHON3_INC/Python.h])
458 if test -f "$PYTHON3_INC/Python.h" ; then
460 AC_MSG_CHECKING([for directory to install python3 bindings in])
461 if test -z "$PYTHON3_LIB" ; then
462 PYTHON3_LIB=`$PYTHON3 -c 'import os,distutils.sysconfig;print(distutils.sysconfig.get_python_lib(1).replace(os.sep,"/"))'`
464 AC_MSG_RESULT([$PYTHON3_LIB])
465 AC_ARG_VAR(PYTHON3_LIB, [Directory to install python3 bindings in])
467 AC_MSG_CHECKING([for python3 libraries to link against])
470 PYTHON3_LIBS=`$PYTHON3 -c 'import os,sys;print("-L"+os.path.join(sys.prefix,"libs").replace(os.sep,"/")+" -lpython"+sys.version[[:3]].replace(".",""))'` ;;
472 PYTHON3_LIBS=`$PYTHON3 -c 'import os,sys;print("-L"+os.path.join(sys.path[[3]],"config")+" -lpython"+sys.version[[:3]])'` ;;
476 AC_SUBST(PYTHON3_LIBS)
477 AC_MSG_RESULT([$PYTHON3_LIBS])
479 AC_MSG_CHECKING([for python3 module extension])
480 dnl Usually ".so", but for example, Mac OS X uses ".dylib".
481 PYTHON3_SO=`$PYTHON3 -c 'import distutils.sysconfig;print(distutils.sysconfig.get_config_vars("SO")[[0]])'`
483 AC_MSG_RESULT([$PYTHON3_SO])
485 AC_MSG_CHECKING([for tag for cached compiled scripts])
486 PYTHON3_CACHE_TAG=`$PYTHON3 -c 'import imp;print(imp.get_tag())'`
487 AC_SUBST(PYTHON3_CACHE_TAG)
488 AC_MSG_RESULT([$PYTHON3_CACHE_TAG])
490 AC_MSG_CHECKING([for extension of cached and optimized python3 bytecode])
491 PYTHON3_CACHE_OPT1_EXT=`$PYTHON3 -c 'import imp,sys;print("%s.pyo"%imp.get_tag()) if sys.version_info.minor<5 else print("{1}{2}".format(*imp.util.cache_from_source("",optimization=1).rpartition(imp.get_tag())))'`
492 AC_SUBST(PYTHON3_CACHE_OPT1_EXT)
493 AC_MSG_RESULT([$PYTHON3_CACHE_OPT1_EXT])
495 BINDINGS="$BINDINGS python3"
497 AC_MSG_RESULT([no (install python3-dev or python3-devel package or similar)])
498 if test yes = "$with_python3" ; then
499 AC_MSG_ERROR([Python.h not found])
506 if test x$USE_MAINTAINER_MODE = xyes; then
507 dnl Need python in maintainer mode to run doxy2swig.py.
508 dnl Either Python 2 or 3 is OK for this.
509 if test -n "$PYTHON2" ; then
511 elif test -n "$PYTHON3" ; then
514 AC_PATH_PROGS(PYTHON, [python2 python python3], [])
516 test -z "$PYTHON" && AC_MSG_ERROR([python is required in maintainer mode])
519 if test no != "$with_php" ; then
520 dnl See comment for AC_PATH_PROGS(SWIG, ...).
521 if test -n "$PHP_CONFIG" ; then
522 AC_PATH_PROGS(PHP_CONFIG, ["$PHP_CONFIG"], [])
524 if test -z "$PHP_CONFIG" ; then
525 AC_PATH_PROGS(PHP_CONFIG, [php-config5 php-config], [])
527 AC_ARG_VAR(PHP_CONFIG, [php-config utility for PHP5])
528 AC_ARG_VAR(PHP, [PHP5 interpreter (optional - only needed to run PHP5 testsuite with)])
529 if test -n "$PHP_CONFIG" ; then
530 AC_MSG_CHECKING([$PHP_CONFIG version])
531 version=`$PHP_CONFIG --version 2>/dev/null`
533 [[01234].*|5.[01234].*|[6789].*])
534 AC_MSG_RESULT([$version (not supported, PHP5 bindings need PHP 5.x where x >= 5)])
535 if test yes = "$with_php" ; then
536 AC_MSG_ERROR([$PHP_CONFIG reports version $version - PHP5 bindings need PHP 5.x where x >= 5])
541 AC_MSG_RESULT([$version])
542 PHP_MAJOR_VERSION=`echo "$version"|cut -d. -f1`
545 AC_SUBST(PHP_MAJOR_VERSION)
547 if test no != "$with_php" ; then
548 AC_MSG_CHECKING([for PHP5 extension directory])
549 if test -z "$PHP_EXTENSION_DIR" ; then
550 PHP_EXTENSION_DIR=`$PHP_CONFIG --extension-dir`
552 AC_MSG_RESULT([$PHP_EXTENSION_DIR])
553 AC_ARG_VAR(PHP_EXTENSION_DIR, [Directory to install PHP5 extensions in])
556 if test no != "$with_php" ; then
557 PHP_INC=`$PHP_CONFIG --includes`
559 save_CPPFLAGS=$CPPFLAGS
560 CPPFLAGS="$CPPFLAGS $PHP_INC"
561 dnl One of SGI's SuSE boxes has php-config but no headers.
562 AC_CHECK_HEADER(zend.h, [], [
563 if test yes = "$with_php" ; then
564 AC_MSG_ERROR(['$PHP_CONFIG --includes' reports '$PHP_INC' but zend.h can't be included from there])
567 CPPFLAGS=$save_CPPFLAGS
570 if test no != "$with_php" ; then
571 if test x"$PHP" = x ; then
572 AC_MSG_CHECKING([for PHP5 interpreter])
573 dnl PHP5's php-config supports --php-binary, so just use that.
574 PHP=`$PHP_CONFIG --php-binary 2>/dev/null`
575 if test x"$PHP" != x ; then
576 if $PHP -r 'exit(0);' 2> /dev/null ; then
577 if $PHP -r 'exit(PHP_MAJOR_VERSION==5?0:1);' 2> /dev/null ; then
578 AC_MSG_RESULT([$PHP])
580 dnl We get /usr/bin/php on Debian, which might be PHP7:
581 dnl https://bugs.debian.org/819139
582 if ${PHP}5 -r 'exit(PHP_MAJOR_VERSION==5?0:1);' 2> /dev/null ; then
584 AC_MSG_RESULT([$PHP])
586 AC_MSG_RESULT([no ($PHP isn't PHP5)])
591 AC_MSG_RESULT([no ($PHP does not work)])
595 AC_MSG_RESULT([not found])
598 AC_PATH_PROGS(PHP, ["$PHP"], [])
600 if test x"$PHP" = x ; then
601 AC_MSG_WARN([No PHP5 interpreter found - PHP5 bindings tests will be skipped])
602 dnl The skiptest script just returns exit code 77.
603 PHP='$(top_srcdir)/skiptest'
605 AC_MSG_CHECKING([for PHP5 path separator])
606 PHP_PATH_SEPARATOR=`$PHP -r 'echo PATH_SEPARATOR;'`
607 AC_SUBST([PHP_PATH_SEPARATOR])
608 AC_MSG_RESULT([$PHP_PATH_SEPARATOR])
613 dnl This is a bit of an informed guess, pending more information from
614 dnl someone who actually has mingw and wants to build the PHP bindings
616 PHP_LIBS="-L`$PHP_CONFIG --prefix` -lphp${PHP_MAJOR_VERSION}ts" ;;
618 PHP_LIBS="-lphp${PHP_MAJOR_VERSION}lib" ;;
623 BINDINGS="$BINDINGS php"
628 if test no != "$with_php7" ; then
629 dnl See comment for AC_PATH_PROGS(SWIG, ...).
630 if test -n "$PHP_CONFIG7" ; then
631 AC_PATH_PROGS(PHP_CONFIG7, ["$PHP_CONFIG7"], [])
633 if test -z "$PHP_CONFIG7" ; then
634 AC_PATH_PROGS(PHP_CONFIG7, [php-config7.1 php-config7.0 php-config], [])
636 AC_ARG_VAR(PHP_CONFIG7, [php-config utility for PHP7])
637 AC_ARG_VAR(PHP7, [PHP7 interpreter (optional - only needed to run PHP7 testsuite with)])
638 if test -n "$PHP_CONFIG7" ; then
639 AC_MSG_CHECKING([$PHP_CONFIG7 version])
640 version=`$PHP_CONFIG7 --version 2>/dev/null`
643 AC_MSG_RESULT([$version (not supported, PHP7 bindings need PHP >= 7.0)])
644 if test yes = "$with_php7" ; then
645 AC_MSG_ERROR([$PHP_CONFIG7 reports version $version - PHP7 bindings need >= 7.0])
650 AC_MSG_RESULT([$version])
651 PHP7_MAJOR_VERSION=`echo "$version"|cut -d. -f1`
654 AC_SUBST(PHP7_MAJOR_VERSION)
656 if test no != "$with_php7" ; then
657 AC_MSG_CHECKING([for PHP7 extension directory])
658 if test -z "$PHP7_EXTENSION_DIR" ; then
659 PHP7_EXTENSION_DIR=`$PHP_CONFIG7 --extension-dir`
661 AC_MSG_RESULT([$PHP7_EXTENSION_DIR])
662 AC_ARG_VAR(PHP7_EXTENSION_DIR, [Directory to install PHP7 extensions in])
665 if test no != "$with_php7" ; then
666 PHP7_INC=`$PHP_CONFIG7 --includes`
670 if test no != "$with_php7" ; then
671 if test x"$PHP7" = x ; then
672 AC_MSG_CHECKING([for PHP7 interpreter])
673 dnl PHP7's php-config supports --php-binary, so just use that.
674 PHP7=`$PHP_CONFIG7 --php-binary 2>/dev/null`
675 if test x"$PHP7" != x ; then
676 if $PHP7 -r 'exit(0);' 2> /dev/null ; then
677 if $PHP7 -r 'exit(PHP_MAJOR_VERSION==7?0:1);' 2> /dev/null ; then
678 AC_MSG_RESULT([$PHP7])
680 AC_MSG_RESULT([no ($PHP7 isn't PHP7)])
684 AC_MSG_RESULT([no ($PHP7 does not work)])
688 AC_MSG_RESULT([not found])
691 AC_PATH_PROGS(PHP7, ["$PHP7"], [])
693 if test x"$PHP7" = x ; then
694 AC_MSG_WARN([No PHP7 interpreter found - PHP7 bindings tests will be skipped])
695 dnl The skiptest script just returns exit code 77.
696 PHP7='$(top_srcdir)/skiptest'
698 AC_MSG_CHECKING([for PHP7 path separator])
699 PHP7_PATH_SEPARATOR=`$PHP7 -r 'echo PATH_SEPARATOR;'`
700 AC_SUBST([PHP7_PATH_SEPARATOR])
701 AC_MSG_RESULT([$PHP7_PATH_SEPARATOR])
706 dnl This is a bit of an informed guess, pending more information from
707 dnl someone who actually has mingw and wants to build the PHP bindings
709 PHP7_LIBS="-L`$PHP_CONFIG7 --prefix` -lphp${PHP7_MAJOR_VERSION}ts" ;;
711 PHP7_LIBS="-lphp${PHP7_MAJOR_VERSION}lib" ;;
716 BINDINGS="$BINDINGS php7"
721 if test no != "$with_tcl" ; then
722 dnl The documented minimum requirement is Tcl 8.5. Older versions may work,
723 dnl but we don't test with them regularly, and they are no longer supported
724 dnl upstream. Also ::tcl::pckconfig was added in Tcl 8.5, which makes the
725 dnl tests below simpler and more reliable.
727 dnl If you really want to build with an older version, run configure with
728 dnl a lower tcl_min and specify at least TCL_INC explicitly:
730 dnl ./configure tcl_min=8.4 TCL_INC=/usr/include/tcl8.4
732 dnl We definitely need at least Tcl 8.1 for TCL_STUBS.
734 AC_PATH_PROGS(TCLSH, ["${TCLSH-tclsh}"], [])
735 AC_ARG_VAR(TCLSH, [Tcl interpreter])
736 if test -n "$TCLSH" ; then
737 AC_MSG_CHECKING([$TCLSH version])
738 if echo 'if {$tcl_version < '"$tcl_min"' } { exit 1 }'|$TCLSH 2> /dev/null ; then
739 tcl_version=`echo 'puts "$tcl_version"'|$TCLSH`
740 AC_MSG_RESULT([$tcl_version])
742 AC_ARG_VAR(TCL_LIB, [Directory to install Tcl files into])
743 if test -z "$TCL_LIB" ; then
744 [TCL_LIB=`echo 'foreach d $tcl_pkgPath {if {![regexp {/share(/|$)} $d]} {break}};puts $d'|$TCLSH`]
748 AC_ARG_VAR([TCL_INC], [Directory to include for Tcl headers])
749 if test -z "$TCL_INC" ; then
750 dnl ::tcl::pkgconfig was added in Tcl 8.5.
751 [TCL_INC=`echo 'puts [::tcl::pkgconfig get includedir,runtime]'|$TCLSH 2> /dev/null`]
754 dnl Check that the headers are there (the tcl8.N-dev package
755 dnl may not be installed).
757 AC_MSG_CHECKING([for tcl.h from Tcl $tcl_version])
758 if test x"$TCL_INC" != x && test -f "$TCL_INC/tcl.h" ; then
759 tcl_hdr_version=`awk '($1 == "#define" && $2 == "TCL_VERSION") {print $3}' "$TCL_INC/tcl.h"|sed 's/"//g'`
760 if test x"$tcl_hdr_version" = x"$tcl_version" ; then
761 AC_MSG_RESULT([$TCL_INC/tcl.h])
762 BINDINGS="$BINDINGS tcl8"
763 if test x"$TCL_INC" != x"/usr/include" ; then
764 TCL_CPPFLAGS="-I$TCL_INC"
767 AC_MSG_RESULT([not found])
768 if test yes = "$with_tcl" ; then
769 AC_MSG_ERROR([Found tcl.h from version $tcl_hdr_version, not $tcl_version - specify TCL_INC on configure command line])
774 AC_MSG_RESULT([not found])
775 if test yes = "$with_tcl" ; then
776 AC_MSG_ERROR([Can't find tcl.h])
781 if test -n "$TCLSH" ; then
782 dnl Cygwin needs to link with -ltcl8.5 or similar.
786 AC_CHECK_LIB([tcl$tcl_version], [Tcl_Init],
787 [TCL_LIBS="-ltcl$tcl_version"],
788 [AC_MSG_ERROR([libtcl$tcl_version not found])])
791 dnl ::tcl::pkgconfig was added in Tcl 8.5, but prior to 8.6 it isn't
792 dnl necessary to link against -ltclstub anyway.
793 [tcl_libdir_runtime=`echo 'puts [::tcl::pkgconfig get libdir,runtime]'|$TCLSH 2> /dev/null`]
794 if test -n "$tcl_libdir_runtime" ; then
795 for x in "/tcl$tcl_version" "" ; do
796 TCLCONFIG_SH=$tcl_libdir_runtime$x/tclConfig.sh
797 if test -r "$TCLCONFIG_SH" ; then
798 eval "`sed 's/^TCL_STUB_LIB_SPEC=/TCL_LIBS=/p;d' $TCLCONFIG_SH`"
803 TCL_CPPFLAGS="$TCL_CPPFLAGS -DUSE_TCL_STUBS" ;;
807 AC_SUBST(TCL_CPPFLAGS)
810 AC_MSG_RESULT([< $tcl_min (too old)])
811 if test yes = "$with_tcl" ; then
812 AC_MSG_ERROR([$TCLSH too old (Tcl $tcl_min or newer required)])
816 if test yes = "$with_tcl" ; then
817 AC_MSG_ERROR([tclsh not found])
822 if test no != "$with_csharp" ; then
824 AC_ARG_VAR(CSC, [CSharp compiler command])
825 if test -n "$CSC" ; then
826 AC_PATH_PROGS(CSC, ["$CSC"], [])
828 if test -z "$CSC" ; then
829 dnl First we try cli-csc and mono-csc, which are used by Debian and Ubuntu
830 dnl as "alternatives" which can be mapped to the CSharp compiler the admin
832 AC_PATH_PROGS(CSC, [cli-csc mono-csc], [])
833 if test -z "$CSC" ; then
834 dnl mcs is the Mono CSharp compiler, which is a unified compiler
835 dnl available from Mono 2.11 (and also the compiler in Mono 1.0, but
836 dnl that's no longer relevant).
837 AC_PATH_PROGS(CSC, [mcs], [])
838 if test -n "$CSC" ; then
839 dnl There are other tools called mcs (such as /usr/bin/mcs on Tru64),
840 dnl so we check that the mcs we found understands --version which is
841 dnl sufficient to distinguish mono's mcs from the Tru64 one.
842 AC_MSG_CHECKING([whether $CSC is from GNU Mono])
843 if (exec >&5 2>&5;$CSC --version </dev/null;exit $?) ; then
848 csc_note="$csc_note (found different mcs program)"
852 if test -z "$CSC" ; then
853 dnl csc is the Microsoft CSharp compiler.
854 AC_PATH_PROGS(CSC, [csc], [])
855 if test -n "$CSC" ; then
856 dnl Chicken (the Scheme-to-C compiler) includes a tool called csc so we
857 dnl check if the output from "csc -version" includes the word chicken
858 dnl which is sufficient to distinguish Chicken's csc from Microsoft's
860 AC_MSG_CHECKING([whether $CSC is for CSharp])
861 if $CSC -version 2>/dev/null|grep chicken > /dev/null ; then
864 csc_note="$csc_note (found Chicken csc program)"
872 if test -n "$CSC" ; then
873 AC_ARG_VAR(GACUTIL, [gacutil utility to use for CSharp bindings])
874 if test -n "$GACUTIL" ; then
875 AC_PATH_PROGS(GACUTIL, ["$GACUTIL"], [])
877 if test -z "$GACUTIL" ; then
878 AC_PATH_PROGS(GACUTIL, [cli-gacutil gacutil], [])
881 AC_ARG_VAR(SN, [sn utility to use for CSharp bindings])
882 if test -n "$SN" ; then
883 AC_PATH_PROGS(SN, ["$SN"], [])
885 if test -z "$SN" ; then
886 AC_PATH_PROGS(SN, [cli-sn sn], [])
888 if test -n "$GACUTIL" -a -n "$SN" ; then
889 AC_MSG_CHECKING([whether the CSharp compiler works])
890 [echo 'class conftest { public static void Main() { System.Console.WriteLine("OK"); } }' > conftest.cs]
891 if (exec >&5 2>&5;$CSC /out:conftest.exe conftest.cs;exit $?) ; then
893 AC_MSG_CHECKING([whether CSharp programs can just be run])
894 if test OK = "`./conftest.exe 2> /dev/null`" ; then
899 AC_PATH_PROGS(CLI, ["${CLI-cli}"], [])
900 if test -z "$CLI" ; then
901 AC_PATH_PROGS(CLI, [mono ilrun], [])
903 AC_ARG_VAR(CLI, [CSharp bytecode interpreter (optional - only needed to run CSharp testsuite with)])
904 if test -n "$CLI" ; then
905 AC_MSG_CHECKING([whether $CLI can run CSharp programs])
906 if test OK = "`$CLI ./conftest.exe 2> /dev/null`" ; then
910 AC_MSG_RESULT([no - CSharp tests will be skipped])
911 RUN_CSHARP='\$(top_srcdir)/skiptest'
914 AC_MSG_RESULT([not found - CSharp tests will be skipped])
915 RUN_CSHARP='\$(top_srcdir)/skiptest'
920 AC_MSG_CHECKING([for extra flags for $GACUTIL])
921 GACUTIL_FLAGS='/package $(ASSEMBLY) /gacdir $(libdir) /root $(DESTDIR)$(libdir)'
922 dnl Microsoft's gacutil accepts fewer options than Mono's
923 $GACUTIL /\?|grep '\<Mono\>' >/dev/null || GACUTIL_FLAGS=
924 AC_SUBST([GACUTIL_FLAGS])
925 if test -z "$GACUTIL_FLAGS" ; then
928 AC_MSG_RESULT([$GACUTIL_FLAGS])
931 BINDINGS="$BINDINGS csharp"
934 if test yes = "$with_csharp" ; then
935 AC_MSG_ERROR([CSharp compiler $CSC doesn't work])
939 if test yes = "$with_csharp" ; then
940 if test -z "$GACUTIL" ; then
941 AC_MSG_ERROR([Mono gacutil not found])
942 elif test -z "$SN" ; then
943 AC_MSG_ERROR([Mono sn not found])
948 if test yes = "$with_csharp" ; then
949 AC_MSG_ERROR([CSharp compiler not found$csc_note])
955 if test no != "$with_java" ; then
956 AC_PATH_PROGS(JAVA, ["${JAVA-java}"], [],
957 [${JAVA_HOME+$JAVA_HOME/bin:}${JDK_HOME+$JDK_HOME/bin:}$PATH])
958 AC_PATH_PROGS(JAVAC, ["${JAVAC-javac}"], [],
959 [${JAVA_HOME+$JAVA_HOME/bin:}${JDK_HOME+$JDK_HOME/bin:}$PATH])
960 AC_PATH_PROGS(JAR, ["${JAR-jar}"], [],
961 [${JAVA_HOME+$JAVA_HOME/bin:}${JDK_HOME+$JDK_HOME/bin:}$PATH])
962 AC_ARG_VAR(JAVA, [Java interpreter command])
963 AC_ARG_VAR(JAVAC, [Java compiler command])
964 AC_ARG_VAR(JAR, [java jar utility])
965 AC_ARG_VAR(JAVA_HOME, [Pathname of the directory where the JDK is installed])
966 AC_ARG_VAR(JDK_HOME, [Pathname of the directory where the JDK is installed])
967 AC_ARG_VAR(JNI_INCLUDE_DIR, [Pathname of the directory where jni.h is installed])
968 if test -n "$JAVA" -a -n "$JAVAC" -a -n "$JAR" ; then
970 dnl The JNI library *requires* "Java 2", which is 1.2 or better.
972 dnl So checking for jni.h presumably implicitly checks we have "Java 2".
973 dnl Note: jni.h #defines JNI_VERSION_1_[12468] (but not 3, 5 or 7 it seems).
974 dnl So we could check for one of these if we want to check for a particular
977 AC_CHECK_HEADER([jni.h], [java_ok=yes], [
978 dnl We need to look for jni.h in /usr/lib/jvm/java-gcj/include on some
979 dnl Debian and Ubuntu boxes at least. And on Mac OS X, jni.h lives
980 dnl in /System/Library/Frameworks/JavaVM.framework/Headers.
981 SAVE_CPPFLAGS=$CPPFLAGS
983 dnl Avoid endlessly traversing if there's a symlink loop.
984 for count in 1 2 3 4 5 6 7 8 9 ; do
985 r=`readlink "$real_javac"`
986 test -n "$r" || break
989 dnl Translate ".../bin/javac" to ".../include".
990 [rel_jnidir=`echo "$real_javac"|sed 's!/[^/]*/[^/]*$!/include!'`]
993 ${JAVA_HOME+"$JAVA_HOME/include"} \
994 ${JDK_HOME+"$JDK_HOME/include"} \
996 /System/Library/Frameworks/JavaVM.framework/Headers ; do
997 CPPFLAGS="$SAVE_CPPFLAGS -I$jnidir"
998 AC_MSG_CHECKING([for jni.h in $jnidir])
999 if test -f "$jnidir/jni.h" ; then
1000 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <jni.h>]])], [java_ok=yes])
1001 if test yes = $java_ok ; then
1002 AC_MSG_RESULT([yes])
1003 JAVA_CPPFLAGS=-I$jnidir
1007 dnl For OpenJDK (and maybe others) we have to specify an extra -I
1008 dnl option for an OS-specific subdirectory containing a "jni_md.h"
1009 dnl header which is included by "jni.h". Sadly we seem to need to
1010 dnl hardcode a mapping for these platform names - the list below
1011 dnl was determined by inspecting the source code of OpenJDK 8.
1015 jni_host_os=linux ;;
1017 jni_host_os=solaris ;;
1018 mingw* | pw32* | cygwin*)
1019 jni_host_os=win32 ;;
1021 jni_host_os=darwin ;;
1027 if test -n "$jni_host_os" ; then
1028 CPPFLAGS="$CPPFLAGS -I$jnidir/$jni_host_os"
1029 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <jni.h>]])], [java_ok=yes])
1030 if test yes = $java_ok ; then
1031 AC_MSG_RESULT([yes, requires additional -I$jnidir/$jni_host_os])
1032 JAVA_CPPFLAGS="-I$jnidir -I$jnidir/$jni_host_os"
1036 AC_MSG_RESULT([found, but not usable])
1038 CPPFLAGS="$SAVE_CPPFLAGS -I$jnidir"
1043 CPPFLAGS=$SAVE_CPPFLAGS
1044 test noyes = $java_ok$with_java && AC_MSG_ERROR([jni.h not found])
1046 AC_SUBST(JAVA_CPPFLAGS)
1047 if test yes = $java_ok ; then
1048 AC_MSG_CHECKING([for Java path separator])
1049 [echo 'public class conftest { public static void main(String[] args) { System.out.println(System.getProperty("path.separator")); } }' > conftest.java]
1050 if (exec >&5 2>&5;$JAVAC conftest.java;exit $?) ; then
1051 JAVA_PATHSEP=`$JAVA conftest 2>&5`
1052 AC_SUBST(JAVA_PATHSEP)
1053 if test -n "$JAVA_PATHSEP" ; then
1054 AC_MSG_RESULT($JAVA_PATHSEP)
1055 BINDINGS="$BINDINGS java"
1057 dnl If -Xcheck:jni is supported then run tests with it.
1059 dnl ... except that with OpenJDK 8 and 9 -Xcheck:jni seems to report
1060 dnl false positives and so can't usefully be turned on in this
1061 dnl situation. Recheck this with future versions.
1062 dnl AC_MSG_CHECKING([for $JAVA -Xcheck:jni option])
1063 dnl JAVA_PATHSEP2=`$JAVA conftest 2>&5`
1064 JAVA_CHECK_JNI_OPTION=
1065 dnl if test "$JAVA_PATHSEP" = "$JAVA_PATHSEP2" ; then
1066 dnl JAVA_CHECK_JNI_OPTION=-Xcheck:jni
1067 dnl AC_MSG_RESULT([yes])
1069 dnl AC_MSG_RESULT([no])
1071 AC_SUBST([JAVA_CHECK_JNI_OPTION])
1073 AC_MSG_RESULT([failed to run test program])
1077 AC_MSG_RESULT([failed to compile test program])
1080 if test no = "$java_ok" ; then
1081 test yes = "$with_java" && AC_MSG_ERROR([Couldn't compile and run a simple Java test program])
1085 if test yes = "$with_java" ; then
1086 if test -z "$JAVA" ; then
1087 AC_MSG_ERROR([java not found])
1088 elif test -z "$JAVAC" ; then
1089 AC_MSG_ERROR([javac not found])
1090 elif test -z "$JAR" ; then
1091 AC_MSG_ERROR([jar not found])
1097 if test no != "$with_ruby" ; then
1098 dnl See comment for AC_PATH_PROGS(SWIG, ...).
1099 if test -n "$RUBY" ; then
1100 AC_PATH_PROGS(RUBY, ["$RUBY"], [])
1102 AC_PATH_PROGS(RUBY, [ruby], [])
1104 AC_ARG_VAR(RUBY, [Ruby interpreter])
1105 if test -n "$RUBY" ; then
1106 dnl Require Ruby 2.1 or newer.
1107 AC_MSG_CHECKING([$RUBY version])
1108 dnl RUBY_VERSION works with 1.6. Once we've checked we have at least 1.8
1109 dnl we can safely use RbConfig below (RbConfig requires Ruby 1.8).
1110 version=`$RUBY -e 'print RUBY_VERSION' 2>/dev/null`
1113 AC_MSG_RESULT([\$RUBY -e 'print RUBY_VERSION' didn't work])
1114 if test yes = "$with_ruby" ; then
1115 AC_MSG_ERROR([Working Ruby interpreter not found])
1120 AC_MSG_RESULT([$version (too old)])
1121 if test yes = "$with_ruby" ; then
1122 AC_MSG_ERROR([Only Ruby 2.1 or newer is supported ($RUBY is $version)])
1127 if test -n "$RUBY" ; then
1128 AC_MSG_RESULT([$version])
1129 AC_ARG_VAR(RUBY_INC, [Directory where ruby.h can be found])
1130 if test -z "$RUBY_INC" ; then
1131 dnl Ruby 1.9 added rubyhdrdir.
1132 [RUBY_INC=`$RUBY -rrbconfig -e 'print RbConfig::CONFIG["rubyhdrdir"]'`]
1135 dnl Check that ruby.h is there, which is a good way to check that
1136 dnl the appropriate ruby-dev package has been installed.
1137 AC_MSG_CHECKING([for $RUBY_INC/ruby.h])
1138 if test -f "$RUBY_INC/ruby.h" ; then
1141 AC_ARG_VAR(RUBY_INC_ARCH, [Directory where ruby/config.h can be found])
1142 if test -z "$RUBY_INC_ARCH" ; then
1143 dnl Ruby 2.0 and later have rubyarchhdrdir.
1144 [RUBY_INC_ARCH=`$RUBY -rrbconfig -e 'print RbConfig::CONFIG["rubyarchhdrdir"]'`]
1146 AC_SUBST(RUBY_INC_ARCH)
1148 AC_ARG_VAR(RUBY_LIB, [Directory to install ruby files into])
1149 if test -z "$RUBY_LIB" ; then
1150 [RUBY_LIB=`$RUBY -rrbconfig -e 'print RbConfig::CONFIG["sitelibdir"]'`]
1154 AC_ARG_VAR(RUBY_LIB_ARCH, [Directory to install ruby binary modules into])
1155 if test -z "$RUBY_LIB_ARCH" ; then
1156 [RUBY_LIB_ARCH=`$RUBY -rrbconfig -e 'print RbConfig::CONFIG["sitearchdir"]'`]
1158 AC_SUBST(RUBY_LIB_ARCH)
1161 if test unsupported = "$allow_undefined_flag" ; then
1162 dnl For Microsoft Windows and a few other platforms.
1163 [RUBY_LIBS=`$RUBY -rrbconfig -e 'print RbConfig::CONFIG["LIBRUBYARG"]'`]
1167 dnl rdoc is included as part of the Ruby core distribution, so run it
1168 dnl at build time rather shipping the rather large generated output in
1169 dnl our source tarball.
1170 if test -n "$RDOC" ; then
1171 AC_PATH_PROGS(RDOC, ["$RDOC"], [])
1173 dnl Try replace the *last* 'ruby' with 'rdoc'.
1174 rdoc_best_guess=`echo "$RUBY"|sed 's,\(.*\)ruby,\1rdoc,'`
1175 AC_PATH_PROGS(RDOC, ["$rdoc_best_guess"], [])
1176 if test -z "$RDOC"; then
1177 AC_PATH_PROGS(RDOC, [rdoc], [])
1180 if test -n "$RDOC"; then
1181 BINDINGS="$BINDINGS ruby"
1184 AC_MSG_RESULT([no (install ruby-dev or ruby-devel package or similar)])
1185 if test yes = "$with_ruby" ; then
1186 AC_MSG_ERROR([ruby.h not found])
1189 RUBY_DLEXT=`$RUBY -rrbconfig -e 'print RbConfig::CONFIG[["DLEXT"]]'`
1190 AC_SUBST(RUBY_DLEXT)
1195 if test no != "$with_perl" ; then
1196 AC_PATH_PROGS(PERL, ["${PERL-perl}"], [])
1197 AC_ARG_VAR(PERL, [perl interpreter])
1198 if test -n "$PERL" ; then
1199 AC_PATH_PROGS(PROVE, ["${PROVE-prove}"], [])
1200 AC_ARG_VAR(PROVE, [Perl Test::Harness test runner])
1201 if test x"$PROVE" = x ; then
1202 AC_MSG_WARN([Perl 'prove' tool not found - Perl bindings tests will be skipped])
1203 dnl The skiptest script just returns exit code 77.
1204 PROVE='$(top_srcdir)/skiptest'
1207 if test -z "$PERL_INC" ; then
1208 PERL_INC=`$PERL -MConfig -e 'print $Config{archlibexp}, "/CORE"'`
1212 AC_ARG_VAR(PERL_ARCH, [Directory to install architecture-dependent perl files into])
1213 if test -z "$PERL_ARCH" ; then
1214 PERL_ARCH=`$PERL -MConfig -e 'print $Config{installsitearch}'`
1218 AC_ARG_VAR(PERL_LIB, [Directory to install architecture-independent perl files into])
1219 if test -z "$PERL_LIB" ; then
1220 PERL_LIB=`$PERL -MConfig -e 'print $Config{installsitelib}'`
1224 AC_ARG_VAR(PERL_SO, [Extension for compiled Perl modules])
1225 if test -z "$PERL_SO" ; then
1226 PERL_SO=`$PERL -MConfig -e 'print ".", $Config{dlext}'`
1230 if test -z "$PERL_XAPIAN_VERSION" ; then
1231 dnl snapshot versions look like 1.2.3_git123 or 1.2.3_svn14971
1232 case $PACKAGE_VERSION in
1234 PERL_XAPIAN_VERSION=`echo "$PACKAGE_VERSION"|sed 's/_git/./'` ;;
1236 PERL_XAPIAN_VERSION=`echo "$PACKAGE_VERSION"|sed 's/_svn/./'` ;;
1238 PERL_XAPIAN_VERSION=$PACKAGE_VERSION.0 ;;
1241 AC_SUBST(PERL_XAPIAN_VERSION)
1243 BINDINGS="$BINDINGS perl"
1245 if test yes = "$with_perl" ; then
1246 AC_MSG_ERROR([perl not found])
1251 if test no != "$with_lua" ; then
1252 AC_PATH_PROGS(LUA, ["${LUA-lua}"], [])
1253 AC_ARG_VAR(LUA, [lua interpreter])
1254 if test -n "$LUA" ; then
1255 dnl We need Lua 5.1 or later.
1256 AC_MSG_CHECKING([$LUA version])
1257 lua_version=`$LUA -e 'print(_VERSION)' | cut -f 2 -d ' ' 2>&AS_MESSAGE_LOG_FD`
1259 case $lua_version in
1260 [[01234]].*|5.0|5.0.*)
1261 AC_MSG_RESULT([$lua_version < 5.1 (too old)])
1262 if test yes = "$with_lua" ; then
1263 AC_MSG_ERROR([$LUA too old (Lua 5.1 or newer required)])
1268 AC_MSG_RESULT([\$LUA -e 'print(_VERSION)' | cut -f 2 -d ' ' didn't work])
1270 if test yes = "$with_lua" ; then
1271 AC_MSG_ERROR([Working Lua interpreter not found])
1277 if test -n "$LUA" ; then
1278 AC_MSG_RESULT([$lua_version])
1280 AC_ARG_VAR([LUA_LIB], [Directory to install compiled Lua modules into])
1281 AC_ARG_VAR([LUA_SO], [Extension for compiled Lua modules (e.g. LUA_SO=.so)])
1282 AC_MSG_CHECKING([for directory to install compiled Lua modules into])
1283 if test -z "$LUA_LIB" -o -z "$LUA_SO" ; then
1284 lua_cpath=`$LUA -e 'require("package") print(package.cpath)'`
1285 dnl Look for the first absolute path in lua_cpath which has leaf
1286 dnl "?.<ext>" and put the directory part into lua_lib and <ext> into
1287 dnl lua_so. If LUA_SO was specified by the user, only consider
1288 dnl entries where <ext> matches LUA_SO.
1293 [lua_so_pat='[a-zA-Z][a-zA-Z]*'] ;;
1295 dnl If LUA_SO has a leading '.', remove it.
1296 lua_so_pat=`AS_ECHO("$LUA_SO")|sed 's/^\.//'` ;;
1298 dnl If LUA_SO was specified without a leading '.', add one to the
1299 dnl value substituted into Makefile.in.
1304 while test x"$lua_cpath" != x ; do
1305 [lua_lib=`expr X"$lua_cpath" : X'\([^;]*\)'`]
1306 lua_so=.`expr X"$lua_lib" : X'/.*/?\.\('"$lua_so_pat"'\)$'`
1309 dnl If someone has foolishly put ?.lua in cpath, ignore them.
1313 lua_lib=`expr X"$lua_lib" : X'\(/.*\)/?\.'"$lua_so_pat"'$'`
1316 [lua_cpath=`expr X"$lua_cpath" : X'[^;]*;*\(.*\)'`]
1318 test -n "$LUA_LIB" || LUA_LIB=$lua_lib
1319 test -n "$LUA_SO" || LUA_SO=$lua_so
1321 if test -z "$LUA_LIB"; then
1322 AC_MSG_RESULT([not found])
1324 AC_MSG_RESULT([$LUA_LIB])
1328 AC_MSG_CHECKING([for extension to use for compiled Lua modules])
1329 if test -z "$LUA_SO"; then
1330 AC_MSG_RESULT([not found])
1332 AC_MSG_RESULT([$LUA_SO])
1336 AC_MSG_CHECKING([for Lua header files])
1337 AC_ARG_VAR([LUA_INC], [Directory to include for lua headers])
1338 if test -z "$LUA_INC" ; then
1339 dirs="/usr/include/lua$lua_version /usr/local/include/lua$lua_version"
1341 if test -r "$i/lua.h"; then
1348 if test -z "$LUA_INC" ; then
1349 AC_MSG_RESULT([not found])
1351 AC_MSG_RESULT([$LUA_INC])
1352 BINDINGS="$BINDINGS lua"
1353 LUA_CPPFLAGS="-I$LUA_INC"
1355 AC_SUBST([LUA_CPPFLAGS])
1358 if test yes = "$with_lua" ; then
1359 AC_MSG_ERROR([lua not found])
1367 *python*) dnl Matches python and/or python3
1368 dnl C++11 has thread_local
1369 dnl GCC and some others have __thread
1370 dnl MSVC and some others have __declspec(thread)
1371 AC_MSG_CHECKING([for thread-local storage qualifier])
1372 AC_ARG_VAR([THREAD_LOCAL], [thread-local storage qualifier])
1373 if test -z "$THREAD_LOCAL" ; then
1374 for t in thread_local __thread '__declspec(thread)' ; do
1375 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[static $t void * p;]])],
1376 [THREAD_LOCAL=$t; break])
1379 if test -z "$THREAD_LOCAL" ; then
1380 AC_MSG_RESULT([unknown, disabling thread-local support])
1382 AC_MSG_RESULT([$THREAD_LOCAL])
1383 AC_DEFINE_UNQUOTED([THREAD_LOCAL], [$THREAD_LOCAL], [Thread local storage qualifier (undefined if no TLS)])
1388 dnl Set flags to control warnings (enable more, or disable annoying ones)
1389 dnl and other compiler specific flags.
1391 if test yes = "$GXX" ; then
1392 dnl Python itself is compiled with -fno-strict-aliasing, and it appears
1393 dnl it's safest to follow this lead when compiling the SWIG generated
1394 dnl interface code. E.g.:
1395 dnl http://article.gmane.org/gmane.comp.gcc.devel/74692
1396 dnl The code SWIG generates for other languages seems to have similar
1397 dnl issues too, so just turn this on for all of them.
1399 dnl There's no need to check -fno-strict-aliasing is supported as it works
1400 dnl with GCC 2.95 and we don't support anything older.
1401 SWIG_CXXFLAGS="-fno-strict-aliasing"
1403 dnl We need to explicitly link against -lstdc++ on OpenBSD (discovered
1404 dnl on OpenBSD 3.7 with GCC 3.3.5 but this appears to be due to a
1405 dnl deliberate decision on the part of OpenBSD developers). Luckily
1406 dnl we can just always specify -lstdc++ explicitly if GCC is the
1407 dnl compiler and libtool will eliminate the duplicate on other
1409 XAPIAN_LIBS="$XAPIAN_LIBS -lstdc++"
1411 dnl Intel's C++ compiler is identified as "GXX" by autoconf's test - check
1412 dnl which we actually have.
1414 [#ifdef __INTEL_COMPILER
1419 dnl Intel's compiler:
1421 dnl -w1 stops the avalanche of uninteresting "remark" messages.
1422 dnl -wd... disables warnings which don't have good code workarounds.
1424 dnl Swig generated code gives lots of unused and uninitialized warnings.
1425 dnl They're non-harmful, so suppress them.
1426 SWIG_CXXFLAGS="$SWIG_CXXFLAGS -Wall -w1 -wd177,1572"
1431 dnl Swig generated code gives lots of unused and uninitialized warnings.
1432 dnl They're non-harmful, so suppress them.
1433 SWIG_CXXFLAGS="$SWIG_CXXFLAGS -Wall -Wno-unused -Wno-uninitialized"
1436 if test no != "$enable_visibility"; then
1437 dnl GCC doesn't support symbol visibility on all platforms (e.g. it isn't
1439 AC_MSG_CHECKING([if $CXX -fvisibility=hidden works])
1440 if echo 'int bar() __attribute__((visibility("default"))); int foo() {return 42;}'|$CXX -Werror -fvisibility=hidden -c -oconftest.o -xc++ - >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
1441 AC_MSG_RESULT([yes])
1442 SWIG_CXXFLAGS="$SWIG_CXXFLAGS -fvisibility=hidden"
1448 AC_SUBST(SWIG_CXXFLAGS)
1450 dnl Restore CXXFLAGS to those the user specified or autoconf defaulted to.
1451 CXXFLAGS=$save_CXXFLAGS
1453 dnl Required for auto regeneration to work in a combined maintainer-mode tree.
1454 : ${AUTOM4TE=autom4te}
1455 AC_SUBST([AUTOM4TE])
1457 AC_CONFIG_FILES([Makefile
1460 python/Makefile python/docs/conf.py python/version.i
1461 python3/Makefile python3/docs/conf.py python3/version.i
1465 tcl8/Makefile tcl8/pkgIndex.tcl
1466 csharp/Makefile csharp/AssemblyInfo.cs
1468 perl/Makefile perl/util.i
1470 xapian-bindings.spec
1475 if test -z "$BINDINGS" ; then
1476 echo "*** Not found the required tools for building bindings for any"
1477 echo "*** supported language!"
1479 echo "*** You may need to install -dev or -devel packages for the languages"
1480 echo "*** you want to build bindings for."
1482 echo "*** For details of how to point configure at tools not on PATH, see:"
1483 echo "*** ./configure --help"
1485 echo "*** Building bindings for languages:" $BINDINGS
1488 if test "$COMPAT_VERSION" != "$XAPIAN_VERSION" ; then
1489 release_series=[`echo "$COMPAT_VERSION"|sed 's/[0-9][0-9]*$//'`]
1490 case $XAPIAN_VERSION in
1491 $release_series*) ;;
1493 AC_MSG_ERROR([Xapian library is version ${XAPIAN_VERSION-<0.8.2} which is from a different release series to bindings $PACKAGE_VERSION, so they aren't compatible.])
1496 dnl 0.8.2 was the first version which set XAPIAN_VERSION
1497 AC_MSG_WARN([Xapian library is version ${XAPIAN_VERSION-<0.8.2} but the bindings are version $PACKAGE_VERSION - we strongly recommend using matching versions.])