A common makefile， both simple and flexible