completed makefile and compilation framework