diff options
Diffstat (limited to 'kig/configure.in.in')
-rw-r--r-- | kig/configure.in.in | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/kig/configure.in.in b/kig/configure.in.in new file mode 100644 index 00000000..fa4cd0c7 --- /dev/null +++ b/kig/configure.in.in @@ -0,0 +1,251 @@ +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.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" + + # 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.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" + LIBS="-l$pylib $extralibs" + AC_TRY_LINK([ + #include <Python.h> + ], [ + Py_Initialize(); Py_Finalize(); + ], [ + AC_MSG_RESULT([yes]) + for bplib in "-lboost_python-mt" "-lboost_python-gcc-mt-1_32" "-lboost_python-gcc-mt-1_31" "-lboost_python-gcc-mt" "-lboost_python"; do + AC_MSG_CHECKING([compilation of a boost.python program with $bplib]) + LDFLAGS="$__regina_py_save_ldflags -L$pylibdir" + 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.]) + 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 ) |