use a makefile to do everything