Just to be clear: I spelled the macro "LIBPOSIX_EARLY" instead of "gl_EARLY". Oops. Entirely my fault. The only additional thing that might have been done is a sanity check on the substitutions. But, heck. The header was sufficiently mutilated to convince me I was in the weeds. I just needed a hint about how I got there. :) Thank you.
WRT "distclean", I never do that any more. I clone the repo into a build directory and do all my fiddling there. Yes, "git" has a command to remove everything, but I developed my procedures back in CVS (pre-svn) days, and old habits die hard.... Purging all non-SCM managed sources is very reliable.
Additionally, when it occurs in an isolated project, the developer knows what were his most recent changes; this is not the case any more for the average gnulib user when it comes to the recent changes in gnulib. Since blindly rerunning "make" is unreliable, I find that people should know that "make distclean; ./configure; make" is more reliable, since that will save them time.
Yes, too unreliable. clonetree src dest;cd dest;bootstrap;configure .....