PPL Requirements

In order to use the Parma Polyhedra Library you should have the following tools and libraries installed on your system. Prospective PPL developers need more infrastructure.

Requirements for Everybody

C/C++ Compiler

We are currently using GCC version 4.x, including all the dot-revisions. Versions of GCC prior to 4.0.3 cannot be used to build the PPL, since they do not correctly implement C++ standard features we use. In addition GCC 4.1.0 has a bug that prevents compiling the PPL.

For the purpose of checking standard conformance, from time to time we also compile the library with the following compilers:

See the file README.configure in the source distribution for more details on the subject.

GMP: the GNU Multiple Precision library

GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. There is no limit to the precision except that implied by the available memory in the machine that GMP runs on.

PPL version 0.3 and following require GMP version 4.0.1 or higher. PPL version 0.5 and following require GMP version 4.1.2 or higher. PPL version 0.7 and following require GMP version 4.1.3 or higher. Moreover, it is important that the following conditions are met:

  1. the GMP library has to be compiled with the C++ interface enabled (on GMP 4.0.x and 4.1.x it is not enabled by default);
  2. the GMP C++ interface has to be compiled with the same compiler version with which you will compile the PPL;
  3. your C and C++ compilers and your linker have to find that version of GMP (and not other versions that may be present in your system).

Since binary distributions of GMP may contain a version of the C++ interface compiled with a C++ compiler implementing a different ABI than the compiler you will use to compile the PPL, the most reliable way to satisfy the points above is to visit the GMP web site, download the sources of the last available version, and then follow the steps detailed in README.configure in the PPL's source distribution.

M4 Macro Processor

in order to build any interface different from the C++ one, a recent enough version of GNU M4 is required (the configuration script searches for one and gives an error if it cannot find it).


Additional Requirements for Developers

Prospective developers of the Parma Polyhedra Library, besides fullfilling the requirements for normal users of the library, should also have the following tools and libraries installed.

Automake, Autoconf and Libtool

We are currently using

Older releases may have not been tested and we do not expect them to work properly on all the platforms we try to support.


The documentation for PPL is produced by using the latest release of Doxygen. In turn, Doxygen uses Graphviz in order to render the graphs in the HTML documentation and the pdftops program, which is included in Xpdf and Poppler, a PDF rendering library based on the xpdf-3.0 code base.


Part of the documentation for the Ocaml PPL interface is produced by using the ocamldoc tool, which is included in the OCaml source distribution. If opting for a pre-built binary distribution, then be warned that the documentation tool is often provided as a separate package (usually named ocaml-ocamldoc).

We are a passionate team of experts. Do not hesitate to let us have your feedback:
You may be surprised to discover just how much your suggestions matter to us.