ref: ec6d15af043b990a3cdf8c18291e93056cc987c4
dir: /mk.md/
# mk(1) 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. ## Pointers * mk(1) man page * `/sys/doc/mk.ps` is the definitive guide. * `/sys/doc/mkfiles.ps` explains the system mkfiles in `/sys/src/cmd/`, though some info is outdated. * Amavect has [a repo of exercises](https://git.sr.ht/~amavect/mkexercises) for absolute beginners of build systems.