| 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" |