We version all our core libraries.
So e.g., the SVN looks like this:
/repo/lib1/trunk/
/repo/lib1/tags/1.0
/repo/lib1/tags/1.1
/repo/lib1/branches
...
This avoids the situation where you break BC, or something, and it requires an update to the other three projects that use the library.
Further more, we utilize svn:externals
to link these libraries into projects.
/repo/project1/tags/1.0
/repo/project1/trunk/library
...
svn propedit svn:externals /repo/project1/trunk/library
Enter the following:
lib1 svn://host/repo/lib1/tags/1.1
... and commit the change.
Project1 itself follows the convention (tags for releases, etc.) as well.
Depending on the language of your choice, there are of course other options. Let me know if you can go into detail and I see if I can extend my answer. But all in all, it's as simple as that. No other build tools required.
We do all our deployment straight from subversion (through capistrano). It's basically just checking out the tag, and done. Even allows hot-fixing it. If you allow me pimping my own blog -- I've written extensively on this topic ("deployment from svn").
HTH!