The LASTCHANGE file is created and updated by gclient runhooks under
normal circumstances, so it makes more sense to treat it as if it were a
checked-in source file, not a generated file. The rule for its
generation was still getting run once on a clean build, because the
other targets that depended on it expected a gyp timestamp file to exist
for the target.
There's no need for any other targets to actually depend on lastchange
(and in fact several of the targets that make use of the file already
don't depend on the target); it should already exist, and if it doesn't
then the source checkout is probably broken (as the other steps in
runhooks are also mandatory). So, remove the rule entirely.