classes-recipe: add cargo_c.bbclass

This class can be used inside rust recipe to generate
a rust library that can be called by C/C++ code.

The rust recipe which uses this class has to only replace
"inherit cargo" by "inherit cargo_c".

(From OE-Core rev: 1e4862db1d6293872b76b62acee1e4a5e2597367)

Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Frederic Martinsons 2023-08-17 07:04:14 +02:00 committed by Richard Purdie
parent ed5702223b
commit c318d1914e

View File

@ -0,0 +1,41 @@
#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: MIT
#
##
## Purpose:
## This class is used by any recipes that want to compile a C ABI compatible
## library with header and pkg config file
inherit cargo pkgconfig
# the binaries we will use
CARGO_C_BUILD = "cargo-cbuild"
CARGO_C_INSTALL = "cargo-cinstall"
# We need cargo-c to compile for the target
BASEDEPENDS:append = " cargo-c-native"
do_compile[progress] = "outof:\s+(\d+)/(\d+)"
cargo_c_do_compile() {
oe_cargo_fix_env
export RUSTFLAGS="${RUSTFLAGS}"
bbnote "Using rust targets from ${RUST_TARGET_PATH}"
bbnote "cargo-cbuild = $(which ${CARGO_C_BUILD})"
bbnote "${CARGO_C_BUILD} cbuild ${CARGO_BUILD_FLAGS}"
"${CARGO_C_BUILD}" cbuild ${CARGO_BUILD_FLAGS}
}
cargo_c_do_install() {
oe_cargo_fix_env
export RUSTFLAGS="${RUSTFLAGS}"
bbnote "cargo-cinstall = $(which ${CARGO_C_INSTALL})"
"${CARGO_C_INSTALL}" cinstall ${CARGO_BUILD_FLAGS} \
--destdir ${D} \
--prefix ${prefix} \
--library-type cdylib
}
EXPORT_FUNCTIONS do_compile do_install