Previous: , Up: Other GNU Tools   [Contents][Index]


10.5 Python

Automake provides support for Python compilation with the ‘PYTHON’ primary.

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 byte-compiled (.pyo) 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.

Automake ships with an Autoconf macro called AM_PATH_PYTHON which will determine some Python-related directory variables (see below). If you have called AM_PATH_PYTHON from configure.ac, then you may use the following variables to list you Python source files in your variables: ‘python_PYTHON’, ‘pkgpython_PYTHON’, ‘pyexecdir_PYTHON’, ‘pkgpyexecdir_PYTHON’, depending where you want your files installed.

AM_PATH_PYTHON([VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) takes three optional arguments. It will search a Python interpreter on the system. The first argument, if present, is the minimum version of Python required for this package: AM_PATH_PYTHON will skip any Python interpreter which 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, the default is to abort configure. This is fine when Python is an absolute requirement for the package. Therefore if Python >= 2.2 is only optional to the package, AM_PATH_PYTHON could be called as follows.

  AM_PATH_PYTHON(2.2,, :)

AM_PATH_PYTHON creates several 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" != :])

If the ACTION-IF-NOT-FOUND is specified

PYTHON_VERSION

The Python version number, in the form major.minor (e.g. ‘1.5’). This is currently the value of sys.version[:3].

PYTHON_PREFIX

The string ${prefix}. This term may be used in future work which 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 which 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 is the directory under pythondir which 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.

pkgpyexecdir

This is a convenience variable which 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 Installation Directory Variables in The Autoconf Manual).


Previous: Java, Up: Other GNU Tools   [Contents][Index]