blob: d03b70917c0b26aa8211c6f0611f0088a409ec19 [file] [edit]
SUMMARY = "A high-performance, small-footprint platform that implements a subset of HTML5/CSS/JS to run applications, including the YouTube TV app"
HOMEPAGE = "https://cobalt.dev"
LICENSE = "BSD-3-Clause & Apache-2.0-with-LLVM-exception"
LIC_FILES_CHKSUM = " \
file://LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d \
file://../starboard/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
"
# Disable by default for morty
DEFAULT_PREFERENCE_morty = "-1"
require starboard_revision.inc
TOOLCHAIN = "gcc"
SRC_URI = "git://github.com/youtube/cobalt.git;protocol=https;name=cobalt;branch=23.lts.stable"
SRC_URI += "${STARBOARD_SRC_URI};protocol=${CMF_GIT_PROTOCOL};destsuffix=starboard;name=starboard;branch=master"
SRC_URI += "file://23/0001-Include-RDK-platforms.patch"
SRC_URI += "file://23/0004-Build-fix-for-ARM64.patch"
PR = "5"
SRCREV_cobalt = "23.lts.${PR}"
SRCREV_starboard = "${STARBOARD_SRCREV}"
SRCREV_FORMAT = "cobalt_starboard"
do_fetch[vardeps] += " SRCREV_FORMAT SRCREV_cobalt SRCREV_starboard"
S = "${WORKDIR}/git"
DEPENDS += "virtual/egl essos gstreamer1.0 gstreamer1.0-plugins-base"
DEPENDS += " wpeframework wpeframework-interfaces wpeframework-clientlibraries"
DEPENDS += " ninja-native bison-native openssl-native gn-native ccache-native"
DEPENDS += " python3-six-native python3-urllib3-native"
RDEPENDS_${PN} += "gstreamer1.0-plugins-base-app gstreamer1.0-plugins-base-playback"
TUNE_CCARGS_remove = "-fno-omit-frame-pointer -fno-optimize-sibling-calls"
def get_cobalt_platform(d):
target_arch = d.getVar('TARGET_ARCH', True)
if target_arch == 'aarch64':
return 'rdk-arm64'
elif "rpi" in d.getVar('MACHINEOVERRIDES', True):
return 'rdk-rpi'
elif target_arch == 'arm':
return 'rdk-arm'
else:
bb.fatal("Unsupported target architecture: {}".format(target_arch))
COBALT_PLATFORM ?= "${@get_cobalt_platform(d)}"
COBALT_BUILD_TYPE ?= "${@bb.utils.contains('DISTRO_FEATURES', 'cobalt-qa', 'qa', 'gold', d)}"
PACKAGECONFIG ?= "cryptography ${COBALT_BUILD_TYPE}"
PACKAGECONFIG_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'opencdm', 'opencdm', '', d)}"
PACKAGECONFIG_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'thunder_security_disable', '', 'securityagent', d)}"
PACKAGECONFIG[opencdm] = "rdk_enable_ocdm=true,rdk_enable_ocdm=false,,"
PACKAGECONFIG[securityagent] = "rdk_enable_securityagent=true,rdk_enable_securityagent=false,,"
PACKAGECONFIG[cryptography] = "rdk_enable_cryptography=true,rdk_enable_cryptography=false,,"
PACKAGECONFIG[qa] = ",,nodejs-native,"
PACKAGECONFIG[gold] = ""
PACKAGECONFIG[nplb] = ""
GN_ARGS_EXTRA ?= ""
GN_ARGS_EXTRA_append_arm = " rdk_arm_call_convention=\"${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hardfp', 'softfp', d)}\""
GN_ARGS_EXTRA_append = " ${PACKAGECONFIG_CONFARGS}"
inherit python3native pkgconfig breakpad-wrapper
BREAKPAD_BIN = "lib*.so*"
export PYTHONPATH="${S}"
do_unpack_extra() {
bbnote "copy starboard"
cp -ar "${WORKDIR}/starboard/src/third_party/starboard" "${S}/third_party/"
}
addtask unpack_extra after do_patch before do_configure
do_configure() {
${PYTHON} cobalt/build/gn.py -c ${COBALT_BUILD_TYPE} -p ${COBALT_PLATFORM} --overwrite_args
echo "${GN_ARGS_EXTRA}" | tr ' ' '\n' >> out/${COBALT_PLATFORM}_${COBALT_BUILD_TYPE}/args.gn
}
do_compile[progress] = "percent"
do_compile() {
export NINJA_STATUS='%p '
ninja -C out/${COBALT_PLATFORM}_${COBALT_BUILD_TYPE} cobalt
}
do_install() {
install -d ${D}${libdir}
install -m 0755 out/${COBALT_PLATFORM}_${COBALT_BUILD_TYPE}/libcobalt.so ${D}${libdir}
install -d ${D}${datadir}/content
cp -arv --no-preserve=ownership out/${COBALT_PLATFORM}_${COBALT_BUILD_TYPE}/content ${D}${datadir}/
# use system provided certs
rm -rf ${D}${datadir}/content/data/ssl/certs
mkdir -p ${D}${datadir}/content/data/ssl/
ln -s /etc/ssl/certs ${D}${datadir}/content/data/ssl/certs
}
# NPLB
do_configure_append() {
if ${@bb.utils.contains('PACKAGECONFIG', 'nplb', 'true', 'false', d)}; then
${PYTHON} cobalt/build/gn.py -c devel -p ${COBALT_PLATFORM} --overwrite_args
echo "${GN_ARGS_EXTRA}" | tr ' ' '\n' >> out/${COBALT_PLATFORM}_devel/args.gn
fi
}
do_compile_append() {
if ${@bb.utils.contains('PACKAGECONFIG', 'nplb', 'true', 'false', d)}; then
export PYTHONHTTPSVERIFY=0
ninja -C out/${COBALT_PLATFORM}_devel nplb
fi
}
do_install_append() {
if ${@bb.utils.contains('PACKAGECONFIG', 'nplb', 'true', 'false', d)}; then
install -m 0755 out/${COBALT_PLATFORM}_devel/nplb ${D}${bindir}
cp -arv --no-preserve=ownership out/${COBALT_PLATFORM}_devel/content ${D}${datadir}/
fi
}
FILES_${PN} = "${bindir}/*"
FILES_${PN} += "${libdir}/libcobalt.so"
FILES_${PN} += "${datadir}/content/*"
FILES_SOLIBSDEV = ""
INSANE_SKIP_${PN} += "dev-so"
INSANE_SKIP_${PN}-dbg += "dev-so"