Makefiles are declarative, which is a bit strange at first. If you start with a simple one you pick it up really fast.