recompilation

LLVM,

When we recompile, is it possible to "make" only one of the tools, or at
least relink only the tools whose object files have changed?

Thanks
Dave

Absolutely:

% cd ~/llvm/lib
% make # this (re-)compiles all the libraries
% cd ~/llvm/tools/lli
% make # re-link the tool IF any of its libraries changed

In fact, you can go into ANY subdirectory and just re-run make there.

Also, you might want to know about this neat `makellvm' script that's in
`llvm/utils'. It provides an easy way of doing the above 4 steps in one
command.

For example, let's say you're working on the Sparc JIT, so you are in
the directory llvm/lib/Target/Sparc, where you modified some files. Now
you want to recompile the Sparc library, and relink lli.

llvm/lib/target/Sparc% ../../../utils/makellvm lli

That's it! For more options, run `makellvm -h', and you can also add
the directory `llvm/utils' to your path so you can just call:

llvm/lib/target/Sparc% makellvm lli

Hope that helps.

I should point out something I missed the first time...

When we recompile, is it possible to "make" only one of the tools,

This I answered in the previous email.

or at least relink only the tools whose object files have changed?

This is the default behavior: make looks at timestamps of the object
files, and if any of them are newer than the tool binary, that means a
library changed and the tool needs to be re-linked.

In other words, if you *ALWAYS* run a top-level make, you will ONLY
relink those tools whose libraries (object files) have changed.

However, given that the tools share the common libraries, changing a
single file *may* force a re-linking of several tools if you do a
top-level make. In this case, please see the previous email about the
`makellvm' script.

Hope that answers your question.