Our team maintains a downstream embedded ARM toolchain. We are currently using the llvm/runtimes build method to use the just-built compiler to build libc++.
- We’d like to build two versions (base + multilib) of libc++: One with an external thread API enabled, and one without.
- We’ve set up two configs for libc++: the desired target triple, and the same target triple with a multilib tag and associated CMake overrides
- __config_site defines _LIBCPP_HAS_THREAD_API_EXTERNAL
- __config_site is configured into LIBCXX_GENERATED_INCLUDE_TARGET_DIR and installed into LIBCXX_INSTALL_INCLUDE_TARGET_DIR
- The above _DIR variables are defined to be based off of LLVM_DEFAULT_TARGET_TRIPLE because LLVM_ENABLE_PER_TARGET_RUNTIME_DIR is defaulted to true
So, both builds will configure __config_site to the same location.
Is there an expected/supported method to avoid this issue with multilibs?
My initial thought is we’d need to turn off LLVM_ENABLE_PER_TARGET_RUNTIME_DIR and manually designate install areas for each configuration.