commit: 5c01167303f7baaec381a4a85ad5f4f3ca16c3c6
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 10 22:41:55 2017 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Aug 9 11:52:57 2018 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5c011673
sys-devel/llvm: Add custom SOVERSION suffix when linking to libc++
sys-devel/llvm/llvm-9999.ebuild | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/sys-devel/llvm/llvm-9999.ebuild b/sys-devel/llvm/llvm-9999.ebuild
index 612f8a07e7b..d5404d204a0 100644
--- a/sys-devel/llvm/llvm-9999.ebuild
+++ b/sys-devel/llvm/llvm-9999.ebuild
@@ -89,6 +89,18 @@ src_prepare() {
cmake-utils_src_prepare
}
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+ local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+ HAVE_LIBCXX
+#endif
+'
+ local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P -
<<<"${code}") || return 1
+
+ [[ ${out} == *HAVE_LIBCXX* ]]
+}
+
multilib_src_configure() {
local ffi_cflags ffi_ldflags
if use libffi; then
@@ -132,6 +144,15 @@ multilib_src_configure() {
-DOCAMLFIND=NO
)
+ if is_libcxx_linked; then
+ # Smart hack: alter version suffix -> SOVERSION when linking
+ # against libc++. This way we won't end up mixing LLVM libc++
+ # libraries with libstdc++ clang, and the other way around.
+ mycmakeargs+=(
+ -DLLVM_VERSION_SUFFIX="libcxx"
+ )
+ fi
+
# Note: go bindings have no CMake rules at the moment
# but let's kill the check in case they are introduced
# if ! multilib_is_native_abi || ! use go; then