xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-devtools/cargo/cargo-cross-canadian.inc (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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