Often the LLVM tools (llvm-ar, llvm-strip, etc) are already installed by default, so why include 2 sets of binary utilities?
Often the LLVM tools (llvm-ar, llvm-strip, etc) are already installed by default, so why include 2 sets of binary utilities?
But they’re already using clang/llvm, so they already need to comply with the license. Some like FreeBSD already have the llvm tools installed alongside elftoolchain
As the other guy said, it has to do with licensing. More specifically incompatibility between BSD-clause & GPLv3 licensing.
The incompatibility between the BSD license and GPLv3 arises from the fact that the BSD license is a permissive license that allows for proprietary modifications, while GPLv3 is a copyleft license that requires derivative works to be licensed under the same terms.
However, the Clang/LLVM compiler infrastructure, which is licensed under the Apache 2.0 license, is compatible with GPLv3.
This means that code licensed under GPLv3 can be combined with code licensed under Apache 2.0, and the resulting work can be licensed under GPLv3.
On the other hand, the elftoolchain project, which is licensed under the BSD license, is not directly compatible with GPLv3. Combining code licensed under GPLv3 with code licensed under the BSD license would violate the terms of GPLv3.
Apache 2.0, while compatible with both BSD & GPLv3 licenses; it’s still seen as more favorable to use elftoolchain for the BSD-clause bits than using LLVM because elftoolchain keeps the BSD bits constantly BSD licensed throughout.