ref: 29399c988c5e9355a6a90bda18bef49387a224cf
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.