summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2022-08-05 12:01:32 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-08-08 15:41:36 +0100
commitdfff5a176765c0e8b212bf31081f80e79025fd1b (patch)
treeb298499db15aa5a2c4c90462fca15ff7f07e2b16 /meta/classes
parent1a992268e556a79daa6802367f48796000a1f436 (diff)
downloadopenembedded-core-contrib-dfff5a176765c0e8b212bf31081f80e79025fd1b.tar.gz
rust-common: Rework wrappers to handle musl
For musl we need to be able to add a library to the end of the linker commandline. Rework the wrapper code to be able to do this through a new variable. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/rust-common.bbclass22
1 files changed, 14 insertions, 8 deletions
diff --git a/meta/classes/rust-common.bbclass b/meta/classes/rust-common.bbclass
index b79a829462..1bce7761ab 100644
--- a/meta/classes/rust-common.bbclass
+++ b/meta/classes/rust-common.bbclass
@@ -141,13 +141,18 @@ RUST_TARGET_AR = "${WRAPPER_DIR}/target-rust-ar"
create_wrapper () {
file="$1"
shift
+ extras="$1"
+ shift
cat <<- EOF > "${file}"
#!/usr/bin/env python3
import os, sys
orig_binary = "$@"
+ extras = "${extras}"
binary = orig_binary.split()[0]
args = orig_binary.split() + sys.argv[1:]
+ if extras:
+ args.append(extras)
os.execvp(binary, args)
EOF
chmod +x "${file}"
@@ -157,6 +162,7 @@ WRAPPER_TARGET_CC = "${CC}"
WRAPPER_TARGET_CXX = "${CXX}"
WRAPPER_TARGET_CCLD = "${CCLD}"
WRAPPER_TARGET_LDFLAGS = "${LDFLAGS}"
+WRAPPER_TARGET_EXTRALD = ""
WRAPPER_TARGET_AR = "${AR}"
# compiler is used by gcc-rs
@@ -166,22 +172,22 @@ do_rust_create_wrappers () {
mkdir -p "${WRAPPER_DIR}"
# Yocto Build / Rust Host C compiler
- create_wrapper "${RUST_BUILD_CC}" "${BUILD_CC}"
+ create_wrapper "${RUST_BUILD_CC}" "" "${BUILD_CC}"
# Yocto Build / Rust Host C++ compiler
- create_wrapper "${RUST_BUILD_CXX}" "${BUILD_CXX}"
+ create_wrapper "${RUST_BUILD_CXX}" "" "${BUILD_CXX}"
# Yocto Build / Rust Host linker
- create_wrapper "${RUST_BUILD_CCLD}" "${BUILD_CCLD}" "${BUILD_LDFLAGS}"
+ create_wrapper "${RUST_BUILD_CCLD}" "" "${BUILD_CCLD}" "${BUILD_LDFLAGS}"
# Yocto Build / Rust Host archiver
- create_wrapper "${RUST_BUILD_AR}" "${BUILD_AR}"
+ create_wrapper "${RUST_BUILD_AR}" "" "${BUILD_AR}"
# Yocto Target / Rust Target C compiler
- create_wrapper "${RUST_TARGET_CC}" "${WRAPPER_TARGET_CC}" "${WRAPPER_TARGET_LDFLAGS}"
+ create_wrapper "${RUST_TARGET_CC}" "${WRAPPER_TARGET_EXTRALD}" "${WRAPPER_TARGET_CC}" "${WRAPPER_TARGET_LDFLAGS}"
# Yocto Target / Rust Target C++ compiler
- create_wrapper "${RUST_TARGET_CXX}" "${WRAPPER_TARGET_CXX}" "${CXXFLAGS}"
+ create_wrapper "${RUST_TARGET_CXX}" "${WRAPPER_TARGET_EXTRALD}" "${WRAPPER_TARGET_CXX}" "${CXXFLAGS}"
# Yocto Target / Rust Target linker
- create_wrapper "${RUST_TARGET_CCLD}" "${WRAPPER_TARGET_CCLD}" "${WRAPPER_TARGET_LDFLAGS}"
+ create_wrapper "${RUST_TARGET_CCLD}" "${WRAPPER_TARGET_EXTRALD}" "${WRAPPER_TARGET_CCLD}" "${WRAPPER_TARGET_LDFLAGS}"
# Yocto Target / Rust Target archiver
- create_wrapper "${RUST_TARGET_AR}" "${WRAPPER_TARGET_AR}"
+ create_wrapper "${RUST_TARGET_AR}" "" "${WRAPPER_TARGET_AR}"
}