+++ /dev/null
-##### http://autoconf-archive.cryp.to/az_python.html
-#
-# SYNOPSIS
-#
-# AZ_PYTHON_DEFAULT
-# AZ_PYTHON_ENABLE
-# AZ_PYTHON_WITH
-# AZ_PYTHON_PATH
-# AZ_PYTHON_VERSION_ENSURE( [2.2] )
-# AZ_PYTHON_CSPEC
-# AZ_PYTHON_LSPEC
-#
-# DESCRIPTION
-#
-# This file provides autoconf support for those applications that
-# want to embed python. It supports all pythons >= 2.2 which is the
-# first official release containing distutils. Version 2.2 of python
-# was released December 21, 2001. Since it actually executes the
-# python, cross platform configuration will probably not work. Also,
-# most of the platforms supported are consistent until you look into
-# MacOSX. The python included with it is installed as a framework
-# which is a very different environment to set up the normal tools
-# such as gcc and libtool to deal with. Therefore, once we establish
-# which python that we are going to use, we use its distutils to
-# actually compile and link our modules or applications.
-#
-# At this time, it does NOT support linking with Python statically.
-# It does support dynamic linking.
-#
-# This set of macros help define $PYTHON, $PYTHON_USE, $PYTHON_CSPEC
-# and $PYTHON_LSPEC. $PYTHON defines the full executable path for the
-# Python being linked to and is used within these macros to determine
-# if that has been specified or found. These macros do execute this
-# python version so it must be present on the system at configure
-# time.
-#
-# $PYTHON_USE is an automake variable that defines whether Python
-# support should be included or not in your application.
-# $PYTHON_CSPEC is a variable that supplies additional CFLAGS for the
-# compilation of the application/shared library. $PYTHON_LSPEC is a
-# variable that supplies additional LDFLAGS for linking the
-# application/shared library.
-#
-# The following is an example of how to set up for python usage
-# within your application in your configure.in:
-#
-# AZ_PYTHON_DEFAULT( )
-# AZ_PYTHON_ENABLE( ) # Optional
-# AZ_PYTHON_WITH( ) # Optional
-# AZ_PYTHON_PATH( ) # or AZ_PYTHON_INSIST( )
-# # if $PYTHON is not defined, then the following do nothing.
-# AZ_PYTHON_VERSION_ENSURE( [2.2] )
-# AZ_PYTHON_CSPEC
-# AZ_PYTHON_LSPEC
-#
-# The AZ_PYTHON_DEFAULT sets the $PYTHON_USE to false. Thereby,
-# excluding it if it was optional.
-#
-# The AZ_PYTHON_ENABLE looks for the optional configure parameters of
-# --enable-python/--disable-python and establishes the $PYTHON and
-# $PYTHON_USE variables accordingly.
-#
-# The AZ_PYTHON_WITH looks for the optional configure parameters of
-# --with-python/--without-python and establishes the $PYTHON and
-# $PYTHON_USE variables accordingly.
-#
-# The AZ_PYTHON_PATH looks for python assuming that none has been
-# previously found or defined and issues an error if it does not find
-# it. If it does find it, it establishes the $PYTHON and $PYTHON_USE
-# variables accordingly. AZ_PYTHON_INSIST could be used here instead
-# if you want to insist that Python support be included using the
-# --enable-python or --with-python checks previously done.
-#
-# The AZ_PYTHON_VERSION_ENSURE issues an error if the Python
-# previously found is not of version 2.2 or greater.
-#
-# Once that these macros have be run, we can use PYTHON_USE within
-# the makefile.am file to conditionally add the Python support such
-# as:
-#
-# Makefile.am example showing optional inclusion of directories:
-#
-# if PYTHON_USE
-# plugins = plugins
-# src = src
-# else
-# plugins =
-# src =
-# endif
-#
-# SUBDIRS = . $(plugins) $(src)
-#
-# Makefile.am example showing optional shared library build:
-#
-# if PYTHON_USE
-# lib_LTLIBRARIES = libElemList.la
-# libElemList_la_SOURCES = libElemList.c
-# libElemList_la_CFLAGS = @PYTHON_CSPEC@
-# libElemList_la_LDFLAGS = @PYTHON_LSPEC@
-# endif
-#
-# Makefile.am example showing optional program build:
-#
-# if PYTHON_USE
-# bin_PROGRAMS = runFunc
-# runFunc_SOURCES = runFunc.c
-# runFunc_CFLAGS = @PYTHON_CSPEC@
-# runFunc_LDFLAGS = @PYTHON_LSPEC@
-# endif
-#
-# The above compiles the modules only if PYTHON_USE was specified as
-# true. Also, the else portion of the if was optional.
-#
-# LAST MODIFICATION
-#
-# 2007-08-04
-#
-# COPYLEFT
-#
-# Copyright (c) 2007 Robert White <kranki@mac.com>
-# Copyright (c) 2007 Dustin J. Mitchell <dustin@cs.uchicago.edu>
-#
-# Copying and distribution of this file, with or without
-# modification, are permitted in any medium without royalty provided
-# the copyright notice and this notice are preserved.
-
-# AZ_PYTHON_DEFAULT( )
-# -----------------
-# Sets the default to not include Python support.
-
-AC_DEFUN([AZ_PYTHON_DEFAULT],
-[
- az_python_use=false
- AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true")
-])
-
-
-
-# AZ_PYTHON_ENABLE( [path] )
-# -----------------------------------------------------------------
-# Handles the various --enable-python commands.
-# Input:
-# $1 is the optional search path for the python executable if needed
-# Ouput:
-# PYTHON_USE (AM_CONDITIONAL) is true if python executable found
-# and --enable-python was requested; otherwise false.
-# $PYTHON contains the full executable path to python if PYTHON_ENABLE_USE
-# is true.
-#
-# Example:
-# AZ_PYTHON_ENABLE( )
-# or
-# AZ_PYTHON_ENABLE( "/usr/bin" )
-
-AC_DEFUN([AZ_PYTHON_ENABLE],
-[
- AC_ARG_VAR([PYTHON],[Python Executable Path])
-
- # unless PYTHON was supplied to us (as a precious variable),
- # see if --enable-python[=PythonExecutablePath], --enable-python,
- # --disable-python or --enable-python=no was given.
- if test -z "$PYTHON"
- then
- AC_MSG_CHECKING(for --enable-python)
- AC_ARG_ENABLE(
- python,
- AC_HELP_STRING([--enable-python@<:@=PYTHON@:>@],
- [absolute path name of Python executable]
- ),
- [
- if test "$enableval" = "yes"
- then
- # "yes" was specified, but we don't have a path
- # for the executable.
- # So, let's searth the PATH Environment Variable.
- AC_MSG_RESULT(yes)
- AC_PATH_PROG(
- [PYTHON],
- python,
- [],
- $1
- )
- if test -z "$PYTHON"
- then
- AC_MSG_ERROR(no path to python found)
- fi
- az_python_use=true
- AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true")
- AZ_PYTHON_PREFIX( )
- elif test "$enableval" = "no"
- then
- AC_MSG_RESULT(no)
- az_python_use=false
- AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true")
- else
- # $enableval must be the executable path then.
- AC_SUBST([PYTHON], ["${enableval}"])
- AC_MSG_RESULT($withval)
- az_python_use=true
- AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true")
- AZ_PYTHON_PREFIX( )
- fi
- ],
- [
- # --with-python was not specified.
- AC_MSG_RESULT(no)
- az_python_use=false
- AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true")
- ]
- )
- fi
-
-])
-
-
-
-# AZ_PYTHON_CSPEC( )
-# -----------------
-# Set up the c compiler options to compile Python
-# embedded programs/libraries in $PYTHON_CSPEC if
-# $PYTHON has been defined.
-
-AC_DEFUN([AZ_PYTHON_CSPEC],
-[
- AC_ARG_VAR( [PYTHON], [Python Executable Path] )
- if test -n "$PYTHON"
- then
- AC_MSG_CHECKING([for python include directory])
- az_python_prefix=`${PYTHON} -c "import sys; print sys.prefix"`
- if test -z "$az_python_prefix"
- then
- AC_MSG_ERROR([Python Prefix is not known])
- fi
- python_path=
- az_python_execprefix=`${PYTHON} -c "import sys; print sys.exec_prefix"`
- az_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`
- az_python_includespec="-I`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc();'`"
- if test x"$python_prefix" != x"$python_execprefix"; then
- az_python_execspec="-I${az_python_execprefix}/include/python${az_python_version}"
- az_python_includespec="${az_python_includespec} $az_python_execspec"
- fi
- az_python_ccshared=`${PYTHON} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('CFLAGSFORSHARED')"`
- az_python_cspec="${az_python_ccshared} ${az_python_includespec}"
- AC_SUBST([PYTHON_CSPEC], [${az_python_cspec}])
- AC_SUBST([PYTHON_CPPFLAGS], [${az_python_includespec}])
- AC_SUBST([PYTHON_SHORTVERSION], ["${az_python_version}"])
- AC_MSG_RESULT([$PYTHON_CPPFLAGS])
- fi
-])
-
-
-
-# AZ_PYTHON_INSIST( )
-# -----------------
-# Look for Python and set the output variable 'PYTHON'
-# to 'python' if found, empty otherwise.
-
-AC_DEFUN([AZ_PYTHON_PATH],
-[
- AC_ARG_VAR( [PYTHON], [Python Executable Path] )
- if test -z "$PYTHON"
- then
- AC_MSG_ERROR([Python Executable not found])
- fi
-])
-
-
-
-# AZ_PYTHON_LSPEC( )
-# -----------------
-# Set up the linker options to link Python embedded
-# programs/libraries in $PYTHON_LSPEC if $PYTHON
-# has been defined.
-
-AC_DEFUN([AZ_PYTHON_LSPEC],
-[
- AC_ARG_VAR( [PYTHON], [Python Executable Path] )
- if test -n "$PYTHON"
- then
- AC_MSG_CHECKING([for python linker flags])
- AZ_PYTHON_RUN([
-import sys
-import distutils.sysconfig
-strUseFrameWork = "--enable-framework"
-dictConfig = distutils.sysconfig.get_config_vars( )
-strConfigArgs = dictConfig.get("CONFIG_ARGS")
-strLinkSpec = dictConfig.get('LDFLAGS')
-if -1 == strConfigArgs.find(strUseFrameWork):
- strLibPL = dictConfig.get("LIBPL")
- if strLibPL and (strLibPL != ""):
- strLinkSpec += " -L%s" % (strLibPL)
- strSys = dictConfig.get("SYSLIBS")
- if strSys and (strSys != ""):
- strLinkSpec += " %s" % (strSys)
- strSHL = dictConfig.get("SHLIBS")
- if strSHL and (strSHL != ""):
- strLinkSpec += " %s" % (strSHL)
- # Construct the Python Library Name.
- strTmplte = " -lpython%d.%d"
- if (sys.platform == "win32") or (sys.platform == "os2emx"):
- strTmplte = " -lpython%d%d"
- strWrk = strTmplte % ( (sys.hexversion >> 24),
- ((sys.hexversion >> 16) & 0xff))
- strLinkSpec += strWrk
-else:
- # This is not ideal since it changes the search path
- # for Frameworks which could have side-effects on
- # other included Frameworks. However, it is necessary
- # where someone has installed more than one frameworked
- # Python. Frameworks are really only used in MacOSX.
- strLibFW = dictConfig.get("PYTHONFRAMEWORKPREFIX")
- if strLibFW and (strLibFW != ""):
- strLinkSpec += " -F%s" % (strLibFW)
-strLinkSpec += " %s" % (dictConfig.get('LINKFORSHARED'))
-print strLinkSpec
- ])
- AC_SUBST([PYTHON_LSPEC], [${az_python_output}])
- az_python_ldflags=`${PYTHON} -c "import distutils.sysconfig; \
- print '-L' + distutils.sysconfig.get_python_lib(), '-lpython' + \
- distutils.sysconfig.get_config_var('VERSION');"`
- AC_SUBST([PYTHON_LDFLAGS], [${az_python_ldflags}])
- AC_MSG_RESULT([$PYTHON_LDFLAGS])
- fi
-])
-
-
-
-# AZ_PYTHON_PATH( )
-# -----------------
-# Look for Python and set the output variable 'PYTHON'
-# to 'python' if found, empty otherwise.
-
-AC_DEFUN([AZ_PYTHON_PATH],
-[
- AC_ARG_VAR( [PYTHON], [Python Executable Path] )
- AC_PATH_PROG( PYTHON, python, [], $1 )
- if test -z "$PYTHON"
- then
- AC_MSG_ERROR([Python Executable not found])
- else
- az_python_use=true
- fi
- AM_CONDITIONAL(PYTHON_USE, test "$az_python_use" = "true")
-])
-
-
-
-# AZ_PYTHON_PREFIX( )
-# -------------------
-# Use the values of $prefix and $exec_prefix for the corresponding
-# values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.
-
-AC_DEFUN([AZ_PYTHON_PREFIX],
-[
- if test -z "$PYTHON"
- then
- AC_MSG_ERROR([Python Executable Path is not known])
- fi
- AC_MSG_CHECKING([for python extension install directory])
- ax_python_prefix=`${PYTHON} -c "import sys; print sys.prefix"`
- ax_python_execprefix=`${PYTHON} -c "import sys; print sys.exec_prefix"`
- AC_SUBST([PYTHON_PREFIX], ["${ax_python_prefix}"])
- AC_SUBST([PYTHON_EXECPREFIX], ["${ax_python_execprefix}"])
- PYTHON_EXECDIR=${prefix}/python${az_python_version}/site-packages
- AC_SUBST([PYTHON_EXECDIR])
- AC_MSG_RESULT([$PYTHON_EXECDIR])
-])
-
-# AZ_PYTHON_RUN( PYTHON_PROGRAM )
-# -----------------
-# Run a Python Test Program saving its output
-# in az_python_output and its condition code
-# in az_python_cc.
-
-AC_DEFUN([AZ_PYTHON_RUN],
-[
- AC_ARG_VAR( [PYTHON], [Python Executable Path] )
- if test -z "$PYTHON"
- then
- AC_MSG_ERROR([Python Executable not found])
- else
- cat >conftest.py <<_ACEOF
-$1
-_ACEOF
- az_python_output=`$PYTHON conftest.py`
- az_python_cc=$?
- rm conftest.py
- if test -f "conftest.pyc"
- then
- rm conftest.pyc
- fi
- fi
-])
-
-
-
-# AZ_PYTHON_VERSION_CHECK( VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE] )
-# -----------------------------------------------------------------------------
-# Run ACTION-IF-TRUE if the Python interpreter has version >= VERSION.
-# Run ACTION-IF-FALSE otherwise.
-# This test uses sys.hexversion instead of the string equivalant (first
-# word of sys.version), in order to cope with versions such as 2.2c1.
-# hexversion has been introduced in Python 1.5.2; it's probably not
-# worth to support older versions (1.5.1 was released on October 31, 1998).
-
-AC_DEFUN([AZ_PYTHON_VERSION_CHECK],
- [
- AC_ARG_VAR( [PYTHON], [Python Executable Path] )
- if test -n "$PYTHON"
- then
- AC_MSG_CHECKING([whether $PYTHON version >= $1])
- AZ_PYTHON_RUN([
-import sys, string
-# split strings by '.' and convert to numeric. Append some zeros
-# because we need at least 4 digits for the hex conversion.
-minver = map(int, string.split('$1', '.')) + [[0, 0, 0]]
-minverhex = 0
-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
-if sys.hexversion >= minverhex:
- sys.exit( 0 )
-else:
- sys.exit( 1 )
- ])
- if test $az_python_cc -eq 0
- then
- $2
- m4_ifvaln(
- [$3],
- [else $3]
- )
- fi
- fi
-])
-
-
-
-# AZ_PYTHON_VERSION_ENSURE( VERSION )
-# -----------------
-# Insure that the Python Interpreter Version
-# is greater than or equal to the VERSION
-# parameter.
-
-AC_DEFUN([AZ_PYTHON_VERSION_ENSURE],
-[
- AZ_PYTHON_VERSION_CHECK(
- [$1],
- [AC_MSG_RESULT(yes)],
- [AC_MSG_ERROR(too old)]
- )
-])
-
-
-
-# AZ_PYTHON_WITH( [path] )
-# -----------------------------------------------------------------
-# Handles the various --with-python commands.
-# Input:
-# $1 is the optional search path for the python executable if needed
-# Ouput:
-# PYTHON_USE (AM_CONDITIONAL) is true if python executable found
-# and --with-python was requested; otherwise false.
-# $PYTHON contains the full executable path to python if PYTHON_USE
-# is true.
-#
-# Example:
-# AZ_PYTHON_WITH( )
-# or
-# AZ_PYTHON_WITH("/usr/bin")
-
-AC_DEFUN([AZ_PYTHON_WITH],
-[
- AC_ARG_VAR([PYTHON],[Python Executable Path])
-
- # unless PYTHON was supplied to us (as a precious variable),
- # see if --with-python[=PythonExecutablePath], --with-python,
- # --without-python or --with-python=no was given.
- if test -z "$PYTHON"
- then
- AC_MSG_CHECKING(for --with-python)
- AC_ARG_WITH(
- python,
- AC_HELP_STRING([--with-python@<:@=PYTHON@:>@],
- [absolute path name of Python executable]
- ),
- [
- if test "$withval" = "yes"
- then
- # "yes" was specified, but we don't have a path
- # for the executable.
- # So, let's searth the PATH Environment Variable.
- AC_MSG_RESULT(yes)
- AC_PATH_PROG(
- [PYTHON],
- python,
- [],
- $1
- )
- if test -z "$PYTHON"
- then
- AC_MSG_ERROR(no path to python found)
- fi
- az_python_use=true
- AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true")
- AZ_PYTHON_CSPEC()
- AZ_PYTHON_LSPEC()
- AZ_PYTHON_PREFIX()
- elif test "$withval" = "no"
- then
- AC_MSG_RESULT(no)
- az_python_use=false
- AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true")
- else
- # $withval must be the executable path then.
- AC_SUBST([PYTHON], ["${withval}"])
- AC_MSG_RESULT($withval)
- az_python_use=true
- AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true")
- AZ_PYTHON_CSPEC()
- AZ_PYTHON_LSPEC()
- AZ_PYTHON_PREFIX()
- fi
- ],
- [
- # --with-python was not specified.
- AC_MSG_RESULT(no)
- az_python_use=false
- AM_CONDITIONAL(PYTHON_USE, test x"$az_python_use" = x"true")
- ]
- )
- fi
-
-])