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 (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 ], [ PyObject obj; ], [ # Check for compatibility with boost.python. AC_MSG_CHECKING([for boost.python with $incdir/Python.h]) AC_TRY_COMPILE([ #include 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#*.} AC_TRY_LINK([ #include ], [ 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 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.]) 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 )