On 02/02/2012 01:43 PM, Jim Meyering wrote: >> And coreutils has a bug, for forgetting the builddir version (which >> means it will build in an in-tree build, but probably fail in a VPATH >> build): >> AM_CPPFLAGS = -I$(top_srcdir)/lib > > "forgetting"? ;-) Nah. > On the contrary, I vaguely recall deliberately removing the > explicit (and then-redundant) -I... option back when I noticed > that automake handled that part for us. > > In the case of coreutils, DEFAULT_INCLUDES covers that: > > $ grep DEFAULT_INCLUDES.= src/Makefile > DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib
Ah, so automake favors builddir over srcdir. From the automake manual: > Automake already provides some @option{-I} options automatically, in a > separate variable that is also passed to every compilation that invokes > the C preprocessor. In particular it generates @samp{-I.}, > @samp{-I$(srcdir)}, and a @option{-I} pointing to the directory holding > @file{config.h} (if you've used @code{AC_CONFIG_HEADERS} or > @code{AM_CONFIG_HEADER}). You can disable the default @option{-I} > options using the @option{nostdinc} option. ... > Note that the reference to the build tree should come before the > reference to the source tree, so that accidentally leftover generated > files in the source directory are ignored. Meanwhile, m4 was using: AUTOMAKE_OPTIONS = nostdinc precisely to avoid the DEFAULT_INCLUDES, but then m4 had to provide srcdir itself, and did so prior to builddir; so I guess the bug is in m4. And we might as well improve the gnulib manual to document the hack of: > >>From what I recall, that's by virtue of our putting config.h in lib > via this line from configure.ac: > > AC_CONFIG_HEADERS([lib/config.h:lib/config.hin]) as a way to get config.h to live in gnulib's builddir, for one less listing in AM_CPPFLAGS if you are okay with DEFAULT_INCLUDES. I'm also wondering if it is worth writing things as an automake conditional that avoid redundant listing for in-tree builds, while still giving correct results for VPATH builds. -- Eric Blake ebl...@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature