added makefile, gitignore, and rules to ensure that all rule applications occur first