-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 According to Eric Blake on 7/17/2009 6:25 AM: > make: *** No rule to make target `spawn.h', needed by `all'. Stop. > > In lib/gnulib.mk, I see lines like: > > BUILT_SOURCES += $(SPAWN_H) > BUILT_SOURCES += $(STDBOOL_H) > > In the corresponding Makefile, I see: > > SPAWN_H = spawn.h > STDBOOL_H = lib/ > > This looks suspicious. My <stdbool.h> does not need replacing, yet this > is ending up with a directory name (rather than a file name); meanwhile, > since <spawn.h> DOES need replacing, but is not being spelled as > lib/spawn.h, it is killing the entire make process. I don't know if the > bug is in gnulib-tool or in bison, but somehow the conversion from > lib/gnulib.mk into inclusion from a top-level Makefile is failing to put > built sources in the appropriate subdirectory.
Aha. Bison is doing this in configure.ac: # We use gnulib, but from lib/local.mk instead of lib/Makefile.am. # So prefix paths with lib/. See also etc/prefix-gnulib-mk. gl_LIBOBJS=`echo "$gl_LIBOBJS" | sed -e 's, , lib/,g'` for ac_var in ALLOCA_H ERRNO_H FCNTL_H GETOPT_H INTTYPES_H \ STDBOOL_H STDINT_H SYS_WAIT_H WCHAR_H WCTYPE_H do eval "$ac_var=lib/\$$ac_var" done gnulib-tool could make this part easier by automating it somehow (a new command line option to state whether the gnulib.mk fragment will be used in the current directory [default], or included from some other directory where all relative paths need an extra prefix [as in bison's case]). Meanwhile, bison needs to update this list of updated shell variables any time it imports a new gnulib module; in this case, SPAWN_H is missing from the list. Also, bison should NOT do the replacement if the shell variable is empty, so that we don't end up with entries like STDBOOL_H=lib/. - -- Don't work too hard, make some time for fun as well! Eric Blake e...@byu.net -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Cygwin) Comment: Public key at home.comcast.net/~ericblake/eblake.gpg Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkpgbx8ACgkQ84KuGfSFAYAPLwCgv8bNLFt88vaBlqteRxMFI83U YvIAoMnG1vf2xhmuNVIGjD3v1jk8962p =/dEG -----END PGP SIGNATURE-----