ryandesign at macports.org
Sat Oct 18 19:31:29 PDT 2014
If B and C are different versions of the same program, for example a stable version and a development version, then it is usual to use a path:-style dependency. The ports should be named X and X-devel. The ports would install the same files to the same places and would be marked as conflicting with one another. See how ports depend on graphviz/graphviz-devel, pango/pango-devel, cairo/cairo-devel, glib2/glib2-devel for examples.
If B and C are different programs that serve a similar function, then it is usual to use port:-style dependencies. Have B and C not conflict with one another, and have them install files to different places. In D, offer variants for selecting B or C. Make the variants conflict and make one the default. In each variant, add the appropriate dependency and configure args. See how ports depend on gnutls/openssl, libiodbc/unixODBC for examples.
More information about the macports-dev