mk is a build automation tool.

A mkfile is a script that mk can read to derive files from other files.

When given a target, mk reads the rule for the target and calculates a graph of dependencies. mk then derives all targets and dependencies with the recipes given.

All targets and dependencies are assumed to be files, unless the rule is marked virtual.