**IMPORTANT** \\ The information provided in 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: * //with_**package**//, to specify the install prefix of a package; * //with_**package**_incs//, to specify include flags when compiling code that uses the package (when applies); * //with_**package**_libs//, to specify package libraries to link the code with (when applies). 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 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 argument. For example, if you specify: with_libxc="/path/to/libxc" the //configure// script will look for: * specific configuration programs in //%%/%%path/to/libxc/bin%%/%%//; * include files in //%%/%%path/to/libxc/include%%/%%//; * libraries in //%%/%%path/to/libxc/lib%%/%%// and ///path/to/libxc/lib64%%/%%//. The following table summarizes the available optional features of Abinit. To enable them, you will have to make sure that the corresponding [[build:optpkgs|optional packages]] are correctly installed on your system before configuring Abinit. ^ Package ^ Name ^ Status ^ Description ^ | [[build:optpkgs#bigdft|bigdft]] | BigDFT | Development | Wavelets for low-dimensional systems | | [[build:optpkgs#etsf_io|etsf_io]] | ETSF_IO | Mature | Platform-independent data exchange | | [[build:optpkgs#gsl|gsl]] | GSL | Mature | Standard mathematical functions | | [[build:optpkgs#libpspio|libpspio]] | Libpspio | Experimental | Reading of atomic data in many formats | | [[build:optpkgs#libxc|libxc]] | LibXC | Mature | More than 300 exchange-correlation functionals | | [[build:optpkgs#netcdf|netcdf]] | NetCDF | Mature | Platform-independent I/O | | [[build:optpkgs#papi|papi]] | PAPI | Mature | Performance Application Programming Interface | | [[build:optpkgs#psml|psml]] | PSML | Mature | PSeudopotential Markup Language | | [[build:optpkgs#triqs|triqs]] | TRIQS | Experimental | Toolbox for Research on Interacting Quantum Systems | | [[build:optpkgs#wannier90|wannier90]] | Wannier90 | Mature | Maximally-Localized Wannier Functions (MLWFs) | | [[build:optpkgs#yaml|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 //%%-%%// 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. You 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 2 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.