This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: re-re-re-re-configuring
- From: Nathanael Nerode <neroden at twcny dot rr dot com>
- To: DJ Delorie <dj at redhat dot com>, rth at redhat dot com, ac131313 at redhat dot com, binutils at sources dot redhat dot com, gdb-patches at sources dot redhat dot com, gcc-patches at sources dot redhat dot com
- Date: Sun, 08 Dec 2002 17:38:15 -0500
- Subject: Re: re-re-re-re-configuring
- References: <20021206102555.GA15028@redhat.com> <200212061850.gB6Io3m26371@greed.delorie.com>
DJ Delorie wrote:
So who broke the make dependencies such that we
re-run configure *every* time you type "make"?
I debugged this, and the dependencies look right, almost (sigh).
Basically, it boils down to this:
.PHONY: configure-libiberty maybe-configure-libiberty
maybe-configure-libiberty:
configure-libiberty: libiberty/Makefile
Considering target file `all-libiberty'.
File `all-libiberty' does not exist.
Considering target file `configure-libiberty'.
File `configure-libiberty' does not exist.
Considering target file `libiberty/Makefile'.
Pruning file `config.status'.
Pruning file `intl/Makefile'.
Finished prerequisites of target file `libiberty/Makefile'.
Prerequisite `config.status' is older than target `libiberty/Makefile'.
Prerequisite `intl/Makefile' is older than target `libiberty/Makefile'.
No need to remake target `libiberty/Makefile'.
Finished prerequisites of target file `configure-libiberty'.
Must remake target `configure-libiberty'.
Successfully remade target file `configure-libiberty'.
Finished prerequisites of target file `all-libiberty'.
Must remake target `all-libiberty'.
So, even though configure-libiberty is .PHONY and its prereqs are OK,
it gets "rebuilt" anyway. Consequently...
Considering target file `bfd/Makefile'.
Pruning file `config.status'.
Pruning file `configure-libiberty'.
Pruning file `opcodes/Makefile'.
Finished prerequisites of target file `bfd/Makefile'.
Prerequisite `config.status' is older than target `bfd/Makefile'.
Prerequisite `configure-libiberty' of target `bfd/Makefile' does not exist.
Prerequisite `opcodes/Makefile' is older than target `bfd/Makefile'.
Must remake target `bfd/Makefile'.
Even though configure-libiberty is .PHONY, it was "rebuilt" and so
bfd/Makefile must also be rebuilt.
Arrrr. Right. Phony target problem. :-/
I did a test changing this line:
bfd/Makefile: configure-libiberty
to this:
configure-bfd: configure-libiberty
>
> and it seems to work. I'll work up a patch.
>
And the reason I didn't do this was due to a different bug.
If libiberty is changed, then since
configure-bfd: configure-libiberty
configure-bfd: bfd/Makefile
bfd/Makefile won't be regenerated.
The correct solution is to change it to
bfd/Makefile: libiberty/Makefile
which I will work up a simple patch for if nobody beats me to it.
(I'll replace all maybe-configure-X: configure-X dependencies with
maybe-configure-X: X/Makefile dependencies.)