Make is a build utility that works with a file called a Makefile and basic shell scripts. It can be used to orchestrate the output of any project that requires a build phase. It's part of Linux and it's easy to use.
It's important to understand that the utility, make, is not a compiler as many people believe. It's a build tool just like MSBuild or Ant.
Make is an extraordinarily simple tool which, combined with the power of the shell, can greatly reduce the complexity of your application's build needs. Even if you're a Gulp/Grunt/Whatever fan, you should understand the power of make, as well as its shortcomings.
The Basics
Make will turn one (or more) files into another file. That's the whole purpose of the tool. If you run make and your source hasn't changed, make won't build your output.
Make runs on shell commands, orchestrated using the concept of "targets".
The Code
You can follow along and read the code by using the code in this commit.