unified makefile