160 lines
6.4 KiB
Diff
160 lines
6.4 KiB
Diff
--- a/m4/python.m4 2011-06-13 20:30:25.000000000 +0400
|
|
+++ b/m4/python.m4 2014-02-01 11:34:44.000000000 +0400
|
|
@@ -43,16 +43,14 @@
|
|
[AC_REQUIRE([AM_PATH_PYTHON])
|
|
AC_MSG_CHECKING(for headers required to compile python extensions)
|
|
dnl deduce PYTHON_INCLUDES
|
|
-py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
|
|
-py_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
|
|
-PYTHON_CONFIG=`which $PYTHON`-config
|
|
-if test -x "$PYTHON_CONFIG"; then
|
|
-PYTHON_INCLUDES=`$PYTHON_CONFIG --includes 2>/dev/null`
|
|
-else
|
|
-PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
|
|
-if test "$py_prefix" != "$py_exec_prefix"; then
|
|
- PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
|
|
-fi
|
|
+if test "x$PYTHON_INCLUDES" = x; then
|
|
+ PYTHON_CONFIG=`which $PYTHON`-config
|
|
+ if test -x "$PYTHON_CONFIG"; then
|
|
+ PYTHON_INCLUDES=`$PYTHON_CONFIG --includes 2>/dev/null`
|
|
+ else
|
|
+ PYTHON_INCLUDES=`$PYTHON -c "import distutils.sysconfig, sys; sys.stdout.write(distutils.sysconfig.get_python_inc(True))"`
|
|
+ PYTHON_INCLUDES="-I$PYTHON_INCLUDES"
|
|
+ fi
|
|
fi
|
|
AC_SUBST(PYTHON_INCLUDES)
|
|
dnl check if the headers exist:
|
|
@@ -66,24 +64,35 @@
|
|
CPPFLAGS="$save_CPPFLAGS"
|
|
])
|
|
|
|
-# JD_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
|
|
-# ---------------------------------------------------------------------------
|
|
-# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
|
|
-# Run ACTION-IF-FALSE otherwise.
|
|
-# This test uses sys.hexversion instead of the string equivalent.
|
|
-# This is similar to AM_PYTHON_CHECK_VERSION, but without python 1.5.x support
|
|
-# and with python 3.0 support.
|
|
-AC_DEFUN([JD_PYTHON_CHECK_VERSION],
|
|
- [prog="import sys
|
|
-# split strings by '.' and convert to numeric. Append some zeros
|
|
-# because we need at least 4 digits for the hex conversion.
|
|
-# map returns an iterator in Python 3.0 and a list in 2.x
|
|
-minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
|
|
-minverhex = 0
|
|
-# xrange is not present in Python 3.0 and range returns an iterator
|
|
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
|
|
-sys.exit(sys.hexversion < minverhex)"
|
|
- AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
|
|
+dnl a macro to check for ability to embed python
|
|
+dnl AM_CHECK_PYTHON_LIBS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
|
|
+dnl function also defines PYTHON_LIBS
|
|
+AC_DEFUN([AM_CHECK_PYTHON_LIBS],
|
|
+[AC_REQUIRE([AM_PATH_PYTHON])
|
|
+AC_MSG_CHECKING(for libraries required to embed python)
|
|
+dnl deduce PYTHON_LIBS
|
|
+py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
|
|
+if test "x$PYTHON_LIBS" = x; then
|
|
+ PYTHON_CONFIG=`which $PYTHON`-config
|
|
+ if test -x "$PYTHON_CONFIG"; then
|
|
+ PYTHON_LIBS=`$PYTHON_CONFIG --ldflags 2>/dev/null`
|
|
+ else
|
|
+ PYTHON_LIBS="-L${py_prefix}/lib -lpython${PYTHON_VERSION}"
|
|
+ fi
|
|
+fi
|
|
+if test "x$PYTHON_LIB_LOC" = x; then
|
|
+ PYTHON_LIB_LOC="${py_prefix}/lib"
|
|
+fi
|
|
+AC_SUBST(PYTHON_LIBS)
|
|
+AC_SUBST(PYTHON_LIB_LOC)
|
|
+dnl check if the headers exist:
|
|
+save_LIBS="$LIBS"
|
|
+LIBS="$LIBS $PYTHON_LIBS"
|
|
+AC_TRY_LINK_FUNC(Py_Initialize, dnl
|
|
+ [LIBS="$save_LIBS"; AC_MSG_RESULT(yes); $1], dnl
|
|
+ [LIBS="$save_LIBS"; AC_MSG_RESULT(no); $2])
|
|
+
|
|
+])
|
|
|
|
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
|
# Free Software Foundation, Inc.
|
|
@@ -119,8 +123,7 @@
|
|
dnl Find a Python interpreter. Python versions prior to 2.0 are not
|
|
dnl supported
|
|
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
|
|
- [python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 dnl
|
|
-python2.1 python2.0])
|
|
+ [python3 python3.3 python3.2 python3.1 python2 python2.7 python])
|
|
|
|
m4_if([$1],[],[
|
|
dnl No version check is needed.
|
|
@@ -134,7 +137,7 @@
|
|
if test -n "$PYTHON"; then
|
|
# If the user set $PYTHON, use it and don't search something else.
|
|
AC_MSG_CHECKING([whether $PYTHON version >= $1])
|
|
- JD_PYTHON_CHECK_VERSION([$PYTHON], [$1],
|
|
+ AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
|
|
[AC_MSG_RESULT(yes)],
|
|
[AC_MSG_ERROR(too old)])
|
|
am_display_PYTHON=$PYTHON
|
|
@@ -145,7 +148,7 @@
|
|
[am_cv_pathless_PYTHON],[
|
|
for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
|
|
test "$am_cv_pathless_PYTHON" = none && break
|
|
- JD_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
|
|
+ AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
|
|
done])
|
|
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
|
|
if test "$am_cv_pathless_PYTHON" = none; then
|
|
--- a/configure.ac.orig 2014-02-23 10:45:36.212800000 +0400
|
|
+++ b/configure.ac 2014-02-23 10:47:01.700800000 +0400
|
|
@@ -89,36 +89,28 @@
|
|
JD_PATH_PYTHON(python_min_ver)
|
|
|
|
# check if we are building for python 3
|
|
-JD_PYTHON_CHECK_VERSION([$PYTHON], [3.0],
|
|
+AM_PYTHON_CHECK_VERSION([$PYTHON], [3.0],
|
|
build_py3k=true,
|
|
build_py3k=false)
|
|
|
|
# if building for python 3 make sure we have the minimum version supported
|
|
if test $build_py3k = true ; then
|
|
AC_MSG_CHECKING([for $PYTHON >=] python3_min_ver)
|
|
- JD_PYTHON_CHECK_VERSION([$PYTHON], python3_min_ver,
|
|
+ AM_PYTHON_CHECK_VERSION([$PYTHON], python3_min_ver,
|
|
[AC_MSG_RESULT(yes)],
|
|
[AC_MSG_ERROR(too old)])
|
|
fi
|
|
|
|
-AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)])
|
|
-
|
|
-AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h])
|
|
-old_CPPFLAGS=$CPPFLAGS
|
|
-CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES"
|
|
-AC_TRY_COMPILE([#include <Python.h>],
|
|
- [PySignal_SetWakeupFd(0);],
|
|
- setwakeupfd_ok=yes,
|
|
- setwakeupfd_ok=no)
|
|
-AC_MSG_RESULT($setwakeupfd_ok)
|
|
-if test "x$setwakeupfd_ok" != xno; then
|
|
- AC_DEFINE(HAVE_PYSIGNAL_SETWAKEUPFD, 1,
|
|
- [Define to 1 if PySignal_SetWakeupFd is available])
|
|
+# - 'SO' for PyPy, CPython 2.7-3.2
|
|
+# - 'EXT_SUFFIX' for CPython3.3+ (http://bugs.python.org/issue16754)
|
|
+# - fallback to '.so'
|
|
+PYTHON_SO=`$PYTHON -c "import distutils.sysconfig, sys; get = distutils.sysconfig.get_config_var; sys.stdout.write(get('EXT_SUFFIX') or get('SO') or '.so');"`
|
|
+AC_SUBST(PYTHON_SO)
|
|
+
|
|
+AM_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found]))
|
|
+if test "x$os_win32" = "xyes"; then
|
|
+ AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be explicitly linked to libpython.]))
|
|
fi
|
|
-CPPFLAGS=$old_CPPFLAGS
|
|
-
|
|
-PLATFORM=`$PYTHON -c "import sys; from distutils import util; sys.stdout.write(util.get_platform())"`
|
|
-AC_SUBST(PLATFORM)
|
|
|
|
AC_ARG_ENABLE(thread,
|
|
AC_HELP_STRING([--disable-thread], [Disable pygobject threading support]),,
|