[PATCH] Fix move-if-change for VPATH builds
Mon Jan 7 08:54:00 GMT 2008
> What I suggest is making "move-if-change" aware of the directory where
> building is performed by passing "$(srcdir)" to it as the first
> argument. The only change in the algorithm is adding the following rule:
> "If the destination file "dstfile" is the same as the source file and
> the destination file doesn't exist in the current directory, then create
> a symbolic link "dstfile" pointing to "$(srcdir)/dstfile".
It seems to me that this patch changes the semantics of move-if-change quite
move-if-change foo bar
"In the current directory replace bar with foo if they are different
or if bar does not exist, and then regardless of whether the
replacement happened, delete foo".
with the patch applied we would have:
move-if-change <srcdir> foo bar
"In the current directory replace bar with foo, but only if foo is
different from some other file <srcdir>/bar or if <srcdir>/bar does not
exist. If <srcdir>/bar does not exist then go ahead with the replacement
even if foo and bar are the same. Then regardless of whether the
replacement happened, delete foo, but if the replacement did not happen
and bar does not exist then create a symbolic link called bar back to
My points are:
a) If SRCDIR/DEST does not exist then the patched script will always move
SOURCE to DEST even if they both exist and are both the same.
b) The script's behaviour is no longer "like mv $1 $2", so the comment at
the start ought to be changed.
c) The patched script assumes that symbolic links can be created - this is
not true of all file systems and all OSes.
Hence as it stands I do not think that the patch is suitable for inclusion into
the sources. Plus as DJ mentioned you will need buy-in from the GCC and GDB
projects before a patch like this can be applied, so you will need to propose
it to them as well.
More information about the Binutils