A generic makefile capable of building programs and static or shared libraries