Kati re-generates build.ninja when either of the followings has been changed:
The last one is tricky. $(shell find ...) is slow (~18 secs in total). Initializing the find emulator takes 1 or 2 secs.
Solution: When kati generates build.ninja, kati records the timestamps of directories traversed by find commands. When kati checks if re-generation is necessary, kati runs find commands only when the timestamps of these directories have been changed.