IMPORTANT
The information provided on this page is valid for Abinit 8.1 and future versions only.

Configuring feature triggers

Configure options

The intrinsic capabilities of Abinit can be greatly enhanced by the use of optional external packages. The corresponding options of configure all follow the same scheme:

In each of the previous items, package will be replaced by the names in the first column from the table below. Please note that the use of with_package is incompatible with the other with_* options, since it defines the values specified by these options in a possibly conflicting way. If you try to use both schemes, configure will fail and ask you to choose only one of them.

If you use the with_package option without an argument, the build system will look for the corresponding package using the built-in defaults of Abinit. Otherwise, the with_package option expects a directory as an argument. For example, if you specify:

with_libxc="/path/to/libxc"

the configure script will look for:

The following table summarizes the available optional features of Abinit. To enable them, you will have to make sure that the corresponding optional packages are correctly installed on your system before configuring Abinit.

Package Name Status Description
bigdft BigDFT Development Wavelets for low-dimensional systems
etsf_io ETSF_IO Mature Platform-independent data exchange
gsl GSL Mature Standard mathematical functions
libpspio Libpspio Experimental Reading of atomic data in many formats
libxc LibXC Mature More than 300 exchange-correlation functionals
netcdf NetCDF Mature Platform-independent I/O
papi PAPI Mature Performance Application Programming Interface
psml PSML Mature PSeudopotential Markup Language
triqs TRIQS Experimental Toolbox for Research on Interacting Quantum Systems
wannier90 Wannier90 Mature Maximally-Localized Wannier Functions (MLWFs)
yaml LibYAML Experimental YAML Ain't Markup Language I/O

Using a global prefix

All the individual options can be overridden by with_optpkgs, which tells the configure script that all external dependencies have been installed in the same place. In this case, the build system will assume that each package has been installed in its own <package>-<version> subdirectory and will enable all those it finds in the specified top directory. This means that you can install as many versions of each package as you want within the same directory tree, while keeping full compatibility with different Abinit versions.

Important note
If you use this option, you can then only use the other with_package options without arguments, to fine-tune which optional packages will actually be enabled. All other combinations will make configure fail with an error.

As an example, let us now suppose that you have installed optional packages for Abinit under the /path/to/my/packages/ directory. Your directory tree will look like the following:

/path/to/my_packages
│
├── etsf_io-1.0.4
│   ├── bin
│   ├── include
│   ├── lib
│   └── share
│       └── doc
├── libpspio-bzr
│   ├── include
│   └── lib
├── libxc-2.0.3
│   ├── include
│   └── lib
│       └── pkgconfig
├── libxc-2.2.1
│   ├── bin
│   ├── include
│   └── lib
│       └── pkgconfig
├── triqs-1.2
│   ├── bin
│   ├── include
│   │   ├── pytriqs
│   │   └── triqs
│   ├── lib
│   │   └── python2.7
│   └── share
│       └── triqs
└── wannier90-1.2.0.4
│   ├── bin
│   ├── lib
│   │   └── pkgconfig
│   └── share
│       └── doc
└── wannier90-2.0.1.1
    ├── bin
    ├── lib
    │   └── pkgconfig
    └── share
        └── doc

As you can see, this directory tree includes two different versions of LibXC and Wannier90. Depending on which version of Abinit you are building, the correct version of each package will automatically be selected by the build system.