Some people use svn:externals for this kind of thing, which can eventually turn into a disaster because it doesn't scale and only records relationships in one direction. You can't easily ask: "Which modules use a particular module M?" But you can ask "Which modules does module M depend on?" Since svn:externals use a set of segregated working copies they don't mix well with 'svn merge' -- you can't atomically merge a change set which affects multiple modules.
I've seen this approach both succeed and fail. Generally, I guess the more aware everyone is about the limitations of svn:externals the better it can be made to work.
If you really need this to scale over time and project size, you should consider a dependency management tool and leave the version control tool out of this. Unfortunately these tools tend to be very domain specific. For the Java world there's Maven, for embedded Linux there are several native package managers (rpm, deb, etc.), for Dotnet stuff there's NuGet, on Unix you have Makefiles... The best choice depends on your domain.
It sounds like you're already using make. Have you considered writing a Makefile which ties things together in a way you need and manages the dependencies? This may not be the answer you were looking for but it might keep things simple in the long term. You could take an intense look at how Linux and *BSD make-based build systems manage to target a wide variety of platforms from a single source tree to find some inspiration.