Pass definition simplified by not using -local target
Instead, pass targets are declared as double-colon rules meaning that there
can be multiple definition of the pass target and all commands from these
definitions are concatenated and executed together.
The previous solution used dependencies as a way to specify multiple
commands to be executed. This leaded to higher memory consumption and
probably even to a problem with ordering of executed commands. Because
processing of both SUBDIRS and -local commands was implemented as
dependencies, in case of parallel make (-j) some commands in the current
directory could be executed before the commands from subdirectories. (Note
that this behavior was not observed. I only guess from manual that this
could happen.)