Previous: , Up: Other GNU Tools   [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 this in Makefile.am:

python_PYTHON = tree.py leave.py

Python source files are included in the distribution by default; prepend nodist_ (as in nodist_python_PYTHON) to omit them.

At install time, any files listed in a _PYTHON variable will be byte-compiled with py-compile. py-compile creates both standard (.pyc) and optimized (.pyo) byte-compiled versions of the source files. Because byte-compilation occurs at install time, files listed in noinst_PYTHON will not be compiled.

Automake ships with an Autoconf macro named AM_PATH_PYTHON that determines 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 and pkgpython_PYTHON to list Python source files in your Makefile.am, depending on whether you want your files installed in pythondir or pkgpythondir, respectively.

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.5])

This is fine when Python is an absolute requirement for the package. If Python ≥ 2.5 was only optional for the package, AM_PATH_PYTHON could be called as follows.

AM_PATH_PYTHON([2.5],, [:])

If the PYTHON variable is set when AM_PATH_PYTHON is called, then that will be the only Python interpreter that is tried.

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 set up 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 set to be the value of ‘'%u.%u' % sys.version_info[:2]’.

PYTHON_PREFIX
PYTHON_EXEC_PREFIX

With no special options given, these have values ‘${prefix}’ and ‘${exec_prefix}’, respectively (unexpanded; see below).

The configure options --with-python_prefix and --with-python_exec_prefix set them to an explicit value.

The configure option --with-python-sys-prefix set them to the values of Python’s ‘sys.prefix’ and ‘sys.exec_prefix’ variables. These often differ from ‘${prefix}’ and ‘${exec_prefix}’, e.g., on platforms such as Mac OS x (where Python is usually installed as a Framework).

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_la_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 of these directory variables have values that can 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 Installation Directory Variables in The Autoconf Manual). See also Installing to Hard-Coded Locations.


Previous: Java bytecode compilation (deprecated), Up: Other GNU Tools   [Contents][Index]