Usage: redo-ifchange [-j X] [-k] [-s] [-x|-xx] target [...] (Re)build specified targets if they are out-of-date and record them as a dependency for the currently run target. This is the main command you will use in .do files. Pay attention that redo-ifchange enables parallel builds of the given targets, but ordinary redo is not: it builds specified targets sequentially and stops when error happens. It will warn if non-top target did not write anything. If redo sees some target modified externally, then by default it warns user about that, does not build that target, but continues the build process further. That is convenient in most cases: you can build your project with manual target modifications, without touching possibly more complicated .do files. With $REDO_STOP_IF_MODIFIED=1 redo won't continue and will exit with failure message.