]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
rust-common: Rework wrappers to handle musl
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 5 Aug 2022 11:01:32 +0000 (12:01 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 8 Aug 2022 14:41:36 +0000 (15:41 +0100)
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>
meta/classes/rust-common.bbclass

index b79a829462c6028cedd567dc9c41457bb4fa3283..1bce7761ab040d66b4859badf9008a79b8cba76d 100644 (file)
@@ -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}"
 
 }