# Order (or more generally, edge selection) is significant (see gmxtree.md);
# "moduleA -> moduleB" means that moduleA should not depend on moduleB, and is
# a problem to be addressed at some point.

# Compat wants assertions and string code from utility, and other string code
# in utility wants to use string_view from compat. If we fix this, it might be
# best to implement the compat namespace within the utility module.
compat -> utility

domdec -> imd
domdec -> ewald
domdec -> mdlib
domdec -> pulling
fileio -> gmxlib
mdlib -> essentialdynamics
mdlib -> imd
mdlib -> ewald
mdlib -> pulling
mdlib -> awh
nbnxm -> domdec
nbnxm -> mdlib
simd -> hardware
gpu_utils -> hardware
listed_forces -> mdlib
utility -> math

# modular simulator uses shellfc from mdrun, but is later included in mdrun by simulator builder
modularsimulator -> mdrun

# Cycle counters in timing use comrec for the set up, which is in the mdtypes. This introduces
# cyclic dependencies if the cycle counting is used anywhere in mdtypes.
timing -> mdtypes