[CMake] Enable LLVM_ENABLE_PER_TARGET_RUNTIME_DIR by default on Linux
authorFangrui Song <i@maskray.me>
Thu, 26 Aug 2021 17:13:16 +0000 (10:13 -0700)
committerFangrui Song <i@maskray.me>
Thu, 26 Aug 2021 17:13:16 +0000 (10:13 -0700)
commitabb956370ee71d018e9a88ae196f039f6c4e0dae
treef7b44bbfbdc49122afc14b78e3adc51d5a93afc0
parent30c288489ae51a3e0819241f367eeae6df2b09e7
[CMake] Enable LLVM_ENABLE_PER_TARGET_RUNTIME_DIR by default on Linux

This makes the default build closer to a -DLLVM_ENABLE_RUNTIMES=all build.
The layout is arguably superior because different libraries of target triples
are in different directories, similar to GCC/Debian multiarch.

When LLVM_DEFAULT_TARGET_TRIPLE is x86_64-unknown-linux-gnu,
`lib/clang/14.0.0/lib/libclang_rt.asan-x86_64.a`
becomes
`lib/clang/14.0.0/lib/x86_64-unknown-linux-gnu/libclang_rt.asan.a`.

Clang has been detecting both paths since 2018 (D50547).

---

Note: Darwin needs to be disabled. The hierarchy needs to be sorted out.
The current -DLLVM_DEFAULT_TARGET_TRIPLE=off state is like:
```
lib/clang/14.0.0/lib/darwin/libclang_rt.profile_ios.a
lib/clang/14.0.0/lib/darwin/libclang_rt.profile_iossim.a
lib/clang/14.0.0/lib/darwin/libclang_rt.profile_osx.a
```

Windows needs to be disabled: https://reviews.llvm.org/D107799?id=368557#2963311

Differential Revision: https://reviews.llvm.org/D107799
llvm/CMakeLists.txt