This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

One cause of spurious rebuilds


A result from the changed mkdep handling.  When math/m_isinf.o is first
built, there is no .d file for it.  The "m_%.c: sysdeps/foo_%.c" rule
triggers, and math/m_isinf.c is created as an intermediate dependency. 
Therefore it's removed when we're done with it.

During a second time through make, the .d is loaded.  m_isinf.o now
explicitly depends on m_isinf.c, so it is not an intermediate file; so the
fact that it is missing can no longer be ignored.  It is built, and this
time left around.  libm is rebuilt.

Solution?  I'm not sure; you might think that this would work:
.INTERMEDIATE: $(foreach s,.c .S l.c l.S f.c f.S,$(calls:s_%=$(objpfx)m_%$s))

but it doesn't; it declares that there is an intermediate target with each
of those names, and in fact there are only intermediate targets with half of
those names.  This causes it to try to build m_isinf.S instead of m_isinf.o.

I hate recursive make.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]