On Mon, 2023-11-20 at 15:46 +0100, Adrian Freihofer wrote:
> Define the CMAKE_CROSSCOMPILING_EMULATOR variable similar to what the
> meson bbclass does. This allows for example to execute cross compilied
> unit tests on the build machine when using an SDK.
>
> CMAKE_CROSSCOMPILING_EMULATOR is a semi colon separated list of
> paramters which could directly handle the -L and the -E parameters.
> Creating a wrapper script is not absolutely mandatory. But anyway lets
> do it similar to what the meson.bbclass does and also disable pseudo.
>
> Further information can be found in the camke documentation in the
> CMAKE_CROSSCOMPILING_EMULATOR section.
>
> Keep the code optional, as the core does not need this function and does
> not intend to use it in the future.
>
> [YOCTO #15214]
>
> Signed-off-by: Adrian Freihofer <[email protected]>
> ---
> meta/classes-recipe/cmake-qemu.bbclass | 28 ++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
> create mode 100644 meta/classes-recipe/cmake-qemu.bbclass
>
> diff --git a/meta/classes-recipe/cmake-qemu.bbclass
> b/meta/classes-recipe/cmake-qemu.bbclass
> new file mode 100644
> index 0000000000..76b748f340
> --- /dev/null
> +++ b/meta/classes-recipe/cmake-qemu.bbclass
> @@ -0,0 +1,28 @@
> +#
> +# Copyright OpenEmbedded Contributors
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +# Not all platforms are supported by Qemu. Using qemu-user therefore
> +# involves a certain risk, which is also the reason why this feature
> +# is not activated by default.
"not part of the main cmake class by default"?
> +
> +inherit qemu
> +
> +CMAKE_EXEWRAPPER_ENABLED:class-native = "False"
> +CMAKE_EXEWRAPPER_ENABLED:class-nativesdk = "False"
> +CMAKE_EXEWRAPPER_ENABLED ?= "${@bb.utils.contains('MACHINE_FEATURES',
> 'qemu-usermode', 'True', 'False', d)}"
> +DEPENDS:append = "${@' qemu-native' if d.getVar('CMAKE_EXEWRAPPER_ENABLED')
> == 'True' else ''}"
I suspect making that a DEPENDS:append:class-target might help bitbake
with parsing things a bit.
I'm also a bit torn on CMAKE_EXEWRAPPER_ENABLED and whether we
need/want the variable or just switch on qemu-usermode. I'm guessing
you worked the code this way so you could conditionally bypass it with
different defaults.
> +
> +cmake_do_generate_toolchain_file:append:class-target() {
> + if [ "${CMAKE_EXEWRAPPER_ENABLED}" = "True" ]; then
> + # Write out a qemu wrapper that will be used as exe_wrapper so that
> camake
> + # can run target helper binaries through that. This also allows to
> execute ctest.
> + qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_HOST}',
> ['${STAGING_DIR_HOST}/${libdir}','${STAGING_DIR_HOST}/${base_libdir}'])}"
> + echo "#!/bin/sh" > "${WORKDIR}/cmake-qemuwrapper"
> + echo "$qemu_binary \"\$@\"" >> "${WORKDIR}/cmake-qemuwrapper"
> + chmod +x "${WORKDIR}/cmake-qemuwrapper"
> + echo "set( CMAKE_CROSSCOMPILING_EMULATOR
> ${WORKDIR}/cmake-qemuwrapper)" \
> + >> ${WORKDIR}/toolchain.cmake
> + fi
Cheers,
Richard
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#191160):
https://lists.openembedded.org/g/openembedded-core/message/191160
Mute This Topic: https://lists.openembedded.org/mt/102708280/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-