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.