[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
10.5 Python
Automake provides support for Python compilation with the
PYTHON
primary. A typical setup is to call
AM_PATH_PYTHON
in ‘configure.ac’ and use a line like the
following in ‘Makefile.am’:
python_PYTHON = tree.py leave.py |
Any files listed in a _PYTHON
variable will be byte-compiled
with py-compile
at install time. py-compile
actually creates both standard (‘.pyc’) and optimized
(‘.pyo’) byte-compiled versions of the source files. Note that
because byte-compilation occurs at install time, any files listed in
noinst_PYTHON
will not be compiled. Python source files are
included in the distribution by default, prepend nodist_
(as in
nodist_python_PYTHON
) to omit them.
Automake ships with an Autoconf macro called AM_PATH_PYTHON
that will determine some Python-related directory variables (see
below). If you have called AM_PATH_PYTHON
from
‘configure.ac’, then you may use the variables
python_PYTHON
or pkgpython_PYTHON
to list Python source
files in your ‘Makefile.am’, depending on where you want your files
installed (see the definitions of pythondir
and
pkgpythondir
below).
- Macro: AM_PATH_PYTHON ([VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
Search for a Python interpreter on the system. This macro takes three optional arguments. The first argument, if present, is the minimum version of Python required for this package:
AM_PATH_PYTHON
will skip any Python interpreter that is older than VERSION. If an interpreter is found and satisfies VERSION, then ACTION-IF-FOUND is run. Otherwise, ACTION-IF-NOT-FOUND is run.If ACTION-IF-NOT-FOUND is not specified, as in the following example, the default is to abort
configure
.AM_PATH_PYTHON([2.2])
This is fine when Python is an absolute requirement for the package. If Python >= 2.5 was only optional to the package,
AM_PATH_PYTHON
could be called as follows.AM_PATH_PYTHON([2.5],, [:])
AM_PATH_PYTHON
creates the following output variables based on the Python installation found during configuration.
-
PYTHON
The name of the Python executable, or ‘:’ if no suitable interpreter could be found.
Assuming ACTION-IF-NOT-FOUND is used (otherwise ‘./configure’ will abort if Python is absent), the value of
PYTHON
can be used to setup a conditional in order to disable the relevant part of a build as follows.AM_PATH_PYTHON(,, [:]) AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
-
PYTHON_VERSION
The Python version number, in the form major.minor (e.g., ‘2.5’). This is currently the value of ‘sys.version[:3]’.
-
PYTHON_PREFIX
The string ‘${prefix}’. This term may be used in future work that needs the contents of Python's ‘sys.prefix’, but general consensus is to always use the value from
configure
.-
PYTHON_EXEC_PREFIX
The string ‘${exec_prefix}’. This term may be used in future work that needs the contents of Python's ‘sys.exec_prefix’, but general consensus is to always use the value from
configure
.-
PYTHON_PLATFORM
The canonical name used by Python to describe the operating system, as given by ‘sys.platform’. This value is sometimes needed when building Python extensions.
-
pythondir
The directory name for the ‘site-packages’ subdirectory of the standard Python install tree.
-
pkgpythondir
This is the directory under
pythondir
that is named after the package. That is, it is ‘$(pythondir)/$(PACKAGE)’. It is provided as a convenience.-
pyexecdir
This is the directory where Python extension modules (shared libraries) should be installed. An extension module written in C could be declared as follows to Automake:
pyexec_LTLIBRARIES = quaternion.la quaternion_SOURCES = quaternion.c support.c support.h quaternion_la_LDFLAGS = -avoid-version -module
-
pkgpyexecdir
This is a convenience variable that is defined as ‘$(pyexecdir)/$(PACKAGE)’.
All these directory variables have values that start with either ‘${prefix}’ or ‘${exec_prefix}’ unexpanded. This works fine in ‘Makefiles’, but it makes these variables hard to use in ‘configure’. This is mandated by the GNU coding standards, so that the user can run ‘make prefix=/foo install’. The Autoconf manual has a section with more details on this topic (see (autoconf)Installation Directory Variables section `Installation Directory Variables' in The Autoconf Manual). See also Installing to Hard-Coded Locations.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |