kig_version=0.10.7
kde_save_LIBS=$LIBS
LIBS="$LIBS -lm"
KDE_CHECK_FUNC_EXT(trunc)
LIBS="$kde_save_LIBS"
KDE_LANG_CPLUSPLUS
# this variable is set to true if we need to warn the user that Python
# scripting support has been disabled due to missing headers or libs
# or whatever.. It's not set if the user explicitly disabled python
# scripting ( "./configure --disable-kig-python-scripting" ). We
# complain about this at the end of the ./configure script. Check out
# configure.in.bot for the code..
kig_warn_about_disabling_python="no"
# this var is set to yes if we want to compile python scripting, and to
# no otherwise
kig_enable_python_scripting="yes"
# this var is set to no if we want to disable support for compressed files
# (for compatibility reasons with kde 3.1)
kig_enable_compressed_files="yes"
AC_DEFUN([KIG_PYTHON_NOT_FOUND], [
AC_MSG_WARN(
[[Kig needs the Python and Boost.Python libraries and their headers \
installed for its Python scripting support. One of both was not \
found, or the versions were incompatible, and Python scripting will be disabled.]] );
kig_warn_about_disabling_python="yes"
kig_enable_python_scripting="no" ] )
AC_ARG_ENABLE( kig-python-scripting,
[ --disable-kig-python-scripting Disable Kig Python Scripting support],
[ kig_enable_python_scripting=$enableval ],
[ kig_enable_python_scripting=yes] )
AC_ARG_ENABLE( kig-compressed-files,
[ --disable-kig-compressed-files Disable Kig Compressed Files support],
[ kig_enable_compressed_files=$enableval ],
[ kig_enable_compressed_files=yes] )
dnl domi: we use some macro's by Ben Burton from the Regina program,
dnl to check for the availability of a good python+boost.python
dnl combination. They are included here, the end is marked at the
dnl bottom. I have changed it only by removing some macro's, and by
dnl making the other call KIG_PYTHON_NOT_FOUND instead of
dnl REGINA_DO_NOT_COMPILE, and REGINA_WARN_*.
dnl
dnl Regina - A Normal Surface Theory Calculator
dnl Configure Script Macros
dnl
dnl Copyright (c) 2002-2003, Ben Burton
dnl For further details contact Ben Burton (bab@debian.org).
dnl
dnl This file is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU General Public License as
dnl published by the Free Software Foundation; either version 2 of the
dnl License, or (at your option) any later version.
dnl
dnl This file is distributed in the hope that it will be useful, but
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public
dnl License along with this program; if not, write to the Free
dnl Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
dnl MA 02110-1301, USA.
dnl
dnl Note that this copyright notice applies only to macros beginning
dnl with REGINA_. Other macros found in acinclude.m4 have been taken
dnl from external sources; these macros are stored in separate files
dnl in the admin/ subdirectory and copyright notices can be found in
dnl these separate files (and in the comments provided with the macros
dnl themselves).
dnl
dnl -----------------------------------------------------------------
dnl
dnl Macros written for Regina
dnl
dnl -----------------------------------------------------------------
dnl
dnl REGINA_LIB_BOOST_PYTHON(TARGET-LIST, REQUIRED-BY)
dnl
dnl Checks for a usable boost.python installation.
dnl Issues a warning and adds <TARGET-LIST> (which may consist of
dnl several targets) to $DO_NOT_COMPILE if boost.python is missing.
dnl
dnl AC_SUBST()s the following variables:
dnl
dnl BOOST_PYTHON_INCLUDES: The compiler flags required for
dnl building against boost.python,
dnl including flags for building against
dnl python itself.
dnl BOOST_PYTHON_LIBS: The linker flags required for building
dnl against boost.python.
dnl PYTHON_LIBS: The linker flags required for building against
dnl python itself.
dnl
dnl AC_DEFINE()s the following variables:
dnl
dnl HAVE_BOOST_PYTHON: Defined as 1 if we have a usable boost.python
dnl installation, or remains undefined otherwise.
dnl
dnl Example: REGINA_LIB_BOOST_PYTHON(PYTHON, [the Python interface])
dnl
AC_DEFUN([REGINA_LIB_BOOST_PYTHON], [
AC_LANG_PUSH(C++)
KDE_CHECK_HEADERS([boost/shared_ptr.hpp], [
__regina_py_save_cxxflags="$CXXFLAGS"
__regina_py_save_ldflags="$LDFLAGS"
__regina_py_save_libs="$LIBS"
__regina_py_ok=0
for pyver in python python2.7 python2.6 python2.5 python2.4 python2.3 python2.2; do
for incdir in "/usr/include/$pyver" "/usr/local/include/$pyver" \
"/usr/$pyver/include" "/usr/local/$pyver/include" \
"$prefix/include/$pyver" "$prefix/$pyver/include"; do
CXXFLAGS="$__regina_py_save_cxxflags -I$incdir"
LDFLAGS="$__regina_py_save_ldflags -shared"
if test -z "$qt_libraries"; then
LDFLAGS="$LDFLAGS"
else
LDFLAGS="$LDFLAGS -L$qt_libraries"
fi
LDFLAGS="$LDFLAGS -ltqt"
# Check for python includes.
AC_TRY_COMPILE([
#include <Python.h>
], [
PyObject obj;
], [
# Check for compatibility with boost.python.
AC_MSG_CHECKING([for boost.python with $incdir/Python.h])
AC_TRY_COMPILE([
#include <boost/python.hpp>
const char* greet() { return "Hello world!"; }
BOOST_PYTHON_MODULE(hello) { boost::python::def("greet", greet); }
], [
/* No main body. */
], [
AC_MSG_RESULT([yes])
# Check for -lpython.
for pylib in "$pyver" python python2.7 python2.6 python2.3 python2.2; do
for pylibdir in "/usr/lib" "/usr/local/lib" "/usr/lib/$pyver/config" \
"/usr/local/lib/$pyver/config"; do
for extralibs in "" "-lpthread -lm -lutil -ldl"; do
AC_MSG_CHECKING([for $pylibdir/lib$pylib and $extralibs with $incdir/Python.h])
LDFLAGS="$__regina_py_save_ldflags -L$pylibdir"
if test -z "$qt_libraries"; then
LDFLAGS="$LDFLAGS"
else
LDFLAGS="$LDFLAGS -L$qt_libraries"
fi
LDFLAGS="$LDFLAGS -ltqt"
LIBS="-l$pylib $extralibs"
PYVERSHORT=${pyver#python}
PYVERSUFFIX=py${PYVERSHORT%.*}${PYVERSHORT#*.}
PYVERMAJOR=${PYVERSHORT%.*}
if test $PYVERMAJOR -lt 3; then
KIG_Python_init=initkig
else
KIG_Python_init=PyInit_kig
fi
AC_TRY_LINK([
#include <Python.h>
], [
Py_Initialize(); Py_Finalize();
], [
AC_MSG_RESULT([yes])
for bplib in "-lboost_python-mt-$PYVERSUFFIX" "-lboost_python-mt" "-lboost_python-gcc-mt-1_32" "-lboost_python-gcc-mt-1_31" "-lboost_python-gcc-mt" "-lboost_python-$PYVERSUFFIX" "-lboost_python"; do
AC_MSG_CHECKING([compilation of a boost.python program with $bplib])
LDFLAGS="$__regina_py_save_ldflags -L$pylibdir"
if test -z "$qt_libraries"; then
LDFLAGS="$LDFLAGS"
else
LDFLAGS="$LDFLAGS -L$qt_libraries"
fi
LDFLAGS="$LDFLAGS -ltqt"
LIBS="-l$pylib $bplib $extralibs"
AC_TRY_LINK([
#include <boost/python.hpp>
const char* greet() { return "Hello world!"; }
BOOST_PYTHON_MODULE(hello) { boost::python::def("greet", greet); }
], [
/* No main body. */
], [
AC_MSG_RESULT([yes])
# And we're done!
BOOST_PYTHON_INCLUDES="-I$incdir"
BOOST_PYTHON_LIBS="$bplib"
PYTHON_LIBS="-l$pylib $extralibs"
PYTHON_LDFLAGS="-L$pylibdir"
__regina_py_ok=1
], [
AC_MSG_RESULT([no])
])
if test "$__regina_py_ok" = "1"; then break; fi
done
], [
AC_MSG_RESULT([no])
])
if test "$__regina_py_ok" = "1"; then break; fi
done
if test "$__regina_py_ok" = "1"; then break; fi
done
if test "$__regina_py_ok" = "1"; then break; fi
done
], [
AC_MSG_RESULT([no])
])
])
if test "$__regina_py_ok" = "1"; then break; fi
done
if test "$__regina_py_ok" = "1"; then break; fi
done
CXXFLAGS="$__regina_py_save_cxxflags"
LDFLAGS="$__regina_py_save_ldflags"
LIBS="$__regina_py_save_libs"
if test "$__regina_py_ok" = "1"; then
AC_DEFINE(HAVE_BOOST_PYTHON, 1,
[Define to 1 if you have a usable boost.python installation.])
AC_DEFINE_UNQUOTED(KIG_Python_init, $KIG_Python_init,
[KIG: Init function for python-boost])
else
BOOST_PYTHON_INCLUDES=
BOOST_PYTHON_LIBS=
KIG_PYTHON_NOT_FOUND
fi
], [
KIG_PYTHON_NOT_FOUND
])
AC_LANG_POP(C++)
AC_SUBST(BOOST_PYTHON_INCLUDES)
AC_SUBST(BOOST_PYTHON_LIBS)
AC_SUBST(PYTHON_LDFLAGS)
AC_SUBST(PYTHON_LIBS)
])
dnl This is the end of the macro's copied from Ben Burton's Regina
dnl program.
if test "x$kig_enable_python_scripting" != xno; then
kig_enable_python_scripting="yes" # either yes or no..
kig_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-fno-exceptions//g'`
REGINA_LIB_BOOST_PYTHON( PYTHON, Kig Python Scripting )
CXXFLAGS="$kig_save_CXXFLAGS"
fi
if test "x$kig_enable_python_scripting" != xno; then
AC_DEFINE( KIG_ENABLE_PYTHON_SCRIPTING, 1, [Defined if Kig Python scripting is enabled] )
fi
AM_CONDITIONAL(KIG_COMPILE_PYTHON_SCRIPTING, test x$kig_enable_python_scripting != xno)
if test "x$kig_enable_compressed_files" = xno; then
CXXFLAGS="$CXXFLAGS -DKIG_NO_COMPRESSED_FILES"
fi
AC_SUBST( KIGVERSION, $kig_version )
AC_DEFINE_UNQUOTED( KIGVERSION, "$kig_version", [The current Kig version as a string] )
KDE_CHECK_HEADERS([ieeefp.h])
# apparently the KDE build system wants to see "dnl AC_OUTPUT( ... )",
# not a normal AC_OUTPUT
dnl AC_OUTPUT( kig/kig.lsm )
dnl AC_OUTPUT( kig/README )
dnl AC_OUTPUT( kig/package-kig.sh )
dnl AC_OUTPUT( kig/VERSION )