A makefile is a special file, containing shell commands, that you create and name makefile (or Makefile depending upon the system). A makefile that works well in one shell may not execute properly in another shell.
The makefile contains a list of rules. These rules tell the system what commands you want to be executed.