On 2020-09-08 12:18, Adam Novak wrote:
It sounds like Bison is designed around the GNU project way of doing software development, where there exist "maintainers" who are different from end users, and who have an opportunity to prepare "releases" which either contain more files than are checked into version control (or at least an opportunity to update generated files which are checked in).
That turns out not to be the case, entirely. Like other Autotools project, Bison ships the downstream user a generated ./configure script which doesn't require Autotools or M4. But Bison uses M4 to generate code from skeletons also. Not only is that generation not done at the time a Bison version is cut for shipping to people who build it (similarly to the configure script), it's not actually done until the users who run bison execute the program. If you look into your distro's /usr/share/bison directory, you find files like yacc.c that are not C, but M4 source. That approach works smoothly because M4 is stable. Most users don't even know about the M4 run-time dependency.
