Changeset View
Changeset View
Standalone View
Standalone View
contrib/ldns/ax_python_devel.m4
# =========================================================================== | # =========================================================================== | ||||
# http://www.gnu.org/software/autoconf-archive/ax_python_devel.html | # https://www.gnu.org/software/autoconf-archive/ax_python_devel.html | ||||
# =========================================================================== | # =========================================================================== | ||||
# | # | ||||
# SYNOPSIS | # SYNOPSIS | ||||
# | # | ||||
# AX_PYTHON_DEVEL([version]) | # AX_PYTHON_DEVEL([version]) | ||||
# | # | ||||
# DESCRIPTION | # DESCRIPTION | ||||
# | # | ||||
# Note: Defines as a precious variable "PYTHON_VERSION". Don't override it | # Note: Defines as a precious variable "PYTHON_VERSION". Don't override it | ||||
# 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 | ||||
# parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please | # parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please | ||||
# note that you *have* to pass also an operator along with the version to | # note that you *have* to pass also an operator along with the version to | ||||
# match, and pay special attention to the single quotes surrounding the | # match, and pay special attention to the single quotes surrounding the | ||||
# version number. Don't use "PYTHON_VERSION" for this: that environment | # version number. Don't use "PYTHON_VERSION" for this: that environment | ||||
# variable is declared as precious and thus reserved for the end-user. | # variable is declared as precious and thus reserved for the end-user. | ||||
Show All 22 Lines | |||||
# option) any later version. | # option) any later version. | ||||
# | # | ||||
# This program is distributed in the hope that it will be useful, but | # This program is distributed in the hope that it will be useful, but | ||||
# WITHOUT ANY WARRANTY; without even the implied warranty of | # WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | ||||
# Public License for more details. | # Public License for more details. | ||||
# | # | ||||
# You should have received a copy of the GNU General Public License along | # You should have received a copy of the GNU General Public License along | ||||
# with this program. If not, see <http://www.gnu.org/licenses/>. | # with this program. If not, see <https://www.gnu.org/licenses/>. | ||||
# | # | ||||
# As a special exception, the respective Autoconf Macro's copyright owner | # As a special exception, the respective Autoconf Macro's copyright owner | ||||
# gives unlimited permission to copy, distribute and modify the configure | # gives unlimited permission to copy, distribute and modify the configure | ||||
# scripts that are the output of Autoconf when processing the Macro. You | # scripts that are the output of Autoconf when processing the Macro. You | ||||
# need not follow the terms of the GNU General Public License when using | # need not follow the terms of the GNU General Public License when using | ||||
# or distributing such scripts, even though portions of the text of the | # or distributing such scripts, even though portions of the text of the | ||||
# Macro appear in them. The GNU General Public License (GPL) does govern | # Macro appear in them. The GNU General Public License (GPL) does govern | ||||
# all other use of the material that constitutes the Autoconf Macro. | # all other use of the material that constitutes the Autoconf Macro. | ||||
# | # | ||||
# This special exception to the GPL applies to versions of the Autoconf | # This special exception to the GPL applies to versions of the Autoconf | ||||
# Macro released by the Autoconf Archive. When you make and distribute a | # Macro released by the Autoconf Archive. When you make and distribute a | ||||
# 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 16 | #serial 21 | ||||
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],[ | ||||
# | # | ||||
# Allow the use of a (user set) custom python version | # Allow the use of a (user set) custom python version | ||||
# | # | ||||
AC_ARG_VAR([PYTHON_VERSION],[The installed Python | AC_ARG_VAR([PYTHON_VERSION],[The installed Python | ||||
version to use, for example '2.3'. This string | version to use, for example '2.3'. This string | ||||
Show All 15 Lines | ac_supports_python_ver=`$PYTHON -c "import sys; \ | ||||
print (ver >= '2.1.0')"` | print (ver >= '2.1.0')"` | ||||
if test "$ac_supports_python_ver" != "True"; then | if test "$ac_supports_python_ver" != "True"; then | ||||
if test -z "$PYTHON_NOVERSIONCHECK"; then | if test -z "$PYTHON_NOVERSIONCHECK"; then | ||||
AC_MSG_RESULT([no]) | AC_MSG_RESULT([no]) | ||||
AC_MSG_FAILURE([ | AC_MSG_FAILURE([ | ||||
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. | ||||
]) | ]) | ||||
else | else | ||||
AC_MSG_RESULT([skip at user request]) | AC_MSG_RESULT([skip at user request]) | ||||
fi | fi | ||||
else | else | ||||
Show All 21 Lines | ]) | ||||
fi | fi | ||||
fi | fi | ||||
# | # | ||||
# 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 distutils Python package]) | ||||
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` | ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` | ||||
if test -z "$ac_distutils_result"; then | if test $? -eq 0; then | ||||
AC_MSG_RESULT([yes]) | AC_MSG_RESULT([yes]) | ||||
else | else | ||||
AC_MSG_RESULT([no]) | AC_MSG_RESULT([no]) | ||||
AC_MSG_ERROR([cannot import Python module "distutils". | 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_distutils_result]) | ||||
PYTHON_VERSION="" | PYTHON_VERSION="" | ||||
fi | fi | ||||
Show All 18 Lines | $ac_distutils_result]) | ||||
fi | fi | ||||
AC_MSG_RESULT([$PYTHON_CPPFLAGS]) | AC_MSG_RESULT([$PYTHON_CPPFLAGS]) | ||||
AC_SUBST([PYTHON_CPPFLAGS]) | AC_SUBST([PYTHON_CPPFLAGS]) | ||||
# | # | ||||
# 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 distutils.sysconfig import * | ||||
e = get_config_var('VERSION') | e = get_config_var('VERSION') | ||||
Show All 38 Lines | EOD` | ||||
# This small piece shamelessly adapted from PostgreSQL python macro; | # This small piece shamelessly adapted from PostgreSQL python macro; | ||||
# credits goes to momjian, I think. I'd like to put the right name | # credits goes to momjian, I think. I'd like to put the right name | ||||
# in the credits, if someone can point me in the right direction... ? | # in the credits, if someone can point me in the right direction... ? | ||||
# | # | ||||
if test -n "$ac_python_libdir" -a -n "$ac_python_library" | if test -n "$ac_python_libdir" -a -n "$ac_python_library" | ||||
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 distutils.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; \ | PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ | ||||
print (distutils.sysconfig.get_python_lib(1,0));"` | print (distutils.sysconfig.get_python_lib(1,0));"` | ||||
fi | fi | ||||
AC_MSG_RESULT([$PYTHON_SITE_PKG]) | AC_MSG_RESULT([$PYTHON_SITE_PKG]) | ||||
AC_SUBST([PYTHON_SITE_PKG]) | AC_SUBST([PYTHON_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 distutils.sysconfig; \ | ||||
conf = distutils.sysconfig.get_config_var; \ | conf = distutils.sysconfig.get_config_var; \ | ||||
print (conf('LIBS'))"` | print (conf('LIBS') + ' ' + conf('SYSLIBS'))"` | ||||
fi | fi | ||||
AC_MSG_RESULT([$PYTHON_EXTRA_LIBS]) | AC_MSG_RESULT([$PYTHON_EXTRA_LIBS]) | ||||
AC_SUBST(PYTHON_EXTRA_LIBS) | AC_SUBST(PYTHON_EXTRA_LIBS) | ||||
# | # | ||||
# linking flags needed when embedding | # linking flags needed when embedding | ||||
# | # | ||||
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 distutils.sysconfig; \ | ||||
conf = distutils.sysconfig.get_config_var; \ | conf = distutils.sysconfig.get_config_var; \ | ||||
print (conf('LINKFORSHARED'))"` | print (conf('LINKFORSHARED'))"` | ||||
fi | fi | ||||
AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS]) | AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS]) | ||||
AC_SUBST(PYTHON_EXTRA_LDFLAGS) | AC_SUBST(PYTHON_EXTRA_LDFLAGS) | ||||
# | # | ||||
# final check to see if everything compiles alright | # final check to see if everything compiles alright | ||||
# | # | ||||
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([ | ||||
AC_LANG_PROGRAM([[#include <Python.h>]], | AC_LANG_PROGRAM([[#include <Python.h>]], | ||||
[[Py_Initialize();]]) | [[Py_Initialize();]]) | ||||
],[pythonexists=yes],[pythonexists=no]) | ],[pythonexists=yes],[pythonexists=no]) | ||||
AC_LANG_POP([C]) | AC_LANG_POP([C]) | ||||
# 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 | ||||
AC_MSG_FAILURE([ | AC_MSG_FAILURE([ | ||||
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" | ||||
============================================================================ | ============================================================================ | ||||
ERROR! | ERROR! | ||||
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. | ||||
============================================================================ | ============================================================================ | ||||
]) | ]) | ||||
PYTHON_VERSION="" | PYTHON_VERSION="" | ||||
fi | fi | ||||
# | # | ||||
# all done! | # all done! | ||||
# | # | ||||
]) | ]) |