#1220: OPTIONAL_IFACTIVE -------------------------+-------------------------------------------------- Reporter: eschnett | Owner: Type: enhancement | Status: new Priority: major | Milestone: Component: Cactus | Version: Keywords: | -------------------------+-------------------------------------------------- Following up on a discussion on the Cactus developers mailing list, I want to suggest a third way of indicating a desired capability. In addition to REQUIRES and OPTIONAL, I suggest OPTIONAL_IFACTIVE. This behaves like OPTIONAL, except that the capability relationship only exists if the thorn providing the capability is active.
For example, thorn GRHydro would state "OPTIONAL_IFACTIVE Carpet". This mean that, if Carpet is built into the configuration (i.e. is in the thorn list), _and_ if Carpet is active, then GRHydro will depend on it, e.g. by calling functions in Carpet. If Carpet is not in the thorn lists, these calls will be #ifdef'd out, and if Carpet is not active, these calls will not occur.
This will make it possible to automatically activate all thorns that provide a required capability. In fact, the attached patch already implements this.