Coming from the Windows world:
I've seen this used inside a company. Separate the code base into several static libs and link them all together in different combinations depending on what each product needs.
I've also seen it in public SDKs, where the functionality is divided among several DLLs, some of which depend on each other, others are optional depending on what functionality you need.
It wouldn't seem unusual to me.