BUILT_SOURCES solves a useful problem and we use it in our package for a few things. Its stated purpose (from the docs) is all about compilation and dependency tracking. It makes sense that $(BUILT_SOURCES) should then be built as a prerequisite before any targets that result in compilation: all, check, install-exec, ...
`make dist` doesn't compile the program, though: it distributes the sources. And usually generated files are not distributed. If they were to be disted, they could be listed explicitly for being disted (for example in a _SOURCES variable or so). We go out of the way to put our compiled sources in nodist_ variables, and indeed, they're not disted. But because of the above dependency `make dist` still builds them (and then ignores them). Of course, there might be a edgecase where the disted tarball should contain content that is output by a C program which needs to be compiled and contains, itself, some generated sources. Indeed, this change was introduced in 2017, in this commit: commit ac47c22e3c0c8b055cdd47ccd18621c56f807b37 Author: Jim Meyering <meyer...@fb.com> AuthorDate: Thu Mar 20 12:31:32 2014 -0700 Commit: Jim Meyering <meyer...@fb.com> CommitDate: Tue Nov 28 19:05:59 2017 -0800 "make dist" did not depend on $(BUILT_SOURCES) in response to this report: https://lists.gnu.org/r/bug-hello/2014-03/msg00016.html GNU Hello builds its manpage (which it dists) by building and running the binary and capturing its --help output. A blanket depend on $(BUILT_SOURCES) for all automake-using projects seems to be much too large of a hammer to solve that specific problem. Thanks very much, Allison Karlitskaya