ref: 1d33269dd1cc6368116a27215a7eb5ceff4aee80
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.