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
