1SUMMARY = "Cargo, a package manager for Rust cross canadian flavor." 2 3RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config" 4 5HOST_SYS = "${HOST_ARCH}-unknown-linux-gnu" 6CARGO_RUST_TARGET_CCLD = "${RUST_BUILD_CCLD}" 7 8require recipes-devtools/rust/rust-common.inc 9require cargo.inc 10 11CARGO = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo" 12BASEDEPENDS:remove = "cargo-native" 13 14export RUST_TARGET_PATH="${WORKDIR}/targets/" 15 16RUSTLIB = " \ 17 -L ${STAGING_DIR_NATIVE}/${SDKPATHNATIVE}/usr/lib/${TARGET_SYS}/rustlib/${HOST_SYS}/lib \ 18" 19 20DEPENDS += "rust-native \ 21 rust-cross-canadian-${TRANSLATED_TARGET_ARCH} \ 22 virtual/nativesdk-${HOST_PREFIX}compilerlibs \ 23 nativesdk-openssl nativesdk-zlib \ 24 virtual/nativesdk-libc \ 25" 26 27inherit cross-canadian 28 29PN = "cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}" 30 31python do_rust_gen_targets () { 32 wd = d.getVar('WORKDIR') + '/targets/' 33 34 rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH')) 35 rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH')) 36} 37 38do_compile:prepend () { 39 PKG_CONFIG_PATH="${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}" 40} 41 42do_install () { 43 SYS_BINDIR=$(dirname ${D}${bindir}) 44 install -d "${SYS_BINDIR}" 45 install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${SYS_BINDIR}" 46 for i in ${SYS_BINDIR}/*; do 47 chrpath -r "\$ORIGIN/../lib" ${i} 48 done 49 50 ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d 51 mkdir "${ENV_SETUP_DIR}" 52 ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh" 53 cat <<- EOF > "${ENV_SETUP_SH}" 54 export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo" 55 mkdir -p "\$CARGO_HOME" 56 # Init the default target once, it might be otherwise user modified. 57 if [ ! -f "\$CARGO_HOME/config" ]; then 58 touch "\$CARGO_HOME/config" 59 echo "[build]" >> "\$CARGO_HOME/config" 60 echo 'target = "'${TARGET_SYS}'"' >> "\$CARGO_HOME/config" 61 fi 62 63 # Keep the below off as long as HTTP/2 is disabled. 64 export CARGO_HTTP_MULTIPLEXING=false 65 66 export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt" 67 EOF 68} 69 70PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin" 71FILES:${PN} += "${base_prefix}/environment-setup.d ${PKG_SYS_BINDIR}" 72 73