10. Added gnulib/lib to include paths in Makefile.am AM_CPPFLAGS = -I. -I./lib -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_srcdir)/gnulib/lib 11. Now a gnulib sourcefile is missing make[2]: *** No rule to make target 'lib/hash-pjw.c', needed by 'lib/libbison_a-hash-pjw.o'. Stop.
ls -l lib/hash-pjw.[ch] lrwxrwxrwx 110 Jul 10 09:28 lib/hash-pjw.c -> gnulib/lib/hash-pjw.clrwxrwxrwx 110 Jul 10 09:28 lib/hash-pjw.h -> gnulib/lib/hash-pjw.h ls -l gnulib/lib/hash-pjw.{c,h} ls: cannot access 'gnulib/lib/hash-pjw.c': No such file or directory -rw-r--r-- 939 Jul 10 12:45 gnulib/lib/hash-pjw.h I guess most errors are actually bison-side - what started it all was the wint_t bug in gnulib - my mistake was to think I could simply update gnulib wholesale I'll try cherry-picking just the wint_t fix - and email bug-bison for the other issues But gnulib does need to find hash-pjw.c On Thursday, July 10, 2025 at 01:33:24 PM CDT, Z. Majeed <zmaj...@sbcglobal.net> wrote: 1. The errors begin with from lib/bitset.h:31/usr/include/sys/_types.h:167:5 error unknown type name wint_t 167 | wint_t __wch; because Bison's submodule dependency is on an older gnulib that doesn't have the fix for this bug described in https://lists.gnu.org/archive/html/bug-gnulib/2024-05/msg00011.html 2. Updating the gnulib submodule to either latest master or a recent branch like stable-202501 or stable-202507 causes many more errors 3. The next error is lib/stddef.h:238:30: error: token @ is not valid in preprocessor expressions 238 | #if !defined __cplusplus && !@HAVE_C_UNREACHABLE@ caused by a missing sed substitution command in gnulib.mk -e 's|@''HAVE_C_UNREACHABLE''@|$(HAVE_C_UNREACHABLE)|g' \ 3. After this change, there were too many errors - and I gave up trying to fix them one by one 4. All errors seem related to recent header file rearrangements for hash.h 5. The first error is src/muscle-tab.c: In function 'hash_muscle':src/muscle-tab.c:100:10: error: implicit declaration of function 'hash_string' [-Wimplicit-function-declaration] 100 | return hash_string (m->key, tablesize); because hash_string is now declared in hashcode-string1.h and hash.h has # if GNULIB_HASHCODE_STRING1/* Include declarations of module 'hashcode-string1'. */# include "hashcode-string1.h"# endif but GNULIB_HASHCODE_STRING1 is not defined anywhere 6. I got past this with #define GNULIB_HASHCODE_STRING1 1 7. The next error is .lib/hash.h:277:12: fatal error: hashcode-string1.h: No such file or directory 277 | # include "hashcode-string1.h" Because lib/hash.h is a symlink to gnulib/lib/hash.h - and hashcode-string1.h is in gnulib/lib and has no symlink from lib 8. Now, is this because a symlink wasn't created - or is it because gnulib/lib should be in #include paths? 9. I fixed this but there are many similar include path errors in files symlinked from lib/ to gnulib/lib like canonicalize.c #include "hashcode-file.h" All versions of everything are the latest Zartaj