Note: most of this article is simply an incomplete natural language narration of what Crystal's Makefile specifies. If you, like me, feel a bit intimidated by Make, you may find this article more welcoming than venturing into the code by yourself and figuring things out from scratch.
At the root level of crystal-lang/crystal
there's a Makefile that triggers the build process.
The default task in that Makefile is crystal
.
That task checks whether there's a .build/crystal
executable.
To build the executable, you first need its dependencies (DEPS
) and the source code (SOURCES
).
With the dependencies built and the list of source code files, we are ready to compile Crystal, by running a previous version of the compiler that sits at bin/crystal
. The new compiler will be written to .build/crystal
.