1b7579f77SDag-Erling SmørgravAC_DEFUN([AC_PYTHON_DEVEL],[ 2b7579f77SDag-Erling Smørgrav # 3b7579f77SDag-Erling Smørgrav # Allow the use of a (user set) custom python version 4b7579f77SDag-Erling Smørgrav # 5b7579f77SDag-Erling Smørgrav AC_ARG_VAR([PYTHON_VERSION],[The installed Python 6b7579f77SDag-Erling Smørgrav version to use, for example '2.3'. This string 7b7579f77SDag-Erling Smørgrav will be appended to the Python interpreter 8b7579f77SDag-Erling Smørgrav canonical name.]) 9b7579f77SDag-Erling Smørgrav 10b7579f77SDag-Erling Smørgrav AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]]) 11b7579f77SDag-Erling Smørgrav if test -z "$PYTHON"; then 12b7579f77SDag-Erling Smørgrav AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path]) 13b7579f77SDag-Erling Smørgrav PYTHON_VERSION="" 14b7579f77SDag-Erling Smørgrav fi 15b7579f77SDag-Erling Smørgrav 16b7579f77SDag-Erling Smørgrav if test -z "$PYTHON_VERSION"; then 17ff825849SDag-Erling Smørgrav PYTHON_VERSION=`$PYTHON -c "import sys; \ 18ff825849SDag-Erling Smørgrav print(sys.version.split()[[0]])"` 19b7579f77SDag-Erling Smørgrav fi 20b7579f77SDag-Erling Smørgrav 21*a39a5a69SCy Schubert # Check if you have sysconfig 22*a39a5a69SCy Schubert AC_MSG_CHECKING([for the sysconfig Python module]) 23*a39a5a69SCy Schubert if ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1`; then 24*a39a5a69SCy Schubert AC_MSG_RESULT([yes]) 25*a39a5a69SCy Schubert sysconfig_module="sysconfig" 26*a39a5a69SCy Schubert # if yes, use sysconfig, because distutils is deprecated. 27*a39a5a69SCy Schubert else 28*a39a5a69SCy Schubert AC_MSG_RESULT([no]) 29*a39a5a69SCy Schubert # if no, try to use distutils 30*a39a5a69SCy Schubert 31b7579f77SDag-Erling Smørgrav # 32b7579f77SDag-Erling Smørgrav # Check if you have distutils, else fail 33b7579f77SDag-Erling Smørgrav # 34b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for the distutils Python package]) 3565b390aaSDag-Erling Smørgrav if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then 36b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([yes]) 37b7579f77SDag-Erling Smørgrav else 38b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([no]) 39b7579f77SDag-Erling Smørgrav AC_MSG_ERROR([cannot import Python module "distutils". 40b7579f77SDag-Erling Smørgrav Please check your Python installation. The error was: 41b7579f77SDag-Erling Smørgrav $ac_distutils_result]) 42b7579f77SDag-Erling Smørgrav PYTHON_VERSION="" 43b7579f77SDag-Erling Smørgrav fi 44b7579f77SDag-Erling Smørgrav 45*a39a5a69SCy Schubert sysconfig_module="distutils.sysconfig" 46*a39a5a69SCy Schubert fi 47*a39a5a69SCy Schubert 48b7579f77SDag-Erling Smørgrav # 49b7579f77SDag-Erling Smørgrav # Check for Python include path 50b7579f77SDag-Erling Smørgrav # 51b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for Python include path]) 52b7579f77SDag-Erling Smørgrav if test -z "$PYTHON_CPPFLAGS"; then 53*a39a5a69SCy Schubert if test "$sysconfig_module" = "sysconfig"; then 54*a39a5a69SCy Schubert python_path=`$PYTHON -c 'import sysconfig; \ 55*a39a5a69SCy Schubert print(sysconfig.get_path("include"));'` 56*a39a5a69SCy Schubert else 57b7579f77SDag-Erling Smørgrav python_path=`$PYTHON -c "import distutils.sysconfig; \ 58ff825849SDag-Erling Smørgrav print(distutils.sysconfig.get_python_inc());"` 59*a39a5a69SCy Schubert fi 60b7579f77SDag-Erling Smørgrav if test -n "${python_path}"; then 61b7579f77SDag-Erling Smørgrav python_path="-I$python_path" 62b7579f77SDag-Erling Smørgrav fi 63b7579f77SDag-Erling Smørgrav PYTHON_CPPFLAGS=$python_path 64b7579f77SDag-Erling Smørgrav fi 65b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([$PYTHON_CPPFLAGS]) 66b7579f77SDag-Erling Smørgrav AC_SUBST([PYTHON_CPPFLAGS]) 67b7579f77SDag-Erling Smørgrav 68b7579f77SDag-Erling Smørgrav # 69b7579f77SDag-Erling Smørgrav # Check for Python library path 70b7579f77SDag-Erling Smørgrav # 71b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for Python library path]) 72b7579f77SDag-Erling Smørgrav if test -z "$PYTHON_LDFLAGS"; then 73*a39a5a69SCy Schubert PYTHON_LDFLAGS=`$PYTHON -c "from $sysconfig_module import *; \ 74b5663de9SDag-Erling Smørgrav print('-L'+get_config_var('LIBDIR')+' -L'+get_config_var('LIBDEST')+' '+get_config_var('BLDLIBRARY'));"` 75b7579f77SDag-Erling Smørgrav fi 76b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([$PYTHON_LDFLAGS]) 77b7579f77SDag-Erling Smørgrav AC_SUBST([PYTHON_LDFLAGS]) 78b7579f77SDag-Erling Smørgrav 7925039b37SCy Schubert if test -z "$PYTHON_LIBDIR"; then 80*a39a5a69SCy Schubert PYTHON_LIBDIR=`$PYTHON -c "from $sysconfig_module import *; \ 8125039b37SCy Schubert print(get_config_var('LIBDIR'));"` 8225039b37SCy Schubert fi 8325039b37SCy Schubert 84b7579f77SDag-Erling Smørgrav # 85b7579f77SDag-Erling Smørgrav # Check for site packages 86b7579f77SDag-Erling Smørgrav # 87b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([for Python site-packages path]) 88b7579f77SDag-Erling Smørgrav if test -z "$PYTHON_SITE_PKG"; then 89*a39a5a69SCy Schubert if test "$sysconfig_module" = "sysconfig"; then 90*a39a5a69SCy Schubert PYTHON_SITE_PKG=`$PYTHON -c 'import sysconfig; \ 91*a39a5a69SCy Schubert print(sysconfig.get_path("platlib"));'` 92*a39a5a69SCy Schubert else 93b7579f77SDag-Erling Smørgrav PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ 94ff825849SDag-Erling Smørgrav print(distutils.sysconfig.get_python_lib(1,0));"` 95b7579f77SDag-Erling Smørgrav fi 96*a39a5a69SCy Schubert fi 97b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([$PYTHON_SITE_PKG]) 98b7579f77SDag-Erling Smørgrav AC_SUBST([PYTHON_SITE_PKG]) 99b7579f77SDag-Erling Smørgrav 100b7579f77SDag-Erling Smørgrav # 101b7579f77SDag-Erling Smørgrav # final check to see if everything compiles alright 102b7579f77SDag-Erling Smørgrav # 103b7579f77SDag-Erling Smørgrav AC_MSG_CHECKING([consistency of all components of python development environment]) 104b7579f77SDag-Erling Smørgrav AC_LANG_PUSH([C]) 105b7579f77SDag-Erling Smørgrav # save current global flags 1068ed2b524SDag-Erling Smørgrav ac_save_LIBS="$LIBS" 1078ed2b524SDag-Erling Smørgrav ac_save_CPPFLAGS="$CPPFLAGS" 1088ed2b524SDag-Erling Smørgrav 1098ed2b524SDag-Erling Smørgrav LIBS="$LIBS $PYTHON_LDFLAGS" 1108ed2b524SDag-Erling Smørgrav CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" 111f44e67d1SCy Schubert AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 112b7579f77SDag-Erling Smørgrav #include <Python.h> 113f44e67d1SCy Schubert ]],[[ 114b7579f77SDag-Erling Smørgrav Py_Initialize(); 115f44e67d1SCy Schubert ]])],[pythonexists=yes],[pythonexists=no]) 116b7579f77SDag-Erling Smørgrav 117b7579f77SDag-Erling Smørgrav AC_MSG_RESULT([$pythonexists]) 118b7579f77SDag-Erling Smørgrav 119b7579f77SDag-Erling Smørgrav if test ! "$pythonexists" = "yes"; then 120b7579f77SDag-Erling Smørgrav AC_MSG_ERROR([ 121b7579f77SDag-Erling Smørgrav Could not link test program to Python. Maybe the main Python library has been 122b7579f77SDag-Erling Smørgrav installed in some non-standard library path. If so, pass it to configure, 123b7579f77SDag-Erling Smørgrav via the LDFLAGS environment variable. 124b7579f77SDag-Erling Smørgrav Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib" 125b7579f77SDag-Erling Smørgrav ============================================================================ 126b7579f77SDag-Erling Smørgrav ERROR! 127b7579f77SDag-Erling Smørgrav You probably have to install the development version of the Python package 128b7579f77SDag-Erling Smørgrav for your distribution. The exact name of this package varies among them. 129b7579f77SDag-Erling Smørgrav ============================================================================ 130b7579f77SDag-Erling Smørgrav ]) 131b7579f77SDag-Erling Smørgrav PYTHON_VERSION="" 132b7579f77SDag-Erling Smørgrav fi 133b7579f77SDag-Erling Smørgrav AC_LANG_POP 134b7579f77SDag-Erling Smørgrav # turn back to default flags 135b7579f77SDag-Erling Smørgrav CPPFLAGS="$ac_save_CPPFLAGS" 136b7579f77SDag-Erling Smørgrav LIBS="$ac_save_LIBS" 137b7579f77SDag-Erling Smørgrav 138b7579f77SDag-Erling Smørgrav # 139b7579f77SDag-Erling Smørgrav # all done! 140b7579f77SDag-Erling Smørgrav # 141b7579f77SDag-Erling Smørgrav]) 142b7579f77SDag-Erling Smørgrav 143