]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
cargo-cross-canadian: Use SDK's flags during target linking
authorOtavio Salvador <otavio@ossystems.com.br>
Sun, 10 Jul 2022 16:43:00 +0000 (13:43 -0300)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 28 Jul 2022 10:07:11 +0000 (11:07 +0100)
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/cargo/cargo-cross-canadian.inc

index 7fc22a4128dd2206c5eb5763d31e58a86ba5a546..01ba151d0a922f1c1abf5da1dc1ce8f9f60235f8 100644 (file)
@@ -39,6 +39,18 @@ do_compile:prepend () {
        PKG_CONFIG_PATH="${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"
 }
 
+create_sdk_wrapper () {
+        file="$1"
+        shift
+
+        cat <<- EOF > "${file}"
+               #!/bin/sh
+               \$$1 \$@
+               EOF
+
+        chmod +x "$file"
+}
+
 do_install () {
     SYS_BINDIR=$(dirname ${D}${bindir})
     install -d "${SYS_BINDIR}"
@@ -47,6 +59,9 @@ do_install () {
        chrpath -r "\$ORIGIN/../lib" ${i}
     done
 
+    # Uses SDK's CC as linker so linked binaries works out of box.
+    create_sdk_wrapper "${SYS_BINDIR}/target-rust-ccld" "CC"
+
     ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
     mkdir "${ENV_SETUP_DIR}"
     ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
@@ -58,7 +73,10 @@ do_install () {
                touch "\$CARGO_HOME/config"
                echo "[build]" >> "\$CARGO_HOME/config"
                echo 'target = "'${TARGET_SYS}'"' >> "\$CARGO_HOME/config"
-        fi
+               echo '# TARGET_SYS' >> "\$CARGO_HOME/config"
+               echo '[target.'${TARGET_SYS}']' >> "\$CARGO_HOME/config"
+               echo 'linker = "target-rust-ccld"' >> "\$CARGO_HOME/config"
+    fi
 
        # Keep the below off as long as HTTP/2 is disabled.
        export CARGO_HTTP_MULTIPLEXING=false