This file explains how we use our CMake-based build system and other tools
to build dynamically loaded python extension modules implementing PLplot
support in python.

I. _plplotcmodule.so (which is wrapped by plplotc.py which in turn is
wrapped by plplot.py):

swig version 1.3.22 (or above) is a prerequisite for generating the source
code for our principal (but low level) Python extension module,
_plplotcmodule.so.  The raw PLplot API available in _plplotcmodule.so is
controlled by bindings/swig-support/plplotcapi.i (which also controls the
PLplot API available to Java and Lua).  The details of how swig treats that
API for the python case are handled by plplotcmodule.i (and fragments.i
which was copied from swig version 1.3.21 to keep the returned tuple style
flat rather than hierarchical).  Our build system then runs swig to generate
plplotcmodulePYTHON_wrap.c, build and install _plplotcmodule.so from that
source code, and generate and install a wrapper for the extension module
called plplotc.py.  Our build system also installs the hand-crafted
plplot.py which is the principal PLplot module that is used by the
python/PLplot user. plplot.py wraps plplotc.py (and therefore also
_plplotcmodule.so) in a user-friendly way (e.g., to implement some
useful variations on the python argument lists).

II. plplot_widgetmodule.so

This extension module is built and installed directly by our build system
from the hand-crafted plplot_widgetmodule.c.  That source code supports
loading plframe from python (demonstrated by pytkdemo in examples/python and
supported by Plframe.py and TclSup.py).

III. plplot_pyqt4.so

This extension module implements pyqt4 support for PLplot.  Our build system
builds it in bindings/qt_gui/pyqt4 using sip-generated source files.
