diff options
author | Nikolay Zamotaev <nzamotaev@luxoft.com> | 2020-04-30 17:52:00 +0300 |
---|---|---|
committer | Nikolay Zamotaev <nzamotaev@luxoft.com> | 2020-08-18 13:42:44 +0300 |
commit | 215458d9ec3da5beab056527477d445d2a73def3 (patch) | |
tree | a07ae1b7d10f3e0d32603e97e5d51409cd3da6f7 | |
parent | d76756454a283f537cc6374c915297f250de9f85 (diff) |
AVS device SDK integration for automotive boot2qt
This change includes AVS device SDK, fixups for the libcurl compilation
options. Alsa device settings for coexistance of alexa app and neptune
ui are included, but not tested.
Task-number: AUTOSUITE-1419
Change-Id: Ief8f855ba56e0cf8bb74f047bf1df6b003afbe97
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
7 files changed, 227 insertions, 0 deletions
diff --git a/meta-boot2qt-distro/recipes-qt/packagegroups/packagegroup-b2qt-automotive-addons.bb b/meta-boot2qt-distro/recipes-qt/packagegroups/packagegroup-b2qt-automotive-addons.bb index 884a5acf..c9fc07ce 100644 --- a/meta-boot2qt-distro/recipes-qt/packagegroups/packagegroup-b2qt-automotive-addons.bb +++ b/meta-boot2qt-distro/recipes-qt/packagegroups/packagegroup-b2qt-automotive-addons.bb @@ -43,6 +43,7 @@ RDEPENDS_${PN} += " \ gammaray \ qmllive \ qdb \ + avs-device-sdk \ " RDEPENDS_${PN} += "${@bb.utils.filter('DISTRO_FEATURES', 'qtsaferenderer', d)}" diff --git a/meta-boot2qt-distro/recipes-qt/packagegroups/packagegroup-b2qt-automotive-qt5-toolchain-target.bb b/meta-boot2qt-distro/recipes-qt/packagegroups/packagegroup-b2qt-automotive-qt5-toolchain-target.bb index efdb6e63..2b3d1162 100644 --- a/meta-boot2qt-distro/recipes-qt/packagegroups/packagegroup-b2qt-automotive-qt5-toolchain-target.bb +++ b/meta-boot2qt-distro/recipes-qt/packagegroups/packagegroup-b2qt-automotive-qt5-toolchain-target.bb @@ -40,6 +40,7 @@ RDEPENDS_${PN} += " \ libarchive-dev \ qtapplicationmanager-dev \ qtapplicationmanager-staticdev \ + avs-device-sdk \ " RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'qtsaferenderer', \ diff --git a/meta-boot2qt/recipes-alexa/avs-device-sdk/avs-device-sdk.inc b/meta-boot2qt/recipes-alexa/avs-device-sdk/avs-device-sdk.inc new file mode 100644 index 00000000..7a43c12f --- /dev/null +++ b/meta-boot2qt/recipes-alexa/avs-device-sdk/avs-device-sdk.inc @@ -0,0 +1,84 @@ +# +# Copyright (c) 2019 Amazon.com, Inc. +# Copyright (c) 2019 Luxoft Sweden AB +# +# SPDX-License-Identifier: Apache-2.0 +# + +SUMMARY = "An SDK for commercial device makers to integrate Alexa directly into connected products." +HOMEPAGE = "https://developer.amazon.com/avs/sdk" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=d92e60ee98664c54f68aa515a6169708" + +DEPENDS = "curl nghttp2 sqlite3 openssl gstreamer1.0 gstreamer1.0-plugins-base" + +RDEPENDS_${PN} += "${PN}-sampleapp" + +SRC_URI = "https://github.com/alexa/avs-device-sdk/archive/v${PV}.tar.gz" + +# Skip checksum verification +BB_STRICT_CHECKSUM = "0" + +# Default extra variables +AAC_BUILD_TYPE = "${@['RELEASE', 'DEBUG'][d.getVar('DEBUG_BUILD') == '1']}" +AAC_SENSITIVE_LOGS = "OFF" +AAC_LATENCY_LOGS = "OFF" +AAC_ENABLE_TESTS = "OFF" + +inherit pkgconfig cmake + +EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=${AAC_BUILD_TYPE} \ + -DACSDK_EMIT_SENSITIVE_LOGS=${AAC_SENSITIVE_LOGS} \ + -DACSDK_LATENCY_LOG=${AAC_LATENCY_LOGS} \ + -DGSTREAMER_MEDIA_PLAYER=ON \ + " + +PACKAGES += "${PN}-sampleapp" + +FILES_${PN}-sampleapp = "${bindir}/SampleApp" +FILES_${PN} = "${libdir}" +FILES_${PN}-dev = "${includedir}" + +# Portaudio for microphone input +PORTAUDIO_CMAKE_OPTIONS = "\ + -DPORTAUDIO=ON \ + -DPORTAUDIO_LIB_PATH=${STAGING_DIR_HOST}${libdir}/libportaudio.so \ + -DPORTAUDIO_INCLUDE_DIR=${STAGING_DIR_HOST}${includedir} \ +" + +PACKAGECONFIG[portaudio] = "${PORTAUDIO_CMAKE_OPTIONS},,portaudio-v19,portaudio-v19" + +# WakeWord: KITT.AI +KITTAT_CMAKE_OPTIONS = "\ + -DKITTAI_KEY_WORD_DETECTOR=ON \ + -DKITTAI_KEY_WORD_DETECTOR_LIB_PATH=${STAGING_DIR_HOST}${libdir}/libsnowboy-detect.a \ + -DKITTAI_KEY_WORD_DETECTOR_INCLUDE_DIR=${STAGING_DIR_HOST}${includedir} \ +" + +PACKAGECONFIG[kittai] = "${KITTAT_CMAKE_OPTIONS},,snowboy openblas," + +# WakeWord: Sensory +SENSORY_CMAKE_OPTIONS = "\ + -DSENSORY_KEY_WORD_DETECTOR=ON \ + -DSENSORY_KEY_WORD_DETECTOR_LIB_PATH=${STAGING_DIR_HOST}${libdir}/libsnsr.a \ + -DSENSORY_KEY_WORD_DETECTOR_INCLUDE_DIR=${STAGING_DIR_HOST}${includedir} \ +" +PACKAGECONFIG[sensory] = "${SENSORY_CMAKE_OPTIONS},,truly-handsfree" + +# Opus encoding (v1.11 or later) +PACKAGECONFIG[opus] = "-DOPUS=ON,,libopus" + +do_install_append() { + cp -R ${S}/ThirdParty/rapidjson/rapidjson-1.1.0/include/* ${D}${includedir}/include + install -d ${D}${libdir} + + # Copy the Mock headers from AVS SDK + mkdir -p ${D}${includedir}/AVSCommon/SDKInterfaces/test + cp -R ${S}/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/* ${D}${includedir}/AVSCommon/SDKInterfaces/test + + # Install Sample application to test Alexa Voice Service + install -d ${D}${bindir} + install -m 0755 ${B}/SampleApp/src/SampleApp ${D}${bindir} + + chrpath -d ${D}${bindir}/SampleApp +} diff --git a/meta-boot2qt/recipes-alexa/avs-device-sdk/avs-device-sdk_1.12.1.bb b/meta-boot2qt/recipes-alexa/avs-device-sdk/avs-device-sdk_1.12.1.bb new file mode 100644 index 00000000..63f4913e --- /dev/null +++ b/meta-boot2qt/recipes-alexa/avs-device-sdk/avs-device-sdk_1.12.1.bb @@ -0,0 +1,14 @@ +# +# Copyright (c) 2019 Amazon.com, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# + +require avs-device-sdk.inc + +SRC_URI[md5sum] = "ece2fda85607567dccb3163bf9311efb" +SRC_URI[sha256sum] = "fba17b343c011410584330d8e268d09f449d16d62007b1a797751721a5616368" + +# Enable OPUS by default +PACKAGECONFIG += "opus portaudio" +PACKAGECONFIG_append_intel-corei7-64 = " kittai " diff --git a/meta-boot2qt/recipes-alexa/openblas/openblas_0.3.5.bb b/meta-boot2qt/recipes-alexa/openblas/openblas_0.3.5.bb new file mode 100644 index 00000000..a21b8f00 --- /dev/null +++ b/meta-boot2qt/recipes-alexa/openblas/openblas_0.3.5.bb @@ -0,0 +1,77 @@ +# +# Copyright (c) 2016 Intel Corporation. All rights reserved. +# Copyright (c) 2019 Luxoft Sweden AB +# +# SPDX-License-Identifier: MIT +# + +DESCRIPTION = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version." +SUMMARY = "OpenBLAS : An optimized BLAS library" +AUTHOR = "Alexander Leiva <norxander@gmail.com>" +HOMEPAGE = "http://www.openblas.net/" +SECTION = "libs" +LICENSE = "BSD-3-Clause" + +DEPENDS = "make" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=5adf4792c949a00013ce25d476a2abc0" + +SRC_URI = "https://github.com/xianyi/OpenBLAS/archive/v${PV}.tar.gz" +SRC_URI[md5sum] = "579bda57f68ea6e9074bf5780e8620bb" +SRC_URI[sha256sum] = "0950c14bd77c90a6427e26210d6dab422271bc86f9fc69126725833ecdaa0e85" + +S = "${WORKDIR}/OpenBLAS-${PV}" + +def map_arch(a, d): + import re + if re.match('i.86$', a): return 'ATOM' + elif re.match('x86_64$', a): return 'ATOM' + elif re.match('aarch32$', a): return 'CORTEXA9' + elif re.match('aarch64$', a): return 'ARMV8' + elif re.match('arm$', a): return 'ARMV7' + return a + +def map_bits(a, d): + import re + if re.match('i.86$', a): return 32 + elif re.match('x86_64$', a): return 64 + elif re.match('aarch32$', a): return 32 + elif re.match('aarch64$', a): return 64 + elif re.match('arm$', a): return 32 + return 32 + +def map_extra_options(a, d): + import re + if re.match('arm$', a): return '-mfpu=neon-vfpv4 -mfloat-abi=hard' + return '' + +do_compile () { + oe_runmake HOSTCC="${BUILD_CC}" \ + CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${@map_extra_options(d.getVar('TARGET_ARCH', True), d)}" \ + PREFIX=${exec_prefix} \ + CROSS_SUFFIX=${HOST_PREFIX} \ + ONLY_CBLAS=1 BINARY='${@map_bits(d.getVar('TARGET_ARCH', True), d)}' \ + TARGET='${@map_arch(d.getVar('TARGET_ARCH', True), d)}' +} + +do_install() { + oe_runmake HOSTCC="${BUILD_CC}" \ + CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}" \ + PREFIX=${exec_prefix} \ + CROSS_SUFFIX=${HOST_PREFIX} \ + ONLY_CBLAS=1 BINARY='${@map_bits(d.getVar('TARGET_ARCH', True), d)}' \ + TARGET='${@map_arch(d.getVar('TARGET_ARCH', True), d)}' \ + DESTDIR=${D} \ + install + rm -rf ${D}${bindir} + rm -rf ${D}${libdir}/cmake + + rm -rf ${D}${libdir}/lib${PN}*.so* + rm -rf ${D}${libdir}/pkgconfig/${PN}.pc + rm -rf ${D}${libdir}/pkgconfig + + cd ${D}${libdir} + ln -s libopenblas.a libblas.a +} + +FILES_${PN}-dev = "${includedir} ${libdir}/lib${PN}.a ${libdir}/libblas.a" diff --git a/meta-boot2qt/recipes-alexa/snowboy/snowboy_1.3.0.bb b/meta-boot2qt/recipes-alexa/snowboy/snowboy_1.3.0.bb new file mode 100644 index 00000000..951e7d41 --- /dev/null +++ b/meta-boot2qt/recipes-alexa/snowboy/snowboy_1.3.0.bb @@ -0,0 +1,46 @@ +# +# Copyright (c) 2019 Amazon.com, Inc. +# Copyright (c) 2019 Luxoft Sweden AB +# +# SPDX-License-Identifier: Apache-2.0 +# + +SUMMARY = "Snowboy Hotword Detection by KITT.AI" +HOMEPAGE = "https://snowboy.kitt.ai/" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8d385adc93db3f7e5d092b82fb2c9353" + +SRC_URI = "https://github.com/Kitt-AI/snowboy/archive/v${PV}.tar.gz" +SRC_URI[md5sum] = "e16e117914f76f4a35facb16b0fcd61b" +SRC_URI[sha256sum] = "93658cc5d4d83dd7a6e954d0dc1e18d1c70b1dd8623181850c4804d3aca19e96" + +COMPATIBLE_HOST = "x86_64-.*-linux" + +INSANE_SKIP_${PN} += "already-stripped" + +def get_snowboy_arch(d): + import re + architecture = d.getVar('TARGET_ARCH') + if re.match('x86_64$', architecture): + return "ubuntu64" + elif re.match('arm$', architecture): + return "rpi" + elif re.match('aarch64$', architecture): + return "aarch64-ubuntu1604" + else: + return "ubuntu64" + +SNOWBOY_ARCH ?= "${@get_snowboy_arch(d)}" + +do_install() { + mkdir -p ${D}${libdir} + cp ${S}/lib/${SNOWBOY_ARCH}/libsnowboy-detect.a ${D}${libdir} + mkdir -p ${D}${includedir} + cp ${S}/include/snowboy-detect.h ${D}${includedir} + + install -d ${D}${datadir}/snowboy + install -m 0755 ${S}/resources/common.res ${D}${datadir}/snowboy/ + install -m 0755 ${S}/resources/alexa/alexa-avs-sample-app/alexa.umdl ${D}${datadir}/snowboy/ +} + +FILES_${PN} = "${datadir}/snowboy/alexa.umdl ${datadir}/snowboy/common.res" diff --git a/meta-boot2qt/recipes-support/curl/curl_%.bbappend b/meta-boot2qt/recipes-support/curl/curl_%.bbappend new file mode 100644 index 00000000..9fe597e8 --- /dev/null +++ b/meta-boot2qt/recipes-support/curl/curl_%.bbappend @@ -0,0 +1,4 @@ +PACKAGECONFIG_append = " nghttp2 libssh2 libidn " +PACKAGECONFIG_remove_class-native = " nghttp2 " +PACKAGECONFIG_remove_class-nativesdk = " nghttp2 libssh2 " + |