MaskRay added a comment.

In D155540#4524326 <https://reviews.llvm.org/D155540#4524326>, @sammccall wrote:

> In D155540#4524219 <https://reviews.llvm.org/D155540#4524219>, @MaskRay wrote:
>
>> `llvm/cmake/modules/HandleLLVMOptions.cmake` passes `-Wl,-z,defs`. 
>> `-DBUILD_SHARED_LIBS=on` builds get checking from the linker option 
>> (https://maskray.me/blog/2021-06-13-dependency-related-linker-options#z-defs).
>>  This is similar Bazel's layering_check.
>
> Thanks! This is good to know - it seems like this means when things break I 
> can repro locally and should get the same results, if I anticipate a breakage 
> I can test for it. I can't easily tell if I have *too many* deps, but that's 
> probably not an urgent problem.
>
>> For a dependency, say, `clangTooling`, if a source file within the `clangd` 
>> target (executable) uses (directly or transitively) clangTooling, the 
>> dependency should be kept, otherwise it should be removed.
>> If the source files are completely IWYU clean, it should be straightforward 
>> to tell whether a dependency can be removed by inspecting the `#include` 
>> lines.
>
> I'm not sure this is the case:
>
>   // clangdMain.cpp
>   #include "clangDaemon.h"
>   int result = clangDaemonThings();
>   
>   // clangDaemon.h
>   #include "Tooling.h"
>   inline int clangDaemonThings() { tooling::doStuff(); }
>
> IIUC if the call to `clangDaemonThings` gets inlined, now `clangdMain` has to 
> be linked against `Tooling`, despite being IWYU-clean and not including any 
> of its headers.
>
> (This would be unlike bazel, which doesn't require 
> `cc_library(name="clangdMain", deps=["clangTooling"])` in that case, maybe 
> I'm misunderstanding though...)

You are right! This is unlike Bazel...


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D155540/new/

https://reviews.llvm.org/D155540

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to