Changeset View
Changeset View
Standalone View
Standalone View
m4/python.m4
## ------------------------ -*- Autoconf -*- | ## ------------------------ -*- Autoconf -*- | ||||
## Python file handling | ## Python file handling | ||||
## From Andrew Dalke | ## From Andrew Dalke | ||||
## Updated by James Henstridge | ## Updated by James Henstridge and other contributors. | ||||
## Updated by Werner Koch 2018-10-17 | ## Updated by Werner Koch 2018-10-17 | ||||
## --------------------------------- | ## ------------------------ | ||||
# Copyright (C) 1999-2017 Free Software Foundation, Inc. | # Copyright (C) 1999-2021 Free Software Foundation, Inc. | ||||
# | # | ||||
# This file is free software; the Free Software Foundation | # This file is free software; the Free Software Foundation | ||||
# gives unlimited permission to copy and/or distribute it, | # gives unlimited permission to copy and/or distribute it, | ||||
Context not available. | |||||
# numbers and dots only. | # numbers and dots only. | ||||
AC_DEFUN([AM_PATH_PYTHON], | AC_DEFUN([AM_PATH_PYTHON], | ||||
[ | [ | ||||
dnl Find a Python interpreter. Python versions prior to 2.0 are not | dnl Find a Python interpreter. Python versions prior to 2.7 are not | ||||
dnl supported. (2.0 was released on October 16, 2000). Python 3.0 | dnl supported. Python 3.0 through to Python 3.3 are also not supported. | ||||
dnl through to Python 3.9 are also not supported. | |||||
m4_define_default([_AM_PYTHON_INTERPRETER_LIST], | m4_define_default([_AM_PYTHON_INTERPRETER_LIST], | ||||
[python2 python2.7 dnl | [python2 python2.7 dnl | ||||
python dnl | python dnl | ||||
python3 python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 | python3 python3.10 python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 | ||||
]) | ]) | ||||
AC_ARG_VAR([PYTHON], [the Python interpreter]) | AC_ARG_VAR([PYTHON], [the Python interpreter]) | ||||
Context not available. | |||||
]) | ]) | ||||
if test "$PYTHON" = :; then | if test "$PYTHON" = :; then | ||||
dnl Run any user-specified action, or abort. | dnl Run any user-specified action, or abort. | ||||
m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) | m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) | ||||
else | else | ||||
dnl Query Python for its version number. Getting [:3] seems to be | dnl Query Python for its version number. Although site.py simply uses | ||||
dnl the best way to do this; it's what "site.py" does in the standard | dnl sys.version[:3], printing that failed with Python 3.10, since the | ||||
dnl library. | dnl trailing zero was eliminated. So now we output just the major | ||||
dnl and minor version numbers, as numbers. Apparently the tertiary | |||||
dnl version is not of interest. | |||||
dnl | |||||
AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], | AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], | ||||
[am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) | [am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[[:2]])"`]) | ||||
AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) | AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) | ||||
dnl Use the values of $prefix and $exec_prefix for the corresponding | dnl At times, e.g., when building shared libraries, you may want | ||||
dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made | |||||
dnl distinct variables so they can be overridden if need be. However, | |||||
dnl general consensus is that you shouldn't need this ability. | |||||
AC_SUBST([PYTHON_PREFIX], ['${prefix}']) | |||||
AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) | |||||
dnl At times (like when building shared libraries) you may want | |||||
dnl to know which OS platform Python thinks this is. | dnl to know which OS platform Python thinks this is. | ||||
dnl | |||||
AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], | AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], | ||||
[am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) | [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) | ||||
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) | AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) | ||||
# Just factor out some code duplication. | dnl emacs-page | ||||
dnl If --with-python-sys-prefix is given, use the values of sys.prefix | |||||
dnl and sys.exec_prefix for the corresponding values of PYTHON_PREFIX | |||||
dnl and PYTHON_EXEC_PREFIX. Otherwise, use the GNU ${prefix} and | |||||
dnl ${exec_prefix} variables. | |||||
dnl | |||||
dnl The two are made distinct variables so they can be overridden if | |||||
dnl need be, although general consensus is that you shouldn't need | |||||
dnl this separation. | |||||
dnl | |||||
dnl Also allow directly setting the prefixes via configure options, | |||||
dnl overriding any default. | |||||
dnl | |||||
if test "x$prefix" = xNONE; then | |||||
am__usable_prefix=$ac_default_prefix | |||||
else | |||||
am__usable_prefix=$prefix | |||||
fi | |||||
# Allow user to request using sys.* values from Python, | |||||
# instead of the GNU $prefix values. | |||||
AC_ARG_WITH([python-sys-prefix], | |||||
[AS_HELP_STRING([--with-python-sys-prefix], | |||||
[use Python's sys.prefix and sys.exec_prefix values])], | |||||
[am_use_python_sys=:], | |||||
[am_use_python_sys=false]) | |||||
# Allow user to override whatever the default Python prefix is. | |||||
AC_ARG_WITH([python_prefix], | |||||
[AS_HELP_STRING([--with-python_prefix], | |||||
[override the default PYTHON_PREFIX])], | |||||
[am_python_prefix_subst=$withval | |||||
am_cv_python_prefix=$withval | |||||
AC_MSG_CHECKING([for explicit $am_display_PYTHON prefix]) | |||||
AC_MSG_RESULT([$am_cv_python_prefix])], | |||||
[ | |||||
if $am_use_python_sys; then | |||||
# using python sys.prefix value, not GNU | |||||
AC_CACHE_CHECK([for python default $am_display_PYTHON prefix], | |||||
[am_cv_python_prefix], | |||||
[am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`]) | |||||
dnl If sys.prefix is a subdir of $prefix, replace the literal value of | |||||
dnl $prefix with a variable reference so it can be overridden. | |||||
case $am_cv_python_prefix in | |||||
$am__usable_prefix*) | |||||
am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'` | |||||
am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"` | |||||
;; | |||||
*) | |||||
am_python_prefix_subst=$am_cv_python_prefix | |||||
;; | |||||
esac | |||||
else # using GNU prefix value, not python sys.prefix | |||||
am_python_prefix_subst='${prefix}' | |||||
am_python_prefix=$am_python_prefix_subst | |||||
AC_MSG_CHECKING([for GNU default $am_display_PYTHON prefix]) | |||||
AC_MSG_RESULT([$am_python_prefix]) | |||||
fi]) | |||||
# Substituting python_prefix_subst value. | |||||
AC_SUBST([PYTHON_PREFIX], [$am_python_prefix_subst]) | |||||
# emacs-page Now do it all over again for Python exec_prefix, but with yet | |||||
# another conditional: fall back to regular prefix if that was specified. | |||||
AC_ARG_WITH([python_exec_prefix], | |||||
[AS_HELP_STRING([--with-python_exec_prefix], | |||||
[override the default PYTHON_EXEC_PREFIX])], | |||||
[am_python_exec_prefix_subst=$withval | |||||
am_cv_python_exec_prefix=$withval | |||||
AC_MSG_CHECKING([for explicit $am_display_PYTHON exec_prefix]) | |||||
AC_MSG_RESULT([$am_cv_python_exec_prefix])], | |||||
[ | |||||
# no explicit --with-python_exec_prefix, but if | |||||
# --with-python_prefix was given, use its value for python_exec_prefix too. | |||||
AS_IF([test -n "$with_python_prefix"], | |||||
[am_python_exec_prefix_subst=$with_python_prefix | |||||
am_cv_python_exec_prefix=$with_python_prefix | |||||
AC_MSG_CHECKING([for python_prefix-given $am_display_PYTHON exec_prefix]) | |||||
AC_MSG_RESULT([$am_cv_python_exec_prefix])], | |||||
[ | |||||
# Set am__usable_exec_prefix whether using GNU or Python values, | |||||
# since we use that variable for pyexecdir. | |||||
if test "x$exec_prefix" = xNONE; then | |||||
am__usable_exec_prefix=$am__usable_prefix | |||||
else | |||||
am__usable_exec_prefix=$exec_prefix | |||||
fi | |||||
# | |||||
if $am_use_python_sys; then # using python sys.exec_prefix, not GNU | |||||
AC_CACHE_CHECK([for python default $am_display_PYTHON exec_prefix], | |||||
[am_cv_python_exec_prefix], | |||||
[am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`]) | |||||
dnl If sys.exec_prefix is a subdir of $exec_prefix, replace the | |||||
dnl literal value of $exec_prefix with a variable reference so it can | |||||
dnl be overridden. | |||||
case $am_cv_python_exec_prefix in | |||||
$am__usable_exec_prefix*) | |||||
am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'` | |||||
am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"` | |||||
;; | |||||
*) | |||||
am_python_exec_prefix_subst=$am_cv_python_exec_prefix | |||||
;; | |||||
esac | |||||
else # using GNU $exec_prefix, not python sys.exec_prefix | |||||
am_python_exec_prefix_subst='${exec_prefix}' | |||||
am_python_exec_prefix=$am_python_exec_prefix_subst | |||||
AC_MSG_CHECKING([for GNU default $am_display_PYTHON exec_prefix]) | |||||
AC_MSG_RESULT([$am_python_exec_prefix]) | |||||
fi])]) | |||||
# Substituting python_exec_prefix_subst. | |||||
AC_SUBST([PYTHON_EXEC_PREFIX], [$am_python_exec_prefix_subst]) | |||||
# Factor out some code duplication into this shell variable. | |||||
am_python_setup_sysconfig="\ | am_python_setup_sysconfig="\ | ||||
import sys | import sys | ||||
# Prefer sysconfig over distutils.sysconfig, for better compatibility | # Prefer sysconfig over distutils.sysconfig, for better compatibility | ||||
Context not available. | |||||
except ImportError: | except ImportError: | ||||
pass" | pass" | ||||
dnl Set up 4 directories: | dnl emacs-page Set up 4 directories: | ||||
dnl pythondir -- where to install python scripts. This is the | dnl 1. pythondir: where to install python scripts. This is the | ||||
dnl site-packages directory, not the python standard library | dnl site-packages directory, not the python standard library | ||||
dnl directory like in previous automake betas. This behavior | dnl directory like in previous automake betas. This behavior | ||||
dnl is more consistent with lispdir.m4 for example. | dnl is more consistent with lispdir.m4 for example. | ||||
dnl Query distutils for this directory. | dnl Query distutils for this directory. | ||||
AC_CACHE_CHECK([for $am_display_PYTHON script directory], | dnl | ||||
[am_cv_python_pythondir], | AC_CACHE_CHECK([for $am_display_PYTHON script directory (pythondir)], | ||||
[if test "x$prefix" = xNONE | [am_cv_python_pythondir], | ||||
then | [if test "x$am_cv_python_prefix" = x; then | ||||
am_py_prefix=$ac_default_prefix | am_py_prefix=$am__usable_prefix | ||||
else | else | ||||
am_py_prefix=$prefix | am_py_prefix=$am_cv_python_prefix | ||||
fi | fi | ||||
am_cv_python_pythondir=`$PYTHON -c " | am_cv_python_pythondir=`$PYTHON -c " | ||||
$am_python_setup_sysconfig | $am_python_setup_sysconfig | ||||
if can_use_sysconfig: | if can_use_sysconfig: | ||||
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) | sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) | ||||
else: | else: | ||||
from distutils import sysconfig | from distutils import sysconfig | ||||
sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') | sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') | ||||
sys.stdout.write(sitedir)"` | sys.stdout.write(sitedir)"` | ||||
case $am_cv_python_pythondir in | # | ||||
$am_py_prefix*) | case $am_cv_python_pythondir in | ||||
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` | $am_py_prefix*) | ||||
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` | am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` | ||||
;; | am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"` | ||||
*) | ;; | ||||
case $am_py_prefix in | *) | ||||
/usr|/System*) ;; | case $am_py_prefix in | ||||
*) | /usr|/System*) ;; | ||||
am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages | *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages" | ||||
;; | ;; | ||||
esac | |||||
;; | |||||
esac | esac | ||||
]) | ;; | ||||
esac | |||||
]) | |||||
AC_SUBST([pythondir], [$am_cv_python_pythondir]) | AC_SUBST([pythondir], [$am_cv_python_pythondir]) | ||||
dnl pkgpythondir -- $PACKAGE directory under pythondir. Was | dnl 2. pkgpythondir: $PACKAGE directory under pythondir. Was | ||||
dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is | dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is | ||||
dnl more consistent with the rest of automake. | dnl more consistent with the rest of automake. | ||||
dnl | |||||
AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) | AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) | ||||
dnl pyexecdir -- directory for installing python extension modules | dnl 3. pyexecdir: directory for installing python extension modules | ||||
dnl (shared libraries) | dnl (shared libraries). | ||||
dnl Query distutils for this directory. | dnl Query distutils for this directory. | ||||
AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], | dnl | ||||
[am_cv_python_pyexecdir], | AC_CACHE_CHECK([for $am_display_PYTHON extension module directory (pyexecdir)], | ||||
[if test "x$exec_prefix" = xNONE | [am_cv_python_pyexecdir], | ||||
then | [if test "x$am_cv_python_exec_prefix" = x; then | ||||
am_py_exec_prefix=$am_py_prefix | am_py_exec_prefix=$am__usable_exec_prefix | ||||
else | else | ||||
am_py_exec_prefix=$exec_prefix | am_py_exec_prefix=$am_cv_python_exec_prefix | ||||
fi | fi | ||||
am_cv_python_pyexecdir=`$PYTHON -c " | am_cv_python_pyexecdir=`$PYTHON -c " | ||||
$am_python_setup_sysconfig | $am_python_setup_sysconfig | ||||
if can_use_sysconfig: | if can_use_sysconfig: | ||||
sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) | sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'}) | ||||
else: | else: | ||||
from distutils import sysconfig | from distutils import sysconfig | ||||
sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') | sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix') | ||||
sys.stdout.write(sitedir)"` | sys.stdout.write(sitedir)"` | ||||
case $am_cv_python_pyexecdir in | # | ||||
$am_py_exec_prefix*) | case $am_cv_python_pyexecdir in | ||||
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` | $am_py_exec_prefix*) | ||||
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` | am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` | ||||
;; | am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"` | ||||
*) | ;; | ||||
case $am_py_exec_prefix in | *) | ||||
/usr|/System*) ;; | case $am_py_exec_prefix in | ||||
*) | /usr|/System*) ;; | ||||
am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages | *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages" | ||||
;; | ;; | ||||
esac | |||||
;; | |||||
esac | esac | ||||
]) | ;; | ||||
esac | |||||
]) | |||||
AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) | AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) | ||||
dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) | dnl 4. pkgpyexecdir: $(pyexecdir)/$(PACKAGE) | ||||
dnl | |||||
AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) | AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) | ||||
dnl Run any user-specified action. | dnl Run any user-specified action. | ||||
$2 | $2 | ||||
fi | fi | ||||
]) | ]) | ||||
Context not available. |