On Tue, 2026-07-28 at 17:42 -0500, G. Branden Robinson wrote: > Hi Paul, > > At 2026-07-28T15:32:52-0700, Paul Eggert wrote: > > On 2026-07-28 15:20, G. Branden Robinson wrote: > > > CC lib/libgnu_a-c32isalnum.o > > > In file included from lib/c32isalnum.c:26: > > > lib/c32is-impl.h:35:10: fatal error: unictype.h: No such file or directory > > > 35 | #include "unictype.h" > > > > > > Any idea about that one? > > > > Sorry, no, other than what Bruno and I already suggested, which is > > "Don't do that unless you've already run a plain 'make'." > > Okay. In that case I'm taking myself out of the loop on this issue; I > think Richard might need to work up some documentation for how > Yocto/OpenEmbedded attempts builds of projects using GNU Automake. > > If "make clean" doesn't trash the dependency information that "make all" > creates,[1] then "make libgroff.a" or "make doc/groff-man-pages.pdf" > might still be a useful technique for smoking out missing prerequisite > declarations in groff's *.am files.
Just to be clear, in general we (as in Yocto Project/OpenEmbedded) build things using the standard "make -j X", where X is some level of parallelism that varies depending on the hardware. We ran into issues with missing dependencies in groff and one way to easily "prove" those when reporting is to show that make of a single target breaks. In this case, that was true for several targets however I couldn't easily/quickly work out how to trigger the prerequisites of gnulib to build first. It sounds like that is done with BUILT_SOURCES which I'd not fully appreciated but I can see how that works looking at the Makefile now. Is there a way I can build just BUILT_SOURCES as the all target would, but nothing else? Worst case I can probably hack in a specific target for debugging I guess but I can't be the first to run into that. make clean will trash the built sources and that is the piece which I'm missing on how to trigger. I do note this comment in the Makefile too: # Adding defs.h to 'BUILT_SOURCES' ensures that it is built by "make # all" or "make check" before all other targets. However, if another # target is built from a clean build tree, for example "make groff", the # files in 'BUILT_SOURCES' are not built first. That is why additional # dependencies were added in the .am files that list objects that use # defs (for example in groff.am: # src/roff/groff/groff.$(OBJEXT): defs.h # ). which makes sense now. That does add slightly to the confusion though as that file does get handled 'correctly' but others don't. Cheers, Richard
