# -*- INI -*-
#
# Copyright (C) 2009-2021 ABINIT Group (Yann Pouillon)
#
# This file is part of the ABINIT software package. For license information,
# please see the COPYING file in the top-level directory of the ABINIT source
# distribution.
#

#
# Config file for the core libraries of Abinit
#
# Note: The following statements are in the Python "INI" format, with
#       case-sensitivity activated.
#
# Available options:
#
#   * abirules     : whether to check conformance to the abirules (mandatory);
#
#   * dependencies : external dependencies, when relevant (optional);
#
#   * optional     : whether the build of the library is optional (mandatory);
#
#   * parent       : code block the subdirectory belongs to, selected between
#                    "common", "core", or "libpaw" (mandatory).
#

# WARNING: Make sure all comments start at column 1 of the text, because some
#          versions of ConfigParser shipped with RedHat-based systems will
#          mess-up indented comments with the fields defined before.

# WARNING: modify the defaults with *extreme* care!
[DEFAULT]
abirules = yes
optional = no
parent = core

# Here starts the shared part of ABINIT
#
# Valid indices: 00..39
#
# Note: please keep LibPAW last in this section

[02_clib]
abirules = no
dependencies = levmar
parent = common

[10_defs]
abirules = no
dependencies = bigdft
parent = common

[11_memory_mpi]
abirules = no
dependencies = mpi
parent = common

[12_hide_mpi]
abirules = no
dependencies = mpi
parent = common

[14_hidewrite]
abirules = no
dependencies = mpi
parent = common

[16_hideleave]
abirules = no
dependencies = mpi hdf5 netcdf netcdf_fortran
parent = common

[17_gpu_toolbox]
abirules = no
dependencies = gpu linalg
optional = yes
parent = common

[17_libtetra_ext]
abirules = no
#dependencies = 11_memory_mpi # do I need dependencies?
parent = common

[17_yaml_out]
parent = common

[18_timing]
abirules = no
dependencies = papi mpi
parent = common

[21_hashfuncs]
abirules = no
parent = common

[27_toolbox_oop]
abirules = no
dependencies = hdf5 netcdf netcdf_fortran
parent = common

[28_numeric_noabirule]
abirules = no
dependencies = linalg mpi hdf5 netcdf netcdf_fortran
parent = common

[29_kpoints]
parent = common

[32_util]
abirules = no
dependencies = fft linalg hdf5 netcdf netcdf_fortran
parent = common

[33_xc_lowlevel]
abirules = no
dependencies = fft libxc
parent = common

[39_libpaw]
dependencies = libxc hdf5 netcdf netcdf_fortran
parent = libpaw

# Here starts the core part of ABINIT
#
# Valid indices: 40..99

[41_geometry]
dependencies = bigdft hdf5 netcdf netcdf_fortran

[42_nlstrain]

[42_parser]

[43_ptgroups]
abirules = no

[43_wvl_wrappers]
dependencies = bigdft

[44_abitools]
abirules = no
dependencies = hdf5 netcdf netcdf_fortran

[44_abitypes_defs]
abirules = no
dependencies = gpu hdf5 netcdf netcdf_fortran 

[45_geomoptim]
dependencies = hdf5 netcdf netcdf_fortran 

[45_xgTools]
abirules = no
dependencies = linalg

[46_diago]
abirules = no

[49_gw_toolbox_oop]
abirules = no
dependencies = hdf5 netcdf netcdf_fortran

[51_manage_mpi]
abirules = no
dependencies = mpi hdf5 netcdf netcdf_fortran

[52_fft_mpi_noabirule]
abirules = no
dependencies = fft mpi

[52_manage_cuda]
abirules = no
optional = yes
dependencies = gpu

[53_ffts]
abirules = no
dependencies = fft

[54_spacepar]

[55_abiutil]
abirules = no
dependencies = linalg

[56_io_mpi]
abirules = no
dependencies = mpi hdf5 netcdf netcdf_fortran

[56_mixing]

[56_recipspace]
dependencies = hdf5 netcdf netcdf_fortran

[56_xc]
abirules = no
dependencies = fft libxc hdf5 netcdf netcdf_fortran

[57_iopsp_parser]
dependencies = bigdft libxc libpsml

[57_iovars]
abirules = no
dependencies = bigdft libxc linalg hdf5 netcdf netcdf_fortran wannier90

[62_ctqmc]
abirules = no

[62_cg_noabirule]
abirules = no

[62_iowfdenpot]
abirules = no
dependencies = bigdft mpi hdf5 netcdf netcdf_fortran

[61_occeig]
dependencies = bigdft hdf5 netcdf netcdf_fortran

[62_poisson]
abirules = no
dependencies = bigdft

[62_wvl_wfs]
dependencies = bigdft hdf5 netcdf netcdf_fortran

[64_psp]
abirules = no
dependencies = bigdft libpsml hdf5 netcdf netcdf_fortran libxc

[65_lotf_base]
abirules = no
optional = yes

[65_paw]
abirules = no
dependencies = bigdft mpi hdf5 netcdf netcdf_fortran

[66_nonlocal]
abirules = no
dependencies = gpu hdf5 netcdf netcdf_fortran

[66_vdwxc]
abirules = no

[66_wfs]
dependencies = gpu

[67_common]
abirules = no
dependencies = bigdft gpu hdf5 netcdf netcdf_fortran mpi wannier90

[67_triqs_ext]
abirules = no
dependencies = triqs
optional = yes

[67_python_invocation_ext]
abirules = no
optional = yes

[68_dmft]
abirules = no
dependencies = triqs netcdf

[68_lotf]
abirules = no
optional = yes

[68_recursion]
abirules = no
dependencies = gpu

[68_rsprc]
dependencies = bigdft

[69_wfdesc]
abirules = no
dependencies = hdf5 netcdf netcdf_fortran

[70_gw]
abirules = no
dependencies = levmar libxc mpi hdf5 netcdf netcdf_fortran

[71_bse]
abirules = no
dependencies = bigdft linalg mpi hdf5 netcdf netcdf_fortran

[71_wannier]
dependencies = wannier90 hdf5 netcdf netcdf_fortran

[72_response]
dependencies = hdf5 netcdf netcdf_fortran

[77_ddb]
abirules = no
dependencies = bigdft hdf5 netcdf netcdf_fortran

[77_suscep]

[78_effpot]
dependencies = hdf5 netcdf netcdf_fortran libxml2

[78_eph]
dependencies = mpi hdf5 netcdf netcdf_fortran

[79_seqpar_mpi]
abirules = no
dependencies = bigdft linalg mpi hdf5 netcdf netcdf_fortran

[80_tdep]
abirules = no
dependencies = hdf5 netcdf netcdf_fortran mpi linalg

[94_scfcv]
dependencies = bigdft gpu libxc hdf5 netcdf netcdf_fortran papi mpi

[95_drive]
dependencies = bigdft gpu libxc hdf5 netcdf netcdf_fortran papi mpi
