CPL Title Graphic

Current CPL Release

The following table provides the download links for the latest offical release of the CPL source packages, the documentation, and the Esorex tool. As a convenience the source packages of the third-party libraries which were used to verify this CPL release are also available from the table below.

Previous CPL releases are available here.

Filename Description MD5
cpl-7.3.2.tar.gz CPL source code distribution
Note: requires CFITSIO 3.350 or later
cpl-user-manual_6.0.pdf CPL User Manual (outdated!)
cpl-reference-manual-7.3.2.pdf CPL Reference Manual (PDF)
The on-line version of the manual is available here.
esorex-3.13.7.tar.gz ESO Recipe Execution tool
Note: for CPL 6.5 or later use esorex 3.11 or newer.
cfitsio-4.2.0.tar.gz CFITSIO library from NASA, version 4.2.0 2aa08d626765868d22a875740667f400
wcslib-7.12.tar.bz2 WCSLIB library of M. Calabretta, version 7.12 20ba662a2ac0ccef6f34fe75685ab814
fftw-3.3.9.tar.gz FFTW library, version 3.3.9 50145bb68a8510b5d77605f11cadf8dc

Note: The integrity of the downloaded packages may be verified using the MD5 signatures from the table (see here for details).

Changes in CPL 7.3.2

CPL 7.3.2 is a maintenance release of the CPL 7.3 series, which corrects a number of issues found in previous CPL releases. CPL 7.3.2 primarily fixes build system issues that occurred with recent clang compilers, and a small number of other issues. In particular, CPL 7.3.2 can be build and is compatible with Clang 16 and AppleClang 14.0.3. The latter is shipped with XCode 14.3. For details on other issues addressed by this release, please refer to the NEWS file which is distributed as part of the source package.

Previous CPL Releases

Recent, previous releases of the CPL source packages can be accessed through the links in the table. In addition the third-party library packages which were used and tested with the individual releases are also available.

System requirements

The CPL is supported on the VLT target platforms running the following operating systems:

  • CentOS 7 (64bit)
At this stage, only this operating system version is officially supported!

However, CPL is supposed to build also on other flavors of Linux and Unix systems, including macOS. It is known that the CPL has been successfully built on recent Linux distributions (Fedora, OpenSUSE, Debian Ubuntu, Scientific Linux and others) and on recent macOS platforms.

The following tools are needed to build the CPL from the source distribution:

  • GNU C/C++ compiler (version 4.4 or newer, version 7 or newer is recommended)
  • GNU make utility
  • GNU tar and gzip utilities
  • Java Development Kit version 1.6 or newer (optional, only needed if Gasgano support is required)

Third-party dependencies

In addition to the development tools for building the CPL, it depends on a small number of external library packages:

  • FFTW
The recommended versions of these packages are also available from here.

Since CPL uses CFITSIO to access FITS files, it requires an appropriate CFITSIO installation to be available on the target system.

CPL delegates Fourier transforms and world coordinate system transformations to specialized libraries. As of CPL 7.1 these dependencies are, by default, required and must be present to build CPL with the default configuration. In case this functionality is not needed, or if FFTW and/or WCSLIB are not available, CPL can still be built without these dependencies, but it must be explicitly disabled using the respective configuration options.

Building CPL without FFTW and/or WCSLIB is not recommended, since Fourier transforms an world coordinate system handling are then not available in CPL!

Installing CPL

Installing CPL from source on its own is only needed if you plan to develop software making use of CPL. This, for instance, is the case for instrument projects which have to deliver a standard ESO data processing software as part of their project.

For users who are interessted in processing data using one of the ESO instrument pipeline it is not necessary to install CPL and its dependencies from the source packages provided through the links on this page. Instead they should refer to the installtion of complete pipeline packages here.

Software developers who need to install CPL from source should refer to the README file in the CPL distribution for details about how to install and use the software. A detailed description of the library is provided in the CPL User Manual (see the link in the list of "downloads" above). Additional documentation is available from the CPL Documentation page.

Hints for developers on building third-party libraries for CPL

The following provides a few hints for software developers to avoid some pitfalls when building CPL and its dependencies from scratch. However, they cannot exhaustive by any means. For detailed information on how the required dependencies need to be configured, please refer to the documentation of the individual package or command.

  • If CPL is build with thread support, a thread-safe CFITSIO library is required. When CPL is configured it checks whether the detected CFITSIO library is thread-safe. In case the found CFITSIO library is not thread-safe the CPL configuration terminates with an error.
    To build a thread-safe CFITSIO from source the command line option --enable-reentrant must be used when CFITSIO is configured.
  • CPL requires two versions of the FFTW library. One build with normal precision, and one build with single precision. The normal precision library is built by default. To confgure the FFTW build for single precision the option --enable-float must be added to the configure command line.
  • The CPL Gasgano interface will only be build if a suitable Java Development Kit is found. If the JDK is not automatically detected, one may have to provide its location, i.e. the top level directory of the JDK installation, using the command line option --with-java of the CPL configuration script, or by setting the environment variable JAVA_HOME.
  • On MacOS, when building the CFITSIO and WCSLIB dependencies from source and installing them locally, it is usually necessary to correct the install name of the two dynamic libraries. Otherwise they are not loaded. This may cause applications which try to use them to be terminated with an error message that the respective library is not found, or that the library image cannot be loaded. To set the correct install name of the library one has to use the install_name_tool to set the id of the library to the absolute path where the library is installed. To inspect the current setting or to verify that the library install name was properly updated one can use the tool otool with the -L option.
  • It may also be necessary to add the library locations of the third-party dependencies to the library search path before CPL is configured. This is done by adding the location of the third-party libraries to the environment variables LD_LIBRARY_PATH or DYLD_LIBRARY_PATH on Linux or MacOS, respectively.

Checking the Package Integrity

The integrity of the downloaded packages may be verified using the MD5 files which are available from the current release download table. They contain the MD5 fingerprint of the corresponding package. To verify the package, get the MD5 file by saving the MD5 sum link, put it into the same directory as the package, and execute the command:

      $ md5sum -c <md5file>