generate makefile