[llvm-commits] [llvm] r136023 - in /llvm/trunk: cmake/modules/ lib/Target/ARM/ lib/Target/ARM/AsmParser/ lib/Target/ARM/Disassembler/ lib/Target/ARM/InstPrinter/ lib/Target/ARM/MCTargetDesc/ lib/Target/Alpha/ lib/Target/Alpha/MCTargetDesc/ lib/Target/Alpha/Targ

Chandler Carruth chandlerc at google.com
Mon Jul 25 20:20:38 PDT 2011


Fundamentally, on the higher-level concepts, we may have to just disagree
here. I find great value in explicitly specified dependencies (note I'm not
talking about specifying every source file, but about specifying the
relationship between libraries) as it makes the actual maintenance of the
libraries and dependencies easier. I have sensed a growing appreciation and
desire for this in LLVM, perhaps due to the latent layering problems that
have gone unnoticed because the automatic system made things "just work".

On Mon, Jul 25, 2011 at 7:55 PM, Óscar Fuentes <ofv at wanadoo.es> wrote:

> Taking time on writing contracts is good if and only if they
> are enforced. In practice, you can state a set of build dependencies
> that omits certain edges and lists unnecessary edges and the build will
> work on some circunstances, and fail on another ones (usually those that
> you didn't tested.)
>

I don't disagree with this however, I just take a different approach: lets
make the contract *and* enforce it. I have the good (or mis-)fortune of
working with a build system that does a very careful job of enforcing and
checking dependencies and layering violations. I regularly compare the CMake
build with it to try to keep everything as close to accurate as possible.
I'm hoping to be able to automate that  process some as the layering
violations currently present get cleaned up, but all evidence is that *more*
visibility and *more* explicitness will be what is required to get there.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20110725/1b8d46c0/attachment.html>


More information about the llvm-commits mailing list