I've first encountered this problem while installing the Gentoo package for bison 3.6.4 but it seems to persist in other versions and is definitely present in 3.7.1.
It is related to a parallel build, and it appears to be a dependency problem; and reproducing it requires giving "make" some options which seem to depend on the exact processor being used; however once found the right options the problem is 100% repeatable, "make" with the same options fails every time with the same error. The error itself also depends on the type of parallel build, but it suggests that some files are not generated before building an object which requires them. I'm including below examples of how to trigger the problem on three different processors, hoping that this helps somebody to reproduce the problem on other systems. The exact value of the "-l" option doesn't quite matter as I've tried small ranges, but it needs to be there together with the "-j" to trigger a problem. Starting from a freshly unpacked tarball for bison-3.7.1.tar.xz, on an "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz" (as per "lscpu"): $ ./configure && make -j4 -l0.5 ... src/files.c:24:10: fatal error: configmake.h: No such file or directory 24 | #include <configmake.h> /* PKGDATADIR */ | ^~~~~~~~~~~~~~ compilation terminated. make: *** [Makefile:7669: src/bison-files.o] Error 1 $ ./configure && make -j5 -l0.5 ... In file included from lib/pipe2.c:25: lib/binary-io.h: In function '__gl_setmode': lib/binary-io.h:52:10: error: 'O_BINARY' undeclared (first use in this function) 52 | return O_BINARY; | ^~~~~~~~ lib/binary-io.h:52:10: note: each undeclared identifier is reported only once for each function it appears in lib/pipe2.c: In function 'rpl_pipe2': lib/pipe2.c:70:43: error: 'O_BINARY' undeclared (first use in this function); did you mean SET_BINARY'? 70 | if ((flags & ~(O_CLOEXEC | O_NONBLOCK | O_BINARY | O_TEXT)) != 0) | ^~~~~~~~ | SET_BINARY lib/pipe2.c:70:54: error: 'O_TEXT' undeclared (first use in this function); did you mean 'F_TEST'? 70 | if ((flags & ~(O_CLOEXEC | O_NONBLOCK | O_BINARY | O_TEXT)) != 0) | ^~~~~~ | F_TEST make: *** [Makefile:5387: lib/libbison_a-pipe2.o] Error 1 On an "Intel(R) Core(TM) i3-4010U CPU @ 1.70GHz" I get: $ ./configure && make -j4 -l0.5 ... src/files.c:24:10: fatal error: configmake.h: No such file or directory 24 | #include <configmake.h> /* PKGDATADIR */ | ^~~~~~~~~~~~~~ compilation terminated. make: *** [Makefile:7669: src/bison-files.o] Error 1 On an "Intel(R) Atom(TM) CPU N550 @ 1.50GHz" (in 32 bit mode): $ ./configure && make -j4 -l2 src/files.c:24:10: fatal error: configmake.h: No such file or directory 24 | #include <configmake.h> /* PKGDATADIR */ | ^~~~~~~~~~~~~~ compilation terminated. make: *** [Makefile:7669: src/bison-files.o] Error 1 On the Gentoo build I got the "O_BINARY" problem on the atom, but can't reproduce it without applying the gentoo patches; however the other problem is 100% repeatable here starting from the unmodified tarball. See also https://bugs.gentoo.org/716516