This is the mail archive of the
mailing list for the glibc project.
One cause of spurious rebuilds
- From: Daniel Jacobowitz <drow at mvista dot com>
- To: libc-alpha at sources dot redhat dot com
- Date: Sun, 2 Nov 2003 13:57:51 -0500
- Subject: 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.
MontaVista Software Debian GNU/Linux Developer