fpetrogalli added a comment.

In D141581#4069053 <https://reviews.llvm.org/D141581#4069053>, @tstellar wrote:

> [...]
> It's still not clear to me why LLVM_LINK_COMPONENTS does not work.  Is 
> LLVMTargetParser a library?

Yes, `LLVMTargetParser` is a library built located in `llvm/lib/TargetParser`. 
`LLVM_LINK_COMPONENTS` does not work if `clangBasic` or  `clangDriver` start 
building before `LLVMTargetParser`, because the header file 
`llvm/TargetParser/RISCVTargetParserDefs.inc` has not been generated yet. This 
didn't happen on my local build, but on some bot I had the following error 
reported even if `TargetParser` was added to `LLVM_LINK_COMPONENTS`.

<path-to>/llvm-project/llvm/include/llvm/TargetParser/RISCVTargetParser.h:29:10:
 fatal error: llvm/TargetParser/RISCVTargetParserDef.inc: No such file or 
directory

  29 | #include "llvm/TargetParser/RISCVTargetParserDef.inc"
     |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

By adding `LLVMTargetParser` to the `DEPENDS` of `clangBasic` and `clangDriver` 
it seems that the order of building LLVMTargetParser before any of the 
dependents is enforced.

To put in other words, it seems that just specifying` LINK_COMPONENTS = A` for 
a library `B` allows `A` and `B` to be built in parallel.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D141581

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

Reply via email to