3. Old-school buildable libraries. These have a dependency on /boost/headers.
4. Newfangled buildable libraries. These enumerate all of their dependencies in their Jamfile, including type 2 header-only ones. If they use no type 1 libraries, they don't need a dependency on /boost/headers, and don't need the header links.
I mostly agree with you, except for one issue: This is severely complicated by the fact that the dependency on
Steven Watanabe wrote: headers is currently implicit. How are we going to distinguish (3) from (4)? If we're making incremental updates, then we can't make any changes at all to the old-school libraries, so we can't rely on them telling us that they need /boost/headers. There aren't that many type 3 libraries, and they already have build/Jamfiles, so making the dependency explicit for type 3 is feasible. We can just add it to them. Testing might be a problem. test/Jamfile for header-only type 1 libraries needs the implicit headers too. Still doable though.