#
#  exploring possible packages , can be listed here in python syntax
#
[

#============================================================================
        {'dirname':'dbcsrwrap',
         'requires': ["../dbcsr","../common", "../base"],
         'files': [ ]
        },

#============================================================================
        {'dirname':'cpdbcsr',
         'requires': ["../dbcsrwrap","../common", "../base","../fm","../qstypes",
                      "../mpiwrap", "../systemtypes", "../aobasis", "../input"],
         'files': [
           "cp_dbcsr_cholesky.F",
           "cp_dbcsr_cp2k_link.F",
           "cp_dbcsr_diag.F",
           "cp_dbcsr_operations.F",
           "cp_dbcsr_output.F",
           "cp_dbcsr_util.F",
         ]
        },

#============================================================================
        {'dirname':'tmc',
         'requires': ["../", "../base", "../common", "../input", "../mpiwrap", "../systemtypes", "../fist"],
        },

#============================================================================
        {'dirname':'start',
         'requires': ["../", "../acc", "../base", "../common", "../input", "../dbcsrwrap", "../cpdbcsr",
                      "../pw", "../tmc", "../swarm", "../mpiwrap", "../dbcsrwrap", "../motion"],
        },

#============================================================================
        {'dirname':'motion',
         'requires': ["../", "../base", "../common","../mpiwrap","../input", "../fm", "../dbcsrwrap", "../systemtypes", "../qmmm", "../fist", "../qstypes",],
        },

#============================================================================
        {'dirname':'swarm',
         "requires": ["../", "../common", "../mpiwrap", "../input", "../base", "../motion", "../qstypes", "../systemtypes", "../topology"],
        },

#============================================================================
         {'dirname':'input',
          'requires': ["../base", "../common", "../mpiwrap"],
          'files': ["cp_output_handling.F","input_constants.F"],
         },

#============================================================================
         {'dirname':'aobasis',
          'requires': ["../base", "../common", "../mpiwrap", "../input"],
         },


#============================================================================
#        topology
#============================================================================
         {'dirname':'topology',
          'requires':["../base", "../common", "../mpiwrap", "../input", "../systemtypes"],
          'files': [ "topology_amber.F",
             "topology_cif.F",
             "topology_connectivity_util.F",
             "topology_constraint_util.F",
             "topology_coordinate_util.F",
             "topology_cp2k.F",
             "topology.F",
             "topology_generate_util.F",
             "topology_gromos.F",
             "topology_input.F",
             "topology_multiple_unit_cell.F",
             "topology_pdb.F",
             "topology_psf.F",
             "topology_types.F",
             "topology_util.F",
             "topology_xtl.F",
             "topology_xyz.F",
             "graphcon.F",
             "qmmm_topology_util.F",
             "rd_amber_section_1.f90",
            ],
         },


#============================================================================
#        fist
#============================================================================
         {'dirname':'fist',
          'requires':["../base", "../common", "../mpiwrap", "../input", "../systemtypes","../qstypes", "../pw", "../topology"],
          'files': [ "fist_energy_types.F",
            "fist_environment.F",
            "fist_environment_types.F",
            "fist_force.F",
            "fist_intra_force.F",
            "fist_main.F",
            "fist_neighbor_list_control.F",
            "fist_neighbor_lists.F",
            "fist_neighbor_list_types.F",
            "fist_nonbond_env_types.F",
            "fist_nonbond_force.F",
            "fist_pol_scf.F",
            "manybody_potential.F",
            "ewalds_multipole.F",
            "eip_environment.F",
            "eip_environment_types.F",
            "manybody_eam.F",
            "manybody_tersoff.F",
            "manybody_siepmann.F",
            "ewalds.F",
            "ewald_pw_methods.F",
            "mol_force.F",
            "pme.F",
            "spme.F",
            "pme_tools.F",
            "ewalds_multipole_sr.f90",
            "ewalds_multipole_debug.h",
            "ewalds_multipole_debug.F",
            "pair_potential_types.F",
            "splines_types.F",
            "splines_methods.F",
            "pair_potential_coulomb.F",
            "pair_potential.F",
            "pair_potential_util.F",
            "damping_dipole_types.F",
            "force_fields.F",
            "force_field_types.F",
            "force_fields_input.F",
            "force_fields_all.F",
            "force_fields_util.F",
            "force_fields_ext.F",
            ],
         },

#============================================================================
#        qmmm
#============================================================================
        {'dirname':'qmmm',
         'requires':["../base", "../common", "../mpiwrap", "../input", "../systemtypes",
                     "../qstypes", "../pw", "../topology", "../fist", "../dbcsrwrap", "../cpdbcsr",
                     "../gpw", "../aobasis"],
         'files':[ "qmmm_elpot.F",
           "qmmm_force_mixing.F",
           "qmmm_gaussian_data.F",
           "qmmm_gaussian_init.F",
           "qmmm_gaussian_input.F",
           "qmmm_gaussian_types.F",
           "qmmm_gpw_energy.F",
           "qmmm_gpw_forces.F",
           "qmmm_image_charge.F",
           "qmmm_init.F",
           "qmmm_links_methods.F",
           "qmmm_main.F",
           "qmmm_per_elpot.F",
           "qmmm_pw_grid.F",
           "qmmm_se_energy.F",
           "qmmm_se_forces.F",
           "qmmm_types.F",
           "qmmm_util.F"],
        },

#============================================================================
# basic system level types....what types are needed to describe an atom (entangled for both first and qs and ...)
# via our atomic_kind_types.F this is one big pot
#============================================================================
         {'dirname':'systemtypes',
          'requires': ["../base", "../common", "../mpiwrap", "../input", "../aobasis"],
          'files': ["cell_types.F",
                    "particle_types.F",
                    "particle_list_types.F",
                    "mol_kind_new_list_types.F",
                    "cp_subsys_types.F",
                    "virial_types.F",
                    "atomic_kind_types.F", # due to dependencies more stuff follows
                    "atomic_kind_list_types.F",
                    "molecule_kind_types.F",
                    "molecule_types_new.F",
                    "mol_new_list_types.F",
                    "multipole_types.F",
                    "cell_methods.F",
                    "qmmm_ff_fist.F",
                   #"soft_basis_set.F",
                   #"damping_dipole_types.F",
                   #"qs_dispersion_types.F",
                   #"qs_dftb_types.F",
                   #"force_field_types.F",
                   "shell_potential_types.F",
                   #"external_potential_types.F",
                   #"colvar_types.F",
                   #"soft_basis_set.F",
                   #"damping_dipole_types.F",
                   #"qs_dispersion_types.F",
                   #"qs_dftb_types.F",
                   #"force_field_types.F",
                   #"shell_potential_types.F",
                   #"external_potential_types.F",
                   #"colvar_types.F",
                   #"pair_potential_types.F",
                   #"paw_proj_set_types.F",
                   #"scptb_types.F"
                   ]
         },

#============================================================================
# qs types....what basic types are needed to do a qs calculation (but not e.g. fist)
# 
#============================================================================
        {'dirname':'qstypes',
         'requires':["../base", "../common", "../mpiwrap", "../input", "../aobasis","../systemtypes", "../fm", "../dbcsr", "../pw", "../dbcsrwrap"],
         'files': ["qs_environment_types.F",
                   "qs_energy_types.F",
                   "qs_rho_types.F",
                   "cp_control_types.F",
                   "xas_control.F",
                   "wannier_states_types.F",
                   "qs_mo_types.F",
                   "qs_scf_types.F",
                   "qs_force_types.F",
                   "xas_env_types.F",
                   "scf_control_types.F",
                   "qs_ks_types.F",
                   "qs_density_mixing_types.F",
                   "block_p_types.F",
                   "harris_energy_types.F",
                   "harris_force_types.F",
                   "task_list_types.F",
                   "scp_coeff_types.F",
                   "scp_energy_types.F",
                   "taper_types.F",
                   "semi_empirical_expns3_types.F",
                   "fist_neighbor_list_types.F",
                    "qs_neighbor_list_types.F",
                   "exclusion_types.F",
                   "qs_ot_types.F",
                   "qs_block_davidson_types.F",
                   "preconditioner_types.F",
                   "qmmm_gaussian_types.F",
                   "hfx_types.F",
                   "admm_types.F",
                   "qs_loc_types.F",
                   "sap_kind_types.F",
                   "scp_force_types.F",
                   "ri_environment_types.F",
                   "pw_env_types.F",
                   "qs_rho_atom_types.F",
                   "semi_empirical_store_int_types.F",
                   "harris_env_types.F",
                   "rt_propagation_types.F",
                   "ga_environment_types.F",
                   "qs_ks_qmmm_types.F",
                   "mp2_types.F",
                   "ewald_pw_types.F",
                   "qmmm_types.F",
                   "qs_local_rho_types.F",
                   "kg_environment_types.F",
                   "qs_matrix_pools.F",
                   "qs_charges_types.F",
                   "fist_nonbond_env_types.F",
                   "qs_rho0_types.F",
                   "scp_environment_types.F",
                   "qs_wf_history_types.F",
                   "semi_empirical_types.F",
                   "rel_control_types.F",
                   "ewald_environment_types.F",
                   "lri_environment_types.F",
                   "cp_ddapc_types.F",
                   "et_coupling_types.F",
                   "ep_qs_types.F",
                   "hartree_local_types.F",
                   "semi_empirical_mpole_types.F",
                   "atprop_types.F",
                   "qs_linres_types.F",
                   "dm_ls_scf_types.F",
                   "qs_oce_types.F",
                   "qs_diis_types.F",
                   "qs_period_efield_types.F" ]
        },

#============================================================================
         {'dirname':'gpw',
          'requires': ["../base", "../common", "../mpiwrap", "../input",
                       "../pw", "../grid", "../aobasis", "../systemtypes", "../qstypes", "../dbcsrwrap" ],
          'files': [
             "qs_collocate_density.F",
             "qs_integrate_potential.F",
             "qs_integrate_potential_low.F",
             "qs_integrate_potential_product.F",
             "qs_integrate_potential_single.F",
             "gaussian_gridlevels.F",
             "d3_poly.F",
             "gauss_colloc.F",
             "prep.f90",
             "qs_modify_pab_block.F",
             "colloc_int_body.f90",
             "colloc_int_kloop1.f90",
             "colloc_int_kloop2.f90",
             "colloc_int_kloop3.f90",
             "colloc_int_kloop4.f90",
             "colloc_int_kloop5.f90",
             "colloc_int_kloop6.f90",
             "colloc_int_kloop7.f90",
             "colloc_int_kloop8.f90",
             "colloc_int_kloop.f90",
             "call_collocate.f90",
             "call_collocate_omp.f90",
             "rs_pw_interface.F", #or should this be pw?
             "task_list_methods.F",
          ]
         },

#============================================================================

         {'dirname':'hfx',
          'requires': ["../base", "../common", "../mpiwrap", '../input', "../aobasis", "../systemtypes", "../qstypes", "../dbcsrwrap"],
          'files': [
             "t_c_g0.F",
             "t_sh_p_s_c.F",
             "hfx_communication.F",
             "hfx_compression_core_methods.F",
             "hfx_compression_methods.F",
             "hfx_contract_block.F",
             "hfx_contraction_methods.F",
             "hfx_derivatives.F",
             "hfx_energy_potential.F",
             "hfx_get_pmax_val.f90",
             "hfx_helpers.F",
             "hfx_libint_interface.F",
             "hfx_libint_wrapper.F",
             "hfx_libint_wrapper_types.F",
             "hfx_load_balance_methods.F",
             "hfx_pair_list_methods.F",
             "hfx_ri_gemopt.F",
             "qs_geminals.F",
             "hfx_ri_methods.F",
             "hfx_screening_methods.F",
             "input_cp2k_hfx.F",
           ]
         },


#============================================================================

         {'dirname':'wfc',
          'requires': ["../base", "../common", "../fm", "../mpiwrap", "../gpw",
                       "../hfx", '../input', "../aobasis", "../systemtypes",
                        "../pw", "../qstypes", "../dbcsrwrap", "../cpdbcsr"],
          'files': [
            "input_cp2k_mp2.F",
            "mp2_cphf.F",
            "mp2_direct_method.F",
            "mp2.F",
            "mp2_gpw.F",
            "mp2_laplace.F",
            "mp2_optimize_ri_basis.F",
            "mp2_ri_gpw.F",
            "mp2_ri_grad.F",
            "mp2_ri_grad_util.F",
            "mp2_ri_libint.F",
            "mp2_setup.F",
            "rpa_communication.F",
            "rpa_ri_gpw.F",
            "minimax.F"
            ],
          },


#============================================================================

         {'dirname':'xc',
          'requires': ["../base", "../common", "../mpiwrap", "../pw", '../input'],
         },


#============================================================================

         {'dirname':'',
          'requires':  ["base", "common", "fm", "pw", "ma", "acc", "mpiwrap",
                        "input", "xc", "hfx", "aobasis", "gpw", "systemtypes",
                        "wfc", "qstypes", "dbcsrwrap", "cpdbcsr", "fist", "topology", "qmmm"]
         },

#============================================================================

         {'dirname':'pw',
          'requires':  ["../base", "../common", "../mpiwrap", "fft"],
          'files': ["cp_spline_utils.F"]
         },

#============================================================================

         {'dirname':'fm',
          'requires':  ["../base", "../common", "../mpiwrap"]
         },

#============================================================================

         {'dirname':'ma',
          'requires':  ["../base", "../common", "../dbcsrwrap", "../mpiwrap"]
         },

#============================================================================

         {'dirname':'dbcsr',
          'requires':  ["../acc","../base","../mpiwrap"],
          'files': [],
          'public': ['dbcsr_api.F'],
         },

#============================================================================

         {'dirname':'common',
          'requires': ["../mpiwrap","../base"]
         },
]

