Changeset View
Changeset View
Standalone View
Standalone View
m4/ax_python_devel.m4
# =========================================================================== | # =========================================================================== | ||||
# https://www.gnu.org/software/autoconf-archive/ax_python_devel.html | # https://www.gnu.org/software/autoconf-archive/ax_python_devel.html | ||||
# =========================================================================== | # =========================================================================== | ||||
# | # | ||||
# SYNOPSIS | # SYNOPSIS | ||||
Context not available. | |||||
# in your configure.ac. | # in your configure.ac. | ||||
# | # | ||||
# This macro checks for Python and tries to get the include path to | # This macro checks for Python and tries to get the include path to | ||||
# 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LDFLAGS) | # 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LIBS) output | ||||
# output variables. It also exports $(PYTHON_EXTRA_LIBS) and | # variables. It also exports $(PYTHON_EXTRA_LIBS) and | ||||
# $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code. | # $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code. | ||||
# | # | ||||
# You can search for some particular version of Python by passing a | # You can search for some particular version of Python by passing a | ||||
Context not available. | |||||
# modified version of the Autoconf Macro, you may extend this special | # modified version of the Autoconf Macro, you may extend this special | ||||
# exception to the GPL to apply to your modified version as well. | # exception to the GPL to apply to your modified version as well. | ||||
#serial 17 | #serial 23 | ||||
AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL]) | AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL]) | ||||
AC_DEFUN([AX_PYTHON_DEVEL],[ | AC_DEFUN([AX_PYTHON_DEVEL],[ | ||||
Context not available. | |||||
This version of the AC@&t@_PYTHON_DEVEL macro | This version of the AC@&t@_PYTHON_DEVEL macro | ||||
doesn't work properly with versions of Python before | doesn't work properly with versions of Python before | ||||
2.1.0. You may need to re-run configure, setting the | 2.1.0. You may need to re-run configure, setting the | ||||
variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG, | variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG, | ||||
PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. | PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. | ||||
Moreover, to disable this check, set PYTHON_NOVERSIONCHECK | Moreover, to disable this check, set PYTHON_NOVERSIONCHECK | ||||
to something else than an empty string. | to something else than an empty string. | ||||
Context not available. | |||||
# | # | ||||
# Check if you have distutils, else fail | # Check if you have distutils, else fail | ||||
# | # | ||||
AC_MSG_CHECKING([for the distutils Python package]) | AC_MSG_CHECKING([for the sysconfig Python package]) | ||||
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` | ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1` | ||||
if test -z "$ac_distutils_result"; then | if test $? -eq 0; then | ||||
AC_MSG_RESULT([yes]) | AC_MSG_RESULT([yes]) | ||||
IMPORT_SYSCONFIG="import sysconfig" | |||||
else | else | ||||
AC_MSG_RESULT([no]) | AC_MSG_RESULT([no]) | ||||
AC_MSG_ERROR([cannot import Python module "distutils". | |||||
AC_MSG_CHECKING([for the distutils Python package]) | |||||
ac_sysconfig_result=`$PYTHON -c "from distutils import sysconfig" 2>&1` | |||||
if test $? -eq 0; then | |||||
AC_MSG_RESULT([yes]) | |||||
IMPORT_SYSCONFIG="from distutils import sysconfig" | |||||
else | |||||
AC_MSG_ERROR([cannot import Python module "distutils". | |||||
Please check your Python installation. The error was: | Please check your Python installation. The error was: | ||||
$ac_distutils_result]) | $ac_sysconfig_result]) | ||||
PYTHON_VERSION="" | PYTHON_VERSION="" | ||||
fi | |||||
fi | fi | ||||
# | # | ||||
Context not available. | |||||
# | # | ||||
AC_MSG_CHECKING([for Python include path]) | AC_MSG_CHECKING([for Python include path]) | ||||
if test -z "$PYTHON_CPPFLAGS"; then | if test -z "$PYTHON_CPPFLAGS"; then | ||||
python_path=`$PYTHON -c "import distutils.sysconfig; \ | if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then | ||||
print (distutils.sysconfig.get_python_inc ());"` | # sysconfig module has different functions | ||||
plat_python_path=`$PYTHON -c "import distutils.sysconfig; \ | python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | ||||
print (distutils.sysconfig.get_python_inc (plat_specific=1));"` | print (sysconfig.get_path ('include'));"` | ||||
plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | |||||
print (sysconfig.get_path ('platinclude'));"` | |||||
else | |||||
# old distutils way | |||||
python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | |||||
print (sysconfig.get_python_inc ());"` | |||||
plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | |||||
print (sysconfig.get_python_inc (plat_specific=1));"` | |||||
fi | |||||
if test -n "${python_path}"; then | if test -n "${python_path}"; then | ||||
if test "${plat_python_path}" != "${python_path}"; then | if test "${plat_python_path}" != "${python_path}"; then | ||||
python_path="-I$python_path -I$plat_python_path" | python_path="-I$python_path -I$plat_python_path" | ||||
Context not available. | |||||
# Check for Python library path | # Check for Python library path | ||||
# | # | ||||
AC_MSG_CHECKING([for Python library path]) | AC_MSG_CHECKING([for Python library path]) | ||||
if test -z "$PYTHON_LDFLAGS"; then | if test -z "$PYTHON_LIBS"; then | ||||
# (makes two attempts to ensure we've got a version number | # (makes two attempts to ensure we've got a version number | ||||
# from the interpreter) | # from the interpreter) | ||||
ac_python_version=`cat<<EOD | $PYTHON - | ac_python_version=`cat<<EOD | $PYTHON - | ||||
# join all versioning strings, on some systems | # join all versioning strings, on some systems | ||||
# major/minor numbers could be in different list elements | # major/minor numbers could be in different list elements | ||||
from distutils.sysconfig import * | from sysconfig import * | ||||
e = get_config_var('VERSION') | e = get_config_var('VERSION') | ||||
if e is not None: | if e is not None: | ||||
print(e) | print(e) | ||||
Context not available. | |||||
# Make the versioning information available to the compiler | # Make the versioning information available to the compiler | ||||
# JW: We don't need it and it interferes with the hack | # JW: We don't need it and it interferes with the hack | ||||
# to detect multiple Pyhton versions | # to detect multiple Python versions | ||||
#AC_DEFINE_UNQUOTED([HAVE_PYTHON], ["$ac_python_version"], | #AC_DEFINE_UNQUOTED([HAVE_PYTHON], ["$ac_python_version"], | ||||
# [If available, contains the Python version number currently in use.]) | # [If available, contains the Python version number currently in use.]) | ||||
Context not available. | |||||
ac_python_libdir=`cat<<EOD | $PYTHON - | ac_python_libdir=`cat<<EOD | $PYTHON - | ||||
# There should be only one | # There should be only one | ||||
import distutils.sysconfig | $IMPORT_SYSCONFIG | ||||
e = distutils.sysconfig.get_config_var('LIBDIR') | e = sysconfig.get_config_var('LIBDIR') | ||||
if e is not None: | if e is not None: | ||||
print (e) | print (e) | ||||
EOD` | EOD` | ||||
Context not available. | |||||
# Now, for the library: | # Now, for the library: | ||||
ac_python_library=`cat<<EOD | $PYTHON - | ac_python_library=`cat<<EOD | $PYTHON - | ||||
import distutils.sysconfig | $IMPORT_SYSCONFIG | ||||
c = distutils.sysconfig.get_config_vars() | c = sysconfig.get_config_vars() | ||||
if 'LDVERSION' in c: | if 'LDVERSION' in c: | ||||
print ('python'+c[['LDVERSION']]) | print ('python'+c[['LDVERSION']]) | ||||
else: | else: | ||||
Context not available. | |||||
then | then | ||||
# use the official shared library | # use the official shared library | ||||
ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"` | ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"` | ||||
PYTHON_LDFLAGS="-L$ac_python_libdir -l$ac_python_library" | PYTHON_LIBS="-L$ac_python_libdir -l$ac_python_library" | ||||
else | else | ||||
# old way: use libpython from python_configdir | # old way: use libpython from python_configdir | ||||
ac_python_libdir=`$PYTHON -c \ | ac_python_libdir=`$PYTHON -c \ | ||||
"from distutils.sysconfig import get_python_lib as f; \ | "from sysconfig import get_python_lib as f; \ | ||||
import os; \ | import os; \ | ||||
print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"` | print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"` | ||||
PYTHON_LDFLAGS="-L$ac_python_libdir -lpython$ac_python_version" | PYTHON_LIBS="-L$ac_python_libdir -lpython$ac_python_version" | ||||
fi | fi | ||||
if test -z "PYTHON_LDFLAGS"; then | if test -z "PYTHON_LIBS"; then | ||||
AC_MSG_ERROR([ | AC_MSG_ERROR([ | ||||
Cannot determine location of your Python DSO. Please check it was installed with | Cannot determine location of your Python DSO. Please check it was installed with | ||||
dynamic libraries enabled, or try setting PYTHON_LDFLAGS by hand. | dynamic libraries enabled, or try setting PYTHON_LIBS by hand. | ||||
]) | ]) | ||||
fi | fi | ||||
fi | fi | ||||
AC_MSG_RESULT([$PYTHON_LDFLAGS]) | AC_MSG_RESULT([$PYTHON_LIBS]) | ||||
AC_SUBST([PYTHON_LDFLAGS]) | AC_SUBST([PYTHON_LIBS]) | ||||
# | # | ||||
# Check for site packages | # Check for site packages | ||||
# | # | ||||
AC_MSG_CHECKING([for Python site-packages path]) | AC_MSG_CHECKING([for Python site-packages path]) | ||||
if test -z "$PYTHON_SITE_PKG"; then | if test -z "$PYTHON_SITE_PKG"; then | ||||
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ | if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then | ||||
print (distutils.sysconfig.get_python_lib(0,0));"` | PYTHON_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | ||||
print (sysconfig.get_path('purelib'));"` | |||||
else | |||||
# distutils.sysconfig way | |||||
PYTHON_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | |||||
print (sysconfig.get_python_lib(0,0));"` | |||||
fi | |||||
fi | fi | ||||
AC_MSG_RESULT([$PYTHON_SITE_PKG]) | AC_MSG_RESULT([$PYTHON_SITE_PKG]) | ||||
AC_SUBST([PYTHON_SITE_PKG]) | AC_SUBST([PYTHON_SITE_PKG]) | ||||
# | |||||
# Check for platform-specific site packages | |||||
# | |||||
AC_MSG_CHECKING([for Python platform specific site-packages path]) | |||||
if test -z "$PYTHON_SITE_PKG"; then | |||||
if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then | |||||
PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | |||||
print (sysconfig.get_path('platlib'));"` | |||||
else | |||||
# distutils.sysconfig way | |||||
PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | |||||
print (sysconfig.get_python_lib(1,0));"` | |||||
fi | |||||
fi | |||||
AC_MSG_RESULT([$PYTHON_PLATFORM_SITE_PKG]) | |||||
AC_SUBST([PYTHON_PLATFORM_SITE_PKG]) | |||||
# | # | ||||
# libraries which must be linked in when embedding | # libraries which must be linked in when embedding | ||||
# | # | ||||
AC_MSG_CHECKING(python extra libraries) | AC_MSG_CHECKING(python extra libraries) | ||||
if test -z "$PYTHON_EXTRA_LIBS"; then | if test -z "$PYTHON_EXTRA_LIBS"; then | ||||
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \ | PYTHON_EXTRA_LIBS=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | ||||
conf = distutils.sysconfig.get_config_var; \ | conf = sysconfig.get_config_var; \ | ||||
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"` | print (conf('LIBS') + ' ' + conf('SYSLIBS'))"` | ||||
fi | fi | ||||
AC_MSG_RESULT([$PYTHON_EXTRA_LIBS]) | AC_MSG_RESULT([$PYTHON_EXTRA_LIBS]) | ||||
Context not available. | |||||
# | # | ||||
AC_MSG_CHECKING(python extra linking flags) | AC_MSG_CHECKING(python extra linking flags) | ||||
if test -z "$PYTHON_EXTRA_LDFLAGS"; then | if test -z "$PYTHON_EXTRA_LDFLAGS"; then | ||||
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \ | PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "$IMPORT_SYSCONFIG; \ | ||||
conf = distutils.sysconfig.get_config_var; \ | conf = sysconfig.get_config_var; \ | ||||
print (conf('LINKFORSHARED'))"` | print (conf('LINKFORSHARED'))"` | ||||
fi | fi | ||||
AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS]) | AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS]) | ||||
Context not available. | |||||
AC_MSG_CHECKING([consistency of all components of python development environment]) | AC_MSG_CHECKING([consistency of all components of python development environment]) | ||||
# save current global flags | # save current global flags | ||||
ac_save_LIBS="$LIBS" | ac_save_LIBS="$LIBS" | ||||
ac_save_LDFLAGS="$LDFLAGS" | |||||
ac_save_CPPFLAGS="$CPPFLAGS" | ac_save_CPPFLAGS="$CPPFLAGS" | ||||
LIBS="$ac_save_LIBS $PYTHON_LDFLAGS $PYTHON_EXTRA_LDFLAGS $PYTHON_EXTRA_LIBS" | LIBS="$ac_save_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_EXTRA_LIBS" | ||||
LDFLAGS="$ac_save_LDFLAGS $PYTHON_EXTRA_LDFLAGS" | |||||
CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS" | CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS" | ||||
AC_LANG_PUSH([C]) | AC_LANG_PUSH([C]) | ||||
AC_LINK_IFELSE([ | AC_LINK_IFELSE([ | ||||
Context not available. | |||||
# turn back to default flags | # turn back to default flags | ||||
CPPFLAGS="$ac_save_CPPFLAGS" | CPPFLAGS="$ac_save_CPPFLAGS" | ||||
LIBS="$ac_save_LIBS" | LIBS="$ac_save_LIBS" | ||||
LDFLAGS="$ac_save_LDFLAGS" | |||||
AC_MSG_RESULT([$pythonexists]) | AC_MSG_RESULT([$pythonexists]) | ||||
if test ! "x$pythonexists" = "xyes"; then | if test ! "x$pythonexists" = "xyes"; then | ||||
# gpgme: only warn here, no error, as we are looking for multiple versions | |||||
AC_MSG_WARN([ | AC_MSG_WARN([ | ||||
Could not link test program to Python. Maybe the main Python library has been | Could not link test program to Python. Maybe the main Python library has been | ||||
installed in some non-standard library path. If so, pass it to configure, | installed in some non-standard library path. If so, pass it to configure, | ||||
via the LDFLAGS environment variable. | via the LIBS environment variable. | ||||
Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib" | Example: ./configure LIBS="-L/usr/non-standard-path/python/lib" | ||||
============================================================================ | ============================================================================ | ||||
You probably have to install the development version of the Python package | You probably have to install the development version of the Python package | ||||
for your distribution. The exact name of this package varies among them. | for your distribution. The exact name of this package varies among them. | ||||
Context not available. | |||||
# | # | ||||
# all done! | # all done! | ||||
# | # | ||||
]) | ]) | ||||
No newline at end of file | |||||
Context not available. |