blob: b64089f305427b861d1a78eb749e4e4a7a309600 [file] [edit]
DESCRIPTION = "Control Manager component"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
SECTION = "base"
DEPENDS = "sqlite3 curl rdkversion jansson glib-2.0 systemd iarmbus iarmmgrs breakpad util-linux devicesettings nopoll rfc libarchive safec-common-wrapper gperf-native xr-mq libsyswrapper"
DEPENDS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ctrlm_voice_sdk', ' xr-voice-sdk xr-timestamp', '', d)}"
DEPENDS_append = "${@bb.utils.contains('DISTRO_FEATURES_RDK', 'comcast-gperftools-heapcheck-wp', ' xr-fdc', '', d)}"
DEPENDS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'safec', ' safec', " ", d)}"
RDEPENDS_${PN}_append = " devicesettings"
PROVIDES = "ctrlm"
RPROVIDES_${PN} = "ctrlm"
inherit autotools pkgconfig pythonnative syslog-ng-config-gen
SYSLOG-NG_FILTER = "ctrlm"
SYSLOG-NG_SERVICE_ctrlm = "ctrlm-hal-rf4ce.service ctrlm-main.service"
SYSLOG-NG_DESTINATION_ctrlm = "ctrlm_log.txt"
SYSLOG-NG_LOGRATE_ctrlm = "medium"
PV = "${RDK_RELEASE}"
SRC_URI = "${CMF_GIT_ROOT}/rdk/components/generic/control;protocol=${CMF_GIT_PROTOCOL};branch=${CMF_GIT_BRANCH};name=ctrlm-main"
SRC_URI_append = " file://ctrlm-main.service"
SRC_URI_append = " file://1_rf4ce.conf"
SRC_URI_append = " file://ctrlm-hal-rf4ce.service"
SRC_URI_append = " file://restart_ctrlm.sh"
SRC_URI_append = " file://ctrlm_db_dump.sh"
SRC_URI_append = " file://ctrlm_sig_quit.sh"
RECIPEDIR := "${THISDIR}/files"
SRCREV_ctrlm-main = "${AUTOREV}"
SRCREV_FORMAT = "ctrlm-main"
S = "${WORKDIR}/git"
FILES_${PN} += "${systemd_unitdir}/system/ctrlm-main.service \
/usr/local/bin/restart_ctrlm.sh \
/usr/local/bin/ctrlm_db_dump.sh \
/usr/local/bin/ctrlm_sig_quit.sh \
"
FILES_${PN} += "${@bb.utils.contains('EXTRA_OECONF', '--enable-rf4ce', '${systemd_unitdir}/system/ctrlm-main.service.d/1_rf4ce.conf', '', d)}"
SYSTEMD_PACKAGES += " ctrlm-main"
SYSTEMD_SERVICE_ctrlm-main = "ctrlm-main.service"
SYSTEMD_SERVICE_ctrlm-main += "${@bb.utils.contains('DISTRO_FEATURES', 'ctrlm_generic', 'ctrlm-hal-rf4ce.service', '', d)}"
ENABLE_GPERFTOOLS_HEAPCHECK_WP_DISTRO = "1"
GPERFTOOLS_HEAPCHECK_CLASS := "${@bb.utils.contains('BBLAYERS', '${RDKROOT}/meta-rdk-comcast', 'comcast-gperftools-heapcheck-wp', '', d)}"
VSDK_UTILS_CLASS := "${@bb.utils.contains('DISTRO_FEATURES', 'ctrlm_voice_sdk', 'vsdk-utils', '', d)}"
inherit systemd coverity ${VSDK_UTILS_CLASS} ${GPERFTOOLS_HEAPCHECK_CLASS}
BREAKPAD_BIN = "controlMgr"
BREAKPAD_SHARED_LIBS ="libstdc++.so libffi.so libglib-2.0.so ld-2.22.so libc-2.22.so libpthread-2.22.so libgobject-2.0.so libcurl.so librdkversion.so librdkx-logger.so libbsd.so libxr-timestamp.so libxr-timer.so libxr_mq.so libxraudio-eos.so libxraudio-adpcm.so libxraudio.so libxraudio-hal.so libxrsv.so libxrsr.so libcrypto.so libssl.so libnopoll.so libjansson.so libxr-voice-sdk.so"
INCLUDE_DIRS = " \
-I=${includedir}/glib-2.0 \
-I=${libdir}/glib-2.0/include \
-I=${includedir}/gio-unix-2.0 \
-I=${includedir}/rdk/iarmbus \
-I=${includedir}/rdk/iarmmgrs-hal \
-I=${includedir}/wdmp-c \
-I=${includedir}/rdk/ds \
-I=${includedir}/rdk/ds-rpc \
-I=${includedir}/rdk/ds-hal \
"
CFLAGS_append = " -std=c11 -fPIC -D_REENTRANT -rdynamic -Wall -Werror ${INCLUDE_DIRS}"
CXXFLAGS_append = " -std=c++11 -fPIC -D_REENTRANT -rdynamic -Wall -Werror ${INCLUDE_DIRS}"
CXXFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES_RDK', 'comcast-gperftools-heapcheck-wp', ' -DFDC_ENABLED', '', d)}"
CXXFLAGS_append = " -DSYSTEMD_NOTIFY"
CXXFLAGS_append = " -DXR15_704"
CXXFLAGS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'safec', ' `pkg-config --cflags libsafec`', '-fPIC', d)}"
CXXFLAGS_append_client = " ${@bb.utils.contains('DISTRO_FEATURES', 'safec', ' `pkg-config --cflags libsafec`', '-fPIC', d)}"
CXXFLAGS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'safec', '', ' -DSAFEC_DUMMY_API', d)}"
#CXXFLAGS_append = " -DCTRLM_ASSERT_ON_WRONG_THREAD"
#CXXFLAGS_append = " -DMEM_DEBUG"
#CXXFLAGS_append = " -DANSI_CODES_DISABLED"
LDFLAGS=" -lrt -lpthread -lstdc++ -lsqlite3 -lcurl -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lz -lpthread -ljansson -ldbus-1 -luuid -lIARMBus -lds -lnopoll -lssl -lcrypto -lsystemd -ldshalcli -lrfcapi -lrdkversion -lxr_mq -lsecure_wrapper"
# Default to STB Platform
PLATFORM ??= "STB"
EXTRA_OECONF_append = "${@bb.utils.contains('PLATFORM', 'STB', ' --enable-platform=stb', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('PLATFORM', 'TV', ' --enable-platform=tv', '', d)}"
# Default to HDMI / CEC discovery for IRDB
# Options: NONE / HDMI / CEC / ALL
IRDB_DISCOVERY_DEFAULT = "ALL"
IRDB_DISCOVERY ??= "${IRDB_DISCOVERY_DEFAULT}"
CXXFLAGS_append = " ${@bb.utils.contains('IRDB_DISCOVERY', 'ALL', ' -DIRDB_HDMI_DISCOVERY -DIRDB_CEC_DISCOVERY', '', d)}"
CXXFLAGS_append = " ${@bb.utils.contains('IRDB_DISCOVERY', 'HDMI', ' -DIRDB_HDMI_DISCOVERY', '', d)}"
CXXFLAGS_append = " ${@bb.utils.contains('IRDB_DISCOVERY', 'CEC', ' -DIRDB_CEC_DISCOVERY', '', d)}"
# Thunder Dependency
THUNDER ??= "false"
CXXFLAGS_append = "${@bb.utils.contains('THUNDER', 'true', ' -I=${includedir}/WPEFramework/ -I=${includedir}/WPEFramework/core/', '', d)}"
LDFLAGS_append = "${@bb.utils.contains('THUNDER', 'true', ' -lWPEFrameworkCore -lWPEFrameworkPlugins', '', d)}"
LDFLAGS_append = "${@bb.utils.contains('THUNDER', 'true', bb.utils.contains('DISTRO_FEATURES', 'wpe_r4', " -lWPEFrameworkCOM -lWPEFrameworkWebSocket ", " -lWPEFrameworkProtocols -lWPEFrameworkTracing", d), " ", d)}"
DEPENDS_append = "${@bb.utils.contains('THUNDER', 'true', ' wpeframework', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('THUNDER', 'true', ' --enable-thunder', '', d)}"
THUNDER_SECURITY ??= "true"
EXTRA_OECONF_append = "${@bb.utils.contains('THUNDER_SECURITY', 'true', ' --enable-thunder-security', '', d)}"
# Memory Lock Implementation
MEMORY_LOCK ??= "false"
CXXFLAGS_append = "${@bb.utils.contains('MEMORY_LOCK', 'true', ' -DMEMORY_LOCK', '', d)}"
LDFLAGS_append = "${@bb.utils.contains('MEMORY_LOCK', 'true', ' -lclnl', '', d)}"
DEPENDS_append = "${@bb.utils.contains('MEMORY_LOCK', 'true', ' clnl', '', d)}"
LDFLAGS_append =" -lxr-voice-sdk -lxrsr -lxrsv -lxraudio-hal -lrdkx-logger -lxr-timestamp"
LDFLAGS_append ="${@bb.utils.contains('DISTRO_FEATURES_RDK', 'comcast-gperftools-heapcheck-wp', ' -lxr-fdc', '', d)}"
LDFLAGS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'safec', ' `pkg-config --libs libsafec`', '', d)}"
# Telemetry Support
TELEMETRY_SUPPORT ??= "false"
DEPENDS_append = "${@bb.utils.contains('TELEMETRY_SUPPORT', 'true', ' telemetry', '', d)}"
LDFLAGS_append = "${@bb.utils.contains('TELEMETRY_SUPPORT', 'true', ' -ltelemetry_msgsender', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('TELEMETRY_SUPPORT', 'true', ' --enable-telemetry-support', '', d)}"
# BLE support
RDEPENDS_${PN}_append = "${@bb.utils.contains('MACHINE_FEATURES', 'ble-rcu', ' asbluetoothrcu', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('MACHINE_FEATURES', 'ble-rcu', ' --enable-ble', '', d)}"
#100 byte ADPCM coming from BLE remote needs to be decoded to PCM before sending to endpoint
CXXFLAGS_append = "${@bb.utils.contains('MACHINE_FEATURES', 'ble-rcu', ' -DAUDIO_DECODE', '', d)}"
# libevdev is needed for BLE enabled platforms or if the IR input device needs to be found by the name instead of the path
IR_INPUT_DEVICE_BY_NAME ??= "false"
LIBEVDEV_DEPENDENCY = "${@bb.utils.contains('MACHINE_FEATURES', 'ble-rcu' ,'true', bb.utils.contains('IR_INPUT_DEVICE_BY_NAME', 'true' ,'true', 'false', d), d)}"
DEPENDS_append = "${@bb.utils.contains('LIBEVDEV_DEPENDENCY', 'true', ' libevdev', '', d)}"
LDFLAGS_append = "${@bb.utils.contains('LIBEVDEV_DEPENDENCY', 'true', ' -levdev', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('LIBEVDEV_DEPENDENCY', 'true', ' --enable-ir-input-device-by-name', '', d)}"
CTRLM_GENERIC = "${@bb.utils.contains('DISTRO_FEATURES', 'ctrlm_generic', 'true', 'false', d)}"
# Advanced Secure Binding Support
ASB ??= "false"
EXTRA_OECONF_append = "${@bb.utils.contains('ASB', 'true', ' --enable-asb', '', d)}"
# Authorization Support
AUTH ??= "false"
AUTH_RECEIVER_ID ??= "false"
AUTH_DEVICE_ID ??= "false"
AUTH_ACCOUNT_ID ??= "false"
AUTH_PARTNER_ID ??= "false"
AUTH_EXPERIENCE ??= "false"
AUTH_SAT_TOKEN ??= "false"
EXTRA_OECONF_append = "${@bb.utils.contains('AUTH', 'true', ' --enable-auth', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('AUTH_RECEIVER_ID', 'true', ' --enable-auth-receiver-id', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('AUTH_DEVICE_ID', 'true', ' --enable-auth-device-id', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('AUTH_ACCOUNT_ID', 'true', ' --enable-auth-account-id', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('AUTH_PARTNER_ID', 'true', ' --enable-auth-partner-id', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('AUTH_EXPERIENCE', 'true', ' --enable-auth-experience', '', d)}"
EXTRA_OECONF_append = "${@bb.utils.contains('AUTH_SAT_TOKEN', 'true', ' --enable-auth-sat-token', '', d)}"
IRDB ??= "false"
EXTRA_OECONF_append = "${@bb.utils.contains('IRDB', 'true', ' --enable-irdb', '', d)}"
RF4CE_PACKET_ANALYSIS ??= "false"
EXTRA_OECONF_append = "${@bb.utils.contains('RF4CE_PACKET_ANALYSIS', 'true', ' --enable-rf4ce-packet-analysis', '', d)}"
VOICE_NEXTGEN_MAC ??= "false"
EXTRA_OECONF_append = "${@bb.utils.contains('VOICE_NEXTGEN_MAC', 'true', ' --enable-voice-nextgen-mac', '', d)}"
VOICE_KEYWORD_BEEP ??= "false"
EXTRA_OECONF_append = "${@bb.utils.contains('VOICE_KEYWORD_BEEP', 'true', ' --enable-voice-keyword-beep', '', d)}"
XLOG_MODULE_NAME="CTRLM"
LOGGER:="${@bb.utils.contains('DISTRO_FEATURES', 'ctrlm_voice_sdk', 'rdkx-logger', '', d)}"
inherit ${LOGGER}
# if/when ctrlm only uses vsdk, remove the duplicated script files in the repository and always use VSDK_UTILS
VSDK_UTILS_JSON_TO_HEADER ?= ""
VSDK_UTILS_JSON_COMBINE ?= ""
SUPPORT_VOICE_DEST_HTTP ?= "false"
SUPPORT_VOICE_DEST_ALSA ?= "false"
export CTRLM_UTILS_JSON_TO_HEADER = "${@bb.utils.contains('DISTRO_FEATURES', 'ctrlm_voice_sdk', '${VSDK_UTILS_JSON_TO_HEADER}', '${S}/scripts/json_to_header.py', d)}"
export CTRLM_UTILS_JSON_COMBINE = "${@bb.utils.contains('DISTRO_FEATURES', 'ctrlm_voice_sdk', '${VSDK_UTILS_JSON_COMBINE}', '${S}/scripts/json_combine.py', d)}"
export STAGING_BINDIR_NATIVE
CTRLM_CONFIG_VSDK = "${PKG_CONFIG_SYSROOT_DIR}/usr/include/xrsr_config.json"
CTRLM_CONFIG_CPC = "${PKG_CONFIG_SYSROOT_DIR}/usr/include/ctrlm_cpc_config.json"
CTRLM_CONFIG_OEM_ADD = "${S}/../ctrlm_config_oem.add.json"
CTRLM_CONFIG_OEM_SUB = "${S}/../ctrlm_config_oem.sub.json"
CTRLM_CONFIG_CPC_ADD = "${S}/../ctrlm_config_cpc.add.json"
CTRLM_CONFIG_CPC_SUB = "${S}/../ctrlm_config_cpc.sub.json"
EXTRA_OECONF_append = " CTRLM_CONFIG_JSON_VSDK=${CTRLM_CONFIG_VSDK} CTRLM_CONFIG_JSON_CPC=${CTRLM_CONFIG_CPC} CTRLM_CONFIG_JSON_OEM_SUB=${CTRLM_CONFIG_OEM_SUB} CTRLM_CONFIG_JSON_OEM_ADD=${CTRLM_CONFIG_OEM_ADD} CTRLM_CONFIG_JSON_CPC_SUB=${CTRLM_CONFIG_CPC_SUB} CTRLM_CONFIG_JSON_CPC_ADD=${CTRLM_CONFIG_CPC_ADD}"
EXTRA_OECONF_append = "${@ ' --enable-xrsr_http' if (d.getVar('SUPPORT_VOICE_DEST_HTTP', expand=False) == "true") else ''}"
EXTRA_OECONF_append = "${@ ' --enable-xrsr_sdt' if (d.getVar('SUPPORT_VOICE_DEST_ALSA', expand=False) == "true") else ''}"
DEPENDS_append = "${@ ' virtual-mic' if (d.getVar('SUPPORT_VOICE_DEST_ALSA', expand=False) == "true") else ''}"
EXTRA_OECONF_append = " GIT_BRANCH=${CMF_GIT_BRANCH}"
EXTRA_OECONF_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ctrlm_mic_tap', ' --enable-mic_tap', '', d)}"
do_install_append() {
install -d ${D}${systemd_unitdir}/system
install -m 0644 ${RECIPEDIR}/ctrlm-main.service ${D}${systemd_unitdir}/system/
if ${@bb.utils.contains('EXTRA_OECONF', '--enable-rf4ce', 'true', 'false', d)}; then
install -d ${D}${systemd_unitdir}/system/ctrlm-main.service.d/
install -m 0644 ${RECIPEDIR}/1_rf4ce.conf ${D}${systemd_unitdir}/system/ctrlm-main.service.d/
fi
if [ "${CTRLM_GENERIC}" = "true" ]; then
install -m 0644 ${RECIPEDIR}/ctrlm-hal-rf4ce.service ${D}${systemd_unitdir}/system/
fi
install -d ${D}/usr/local/bin
install -m 0744 ${RECIPEDIR}/restart_ctrlm.sh ${D}/usr/local/bin
install -m 0744 ${RECIPEDIR}/ctrlm_db_dump.sh ${D}/usr/local/bin
install -m 0744 ${RECIPEDIR}/ctrlm_sig_quit.sh ${D}/usr/local/bin
}
addtask clean_oem_config after do_unpack before do_configure
do_clean_oem_config() {
rm -f ${CTRLM_CONFIG_CPC_ADD} ${CTRLM_CONFIG_CPC_SUB} ${CTRLM_CONFIG_OEM_ADD} ${CTRLM_CONFIG_OEM_SUB}
}