diff options
Diffstat (limited to 'meta/classes-recipe/cmake-qemu.bbclass')
-rw-r--r-- | meta/classes-recipe/cmake-qemu.bbclass | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/meta/classes-recipe/cmake-qemu.bbclass b/meta/classes-recipe/cmake-qemu.bbclass index 76b748f340..46a89e2827 100644 --- a/meta/classes-recipe/cmake-qemu.bbclass +++ b/meta/classes-recipe/cmake-qemu.bbclass | |||
@@ -5,18 +5,22 @@ | |||
5 | # | 5 | # |
6 | # Not all platforms are supported by Qemu. Using qemu-user therefore | 6 | # Not all platforms are supported by Qemu. Using qemu-user therefore |
7 | # involves a certain risk, which is also the reason why this feature | 7 | # involves a certain risk, which is also the reason why this feature |
8 | # is not activated by default. | 8 | # is not part of the main cmake class by default. |
9 | # | ||
10 | # One use case is the execution of cross-compiled unit tests with CTest | ||
11 | # on the build machine. If CMAKE_EXEWRAPPER_ENABLED is configured, | ||
12 | # cmake --build --target test | ||
13 | # works transparently with qemu-user. If the cmake project is developed | ||
14 | # with this use case in mind this works very nicely also out of an IDE | ||
15 | # configured to use cmake-native for cross compiling. | ||
9 | 16 | ||
10 | inherit qemu | 17 | inherit qemu cmake |
11 | 18 | ||
12 | CMAKE_EXEWRAPPER_ENABLED:class-native = "False" | 19 | DEPENDS:append:class-target = "${@' qemu-native' if bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d) else ''}" |
13 | CMAKE_EXEWRAPPER_ENABLED:class-nativesdk = "False" | ||
14 | CMAKE_EXEWRAPPER_ENABLED ?= "${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d)}" | ||
15 | DEPENDS:append = "${@' qemu-native' if d.getVar('CMAKE_EXEWRAPPER_ENABLED') == 'True' else ''}" | ||
16 | 20 | ||
17 | cmake_do_generate_toolchain_file:append:class-target() { | 21 | cmake_do_generate_toolchain_file:append:class-target() { |
18 | if [ "${CMAKE_EXEWRAPPER_ENABLED}" = "True" ]; then | 22 | if [ "${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d)}" ]; then |
19 | # Write out a qemu wrapper that will be used as exe_wrapper so that camake | 23 | # Write out a qemu wrapper that will be used as exe_wrapper so that cmake |
20 | # can run target helper binaries through that. This also allows to execute ctest. | 24 | # can run target helper binaries through that. This also allows to execute ctest. |
21 | qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_HOST}', ['${STAGING_DIR_HOST}/${libdir}','${STAGING_DIR_HOST}/${base_libdir}'])}" | 25 | qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_HOST}', ['${STAGING_DIR_HOST}/${libdir}','${STAGING_DIR_HOST}/${base_libdir}'])}" |
22 | echo "#!/bin/sh" > "${WORKDIR}/cmake-qemuwrapper" | 26 | echo "#!/bin/sh" > "${WORKDIR}/cmake-qemuwrapper" |