commit:     282749749da38aa746e403ce8f2cf1ed50f49845
Author:     Michal Rostecki <vadorovsky <AT> protonmail <DOT> com>
AuthorDate: Tue Nov 11 13:19:40 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Dec 24 12:04:01 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=28274974

dev-lang/rust: Require clang when building WASM sysroot

GCC does not support WASM. Require clang to build C code for WASM
target and make sure it's actually used.

[mgorny: added strip-unsupported-flags too]

Bug: https://bugs.gentoo.org/965346
Signed-off-by: Michal Rostecki <vadorovsky <AT> protonmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/44594
Closes: https://github.com/gentoo/gentoo/pull/44594
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-lang/rust/rust-1.92.0_p1-r1.ebuild | 17 ++++++++++++++++-
 dev-lang/rust/rust-9999.ebuild         | 17 ++++++++++++++++-
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/dev-lang/rust/rust-1.92.0_p1-r1.ebuild 
b/dev-lang/rust/rust-1.92.0_p1-r1.ebuild
index f5073db6688b..6086b58e2f2f 100644
--- a/dev-lang/rust/rust-1.92.0_p1-r1.ebuild
+++ b/dev-lang/rust/rust-1.92.0_p1-r1.ebuild
@@ -125,6 +125,7 @@ BDEPEND="
                        sys-devel/mold
                )
        ) )
+       rust_sysroots_wasm? ( llvm-core/clang )
        !system-llvm? (
                >=dev-build/cmake-3.13.4
                app-alternatives/ninja
@@ -587,9 +588,23 @@ src_configure() {
        done
        if use rust_sysroots_wasm; then
                wasm_target="wasm32-unknown-unknown"
-               export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' 
'-march*' '-mtune*'; echo "$CFLAGS")"
+               if tc-is-clang; then
+                       local wasm_cc=$(tc-getCC)
+                       local wasm_cxx=$(tc-getCXX)
+               else
+                       local wasm_cc=${CHOST}-clang
+                       local wasm_cxx=${CHOST}-clang++
+               fi
+               export CFLAGS_${wasm_target//-/_}="$(
+                       CC="${wasm_cc} --target=wasm32-unknown-unknown"
+                       filter-flags '-mcpu*' '-march*' '-mtune*'
+                       strip-unsupported-flags
+                       echo "${CFLAGS}"
+               )"
                cat <<- _EOF_ >> "${S}"/bootstrap.toml
                        [target.wasm32-unknown-unknown]
+                       cc = "${wasm_cc}"
+                       cxx = "${wasm_cxx}"
                        linker = "$(usex system-llvm lld rust-lld)"
                        # wasm target does not have profiler_builtins 
https://bugs.gentoo.org/848483
                        profiler = false

diff --git a/dev-lang/rust/rust-9999.ebuild b/dev-lang/rust/rust-9999.ebuild
index f5073db6688b..6086b58e2f2f 100644
--- a/dev-lang/rust/rust-9999.ebuild
+++ b/dev-lang/rust/rust-9999.ebuild
@@ -125,6 +125,7 @@ BDEPEND="
                        sys-devel/mold
                )
        ) )
+       rust_sysroots_wasm? ( llvm-core/clang )
        !system-llvm? (
                >=dev-build/cmake-3.13.4
                app-alternatives/ninja
@@ -587,9 +588,23 @@ src_configure() {
        done
        if use rust_sysroots_wasm; then
                wasm_target="wasm32-unknown-unknown"
-               export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' 
'-march*' '-mtune*'; echo "$CFLAGS")"
+               if tc-is-clang; then
+                       local wasm_cc=$(tc-getCC)
+                       local wasm_cxx=$(tc-getCXX)
+               else
+                       local wasm_cc=${CHOST}-clang
+                       local wasm_cxx=${CHOST}-clang++
+               fi
+               export CFLAGS_${wasm_target//-/_}="$(
+                       CC="${wasm_cc} --target=wasm32-unknown-unknown"
+                       filter-flags '-mcpu*' '-march*' '-mtune*'
+                       strip-unsupported-flags
+                       echo "${CFLAGS}"
+               )"
                cat <<- _EOF_ >> "${S}"/bootstrap.toml
                        [target.wasm32-unknown-unknown]
+                       cc = "${wasm_cc}"
+                       cxx = "${wasm_cxx}"
                        linker = "$(usex system-llvm lld rust-lld)"
                        # wasm target does not have profiler_builtins 
https://bugs.gentoo.org/848483
                        profiler = false

Reply via email to