A more general Makefile