User Tools

Site Tools


build:feature_triggers

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
build:feature_triggers [2016/04/20 07:54] Yann Pouillonbuild:feature_triggers [2016/04/24 14:21] (current) Yann Pouillon
Line 1: Line 1:
 +<WRAP important>**IMPORTANT** \\ The information provided in this page is valid for Abinit 8.1 and future versions only.</WRAP>
 +
 ====== Configuring feature triggers ====== ====== Configuring feature triggers ======
  
-The capabilities of Abinit can be enhanced by the use of optional external packages. The corresponding options of //configure// all follow the same scheme:+===== 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**//, 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**_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).   * //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 listed 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.+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: +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: 
-<code>with_fox="/path/to/fox"</code>the //configure// script will look for: +<code>with_libxc="/path/to/libxc"</code> 
-  * configuration programs in //%%/%%path/to/fox/bin%%/%%//; +the //configure// script will look for: 
-  * include files in //%%/%%path/to/fox/include%%/%%//; +  * specific configuration programs in //%%/%%path/to/libxc/bin%%/%%//; 
-  * libraries in //%%/%%path/to/fox/lib%%/%%// and ///path/to/fox/lib64%%/%%//.+  * 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. 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   ^ Status       ^ Description                                    +^ Package                               ^ Name      ^ Status       ^ Description                                         
-| BigDFT    | Development  | Wavelets for low-dimensional systems           +| [[build:optpkgs#bigdft|bigdft]]       | BigDFT    | Development  | Wavelets for low-dimensional systems                
-| ETSF_IO   | Mature       | Platform-independent data exchange             +| [[build:optpkgs#etsf_io|etsf_io]]     | ETSF_IO   | Mature       | Platform-independent data exchange                  
-FoX       | Mature       Fortran XML I/O                                +[[build:optpkgs#gsl|gsl]]             | GSL       | Mature       Standard mathematical functions                     
-| Libpspio  | Experimental | Reading of atomic data in many formats         +| [[build:optpkgs#libpspio|libpspio]]   | Libpspio  | Experimental | Reading of atomic data in many formats              
-| LibXC     | Mature       | More than 300 exchange-correlation functionals | +| [[build:optpkgs#libxc|libxc]]         | LibXC     | Mature       | More than 300 exchange-correlation functionals      
-LibYAML   Experimental Fortran YAML I/O                               +[[build:optpkgs#netcdf|netcdf]]       NetCDF    | Mature       | Platform-independent I/O                            
-| Wannier90 | Mature       | Maximally-Localized Wannier Functions (MLWFs)  |+| [[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                      | 
  
-The following table indicates which options are allowed for each package and whether it is enabled by default. For purely optional packages, the default is to disable them, whereas packages transitioning from optional to mandatory are usually enabled by default. In the following, to determine the names of the options, just replace the stars by the corresponding package IDs.+===== Using a global prefix =====
  
-^ Package ID ^ Default  ^ with_* ^ with_*_bins ^ with_*_incs ^ with_*_libs ^ +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.
-| bigdft     | Disabled | Yes    | No          | Yes         | Yes         | +
-| etsf_io    | Disabled | Yes    | No          | Yes         | Yes         | +
-| fox        | Disabled | Yes    | No          | Yes         | Yes         | +
-| libpspio   | Disabled | Yes    | No          | Yes         | Yes         | +
-| libxc      | Enabled  | Yes    | No          | Yes         | Yes         | +
-| libyaml    | Disabled | Yes    | No          | Yes         | Yes         | +
-| wannier90  | Disabled | Yes    | Yes         | Yes         | Yes         |+
  
-For instanceLibXC support is enabled by default, and there are //with_libxc//, //with_libxc_incs//, and //with_libxc_libs// options, but there is no //with_libxc_bins// option.+<WRAP important>**Important note** \\ If you use this optionyou can then only use the other //with_package// options without argumentsto fine-tune which optional packages will actually be enabled. All other combinations will make //configure// fail with an error.</WRAP>
  
-All these options cen be overridden by //with_extdeps_prefix//, which tells the //configure// script that all external dependencies have been installed in the same placeThis option is mutually exclusive with the use of any other //with_*// option for optional featuresIf you decide to use itit must be the only one.+As an example, let us now suppose that you have installed optional packages for Abinit under the //%%/%%path/to/my/packages%%/%%// directoryYou directory tree will look like the following: 
 +<code> 
 +/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 
 +</code> 
 +As you can see, this directory tree includes 2 different versions of LibXC and Wannier90Depending on which version of Abinit you are buildingthe correct version of each package will automatically be selected by the build system.
build/feature_triggers.1461131672.txt.gz · Last modified: 2016/04/20 07:54 by Yann Pouillon