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