commit:     a903ffe027a436e6b391d3233c94c69aaea0a393
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Thu Oct  6 21:32:11 2022 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Thu Oct  6 22:14:42 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a903ffe0

dev-lang/rust: change libcxx detection method

Bug: https://bugs.gentoo.org/732632
Bug: https://bugs.gentoo.org/875563
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 dev-lang/rust/rust-1.64.0-r1.ebuild | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/dev-lang/rust/rust-1.64.0-r1.ebuild 
b/dev-lang/rust/rust-1.64.0-r1.ebuild
index 2b26a2679323..4ab6f6c152f0 100644
--- a/dev-lang/rust/rust-1.64.0-r1.ebuild
+++ b/dev-lang/rust/rust-1.64.0-r1.ebuild
@@ -231,6 +231,17 @@ llvm_check_deps() {
        has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// 
/,}]"
 }
 
+# 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* ]]
+}
+
 pkg_pretend() {
        pre_build_checks
 }
@@ -297,7 +308,7 @@ src_prepare() {
 src_configure() {
        filter-flags '-flto*' # https://bugs.gentoo.org/862109 
https://bugs.gentoo.org/866231
 
-       local rust_target="" rust_targets="" arch_cflags use_libcxx="false"
+       local rust_target="" rust_targets="" arch_cflags
 
        # Collect rust target names to compile standard libs for all ABIs.
        for v in $(multilib_get_enabled_abi_pairs); do
@@ -335,14 +346,6 @@ src_configure() {
 
        rust_target="$(rust_abi)"
 
-       # https://bugs.gentoo.org/732632
-       if tc-is-clang; then
-               local clang_slot="$(clang-major-version)"
-               if { has_version 
"sys-devel/clang:${clang_slot}[default-libcxx(-)]" || has_version 
"=sys-devel/clang-common-${clang_slot}*[default-libcxx(-)]" || is-flagq 
-stdlib=libc++; }; then
-                       use_libcxx="true"
-               fi
-       fi
-
        local cm_btype="$(usex debug DEBUG RELEASE)"
        cat <<- _EOF_ > "${S}"/config.toml
                changelog-seen = 2
@@ -355,7 +358,8 @@ src_configure() {
                targets = "${LLVM_TARGETS// /;}"
                experimental-targets = ""
                link-shared = $(toml_usex system-llvm)
-               $(if [[ ${use_libcxx} == true ]]; then
+               $(if is_libcxx_linked; then
+                       # https://bugs.gentoo.org/732632
                        echo "use-libcxx = true"
                        echo "static-libstdcpp = false"
                fi)

Reply via email to