subtree updates

poky: 3e5faccfaf..95c802b0be:
  Alexander Kanavin (1):
        sdk-manual: correct the bitbake target for a unified sysroot build

  Michael Opdenacker (6):
        ref-manual/variables.rst: clarify sentence
        test-manual: fix typo in machine name
        ref-manual: faq.rst: reorganize into subsections, contents at top
        migration-guides: use contributor real name
        manuals: fix misc typos
        migration-guides: use contributor real name

  Paul Eggleton (31):
        migration-general: add section on using buildhistory
        ref-manual: add DISABLE_STATIC
        ref-manual: expand documentation on image-buildinfo class
        ref-manual: add WATCHDOG_TIMEOUT to variable glossary
        ref-manual: correct default for BUILDHISTORY_COMMIT
        ref-manual: document new github-releases class
        ref-manual: add a note to ssh-server-dropbear feature
        ref-manual: update buildpaths QA check documentation
        ref-manual: add UBOOT_MKIMAGE_KERNEL_TYPE
        ref-manual: add DEV_PKG_DEPENDENCY
        ref-manual: add SDK_TOOLCHAIN_LANGS
        ref-manual: add pypi class
        ref-manual: update pypi documentation for CVE_PRODUCT default in 4.1
        ref-manual: add CVE_CHECK_SHOW_WARNINGS
        ref-manual: add FIT_PAD_ALG
        ref-manual: add CVE_DB_UPDATE_INTERVAL
        ref-manual: add KERNEL_DEPLOY_DEPEND
        ref-manual: add MOUNT_BASE variable
        ref-manual: remove reference to testimage-auto class
        Update documentation for classes split
        ref-manual: complementary package installation recommends
        ref-manual: remove reference to largefile in DISTRO_FEATURES
        ref-manual: add missing features
        ref-manual: add serial-autologin-root to IMAGE_FEATURES documentation
        ref-manual: add previous overlayfs-etc variables
        ref-manual: add OVERLAYFS_ETC_EXPOSE_LOWER
        ref-manual: add WIRELESS_DAEMON
        ref-manual: add section for create-spdx class
        ref-manual: add overlayfs class variables
        ref-manual: add OVERLAYFS_QA_SKIP
        Add 4.1 migration guide & release notes

  Ross Burton (2):
        migration-guides: add known issues for 4.1
        migration-guides/release-notes-4.1.rst: add more known issues

  Takayasu Ito (1):
        release-notes-4.1.rst remove bitbake-layers subcommand argument

meta-arm: 13199c55c0..14c7e5b336:
  Jon Mason (1):
        CI: track langdale branch

  Mohamed Omar Asaker (1):
        arm-bsp/u-boot: corstone1000: support 32bit ffa direct messaging

  Ross Burton (3):
        arm-bsp: remove TC0
        arm-bsp/scp-firmware: remove TC0 patches
        arm/fvp-tc0: remove Total Compute 2020 FVP

  Rui Miguel Silva (2):
        arm-bsp/optee: add log handler
        arm-bsp/trusted-services: support for libmetal and openamp

  Vishnu Banavath (1):
        arm-bsp/linux: add kernel file search path for N1SDP

meta-openembedded: 6529e5f963..8073ec2275:
  Alex Kiernan (4):
        conntrack-tools: Upgrade 1.4.6 -> 1.4.7
        conntrack-tools: Add PACKAGECONFIGs for build options
        conntrack-tools: Use canonical shell spacing
        uriparser: Upgrade 0.9.6 -> 0.9.7

  Andreas Müller (1):
        onboard: remove

  Changqing Li (1):
        redis: upgrade 7.0.4 to 7.0.5

  Fabio Estevam (2):
        remmina: Update to 1.4.27
        crucible: Add recipe

  Khem Raj (1):
        grpc: Update to 1.50.x release

  Leon Anavi (2):
        python3-imageio: Upgrade 2.22.1 -> 2.22.2
        python3-distro: Upgrade 1.7.0 -> 1.8.0

  Markus Volk (2):
        pipewire: upgrade 0.3.57 -> 0.3.59
        wireplumber: upgrade 0.4.11 -> 0.4.12

  Peter Kjellerstedt (1):
        v4l-utils: Support building without NLS

  Sebastian Suesens (2):
        md4c: added md4c lib
        double-conversion: added double-conversion lib

  Sui Chen (1):
        Add recipe for Perfetto

  Thomas Perrot (1):
        xfce4-settings: upgrade 4.16.2 -> 4.16.3

  Ulysse Manceron (1):
        abseil-cpp: Upgrade to head on 2022-10-14

  Wang Mingyu (19):
        broadcom-bt-firmware: upgrade
        cppzmq: upgrade 4.8.1 -> 4.9.0
        ctags: upgrade 5.9.20221002.0 -> 5.9.20221009.0
        debootstrap: upgrade 1.0.127 -> 1.0.128
        freerdp: upgrade 2.8.0 -> 2.8.1
        gst-editing-services: upgrade 1.20.3 -> 1.20.4
        libwacom: upgrade 2.4.0 -> 2.5.0
        nbdkit: upgrade 1.33.1 -> 1.33.2
        xfstests: upgrade 2022.09.25 -> 2022.10.09
        blueman: upgrade 2.3.2 -> 2.3.4
        cli11: upgrade 2.2.0 -> 2.3.0
        tesseract: upgrade 4.1.3 -> 5.2.0
        python3-absl: upgrade 1.2.0 -> 1.3.0
        python3-gevent: upgrade 22.8.0 -> 22.10.1
        python3-google-api-core: upgrade 2.10.1 -> 2.10.2
        python3-google-api-python-client: upgrade 2.62.0 -> 2.64.0
        python3-google-auth: upgrade 2.11.1 -> 2.12.0
        python3-pymodbus: upgrade 2.5.3 -> 3.0.0
        python3-pywbem: upgrade 1.4.1 -> 1.5.0

  homalozoa (1):
        Add condition for libusbgx-examples

  zhengrq.fnst (5):
        python3-stevedore: upgrade 4.0.0 -> 4.0.1
        yelp: upgrade 42.1 -> 42.2
        tio: upgrade 2.0 -> 2.1
        python3-zopeinterface: upgrade 5.4.0 -> 5.5.0
        unbound: upgrade 1.16.3 -> 1.17.0

meta-raspberrypi: fc5f80a47e..722c51647c:
  Oliver Lang (1):
        rpi-base.inc: handle empty/undefined KERNEL_DEVICETREE
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I555ec2b7aca80e0511bf112acd0a045de17fe91b
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/abseil-ppc-fixes.patch b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/abseil-ppc-fixes.patch
index ef3f50d..9b40825 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/abseil-ppc-fixes.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/abseil-ppc-fixes.patch
@@ -20,7 +20,7 @@
  #ifdef __GLIBC__
  #include <sys/platform/ppc.h>
  #elif defined(__FreeBSD__)
-@@ -53,7 +53,7 @@ double UnscaledCycleClock::Frequency() {
+@@ -58,7 +58,7 @@ double UnscaledCycleClock::Frequency() {
    return base_internal::NominalCPUFrequency();
  }
 
@@ -29,9 +29,9 @@
 
  int64_t UnscaledCycleClock::Now() {
  #ifdef __GLIBC__
---- a/absl/base/internal/unscaledcycleclock.h
-+++ b/absl/base/internal/unscaledcycleclock.h
-@@ -46,7 +46,8 @@
+--- a/absl/base/internal/unscaledcycleclock_config.h
++++ b/absl/base/internal/unscaledcycleclock_config.h
+@@ -21,7 +21,8 @@
 
  // The following platforms have an implementation of a hardware counter.
  #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
index af28da5..9f8c48c 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
@@ -7,9 +7,9 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
 
-PV = "20220623.1"
-SRCREV = "8c0b94e793a66495e0b1f34a5eb26bd7dc672db0"
-BRANCH = "lts_2022_06_23"
+PV = "20221014.0"
+SRCREV = "5fa65f28e46e86c44966a1ca8a727a329d9c1ff8"
+BRANCH = "master"
 SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
            file://0001-absl-always-use-asm-sgidefs.h.patch             \
            file://0002-Remove-maes-option-from-cross-compilation.patch \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20221002.0.bb b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20221009.0.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20221002.0.bb
rename to meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20221009.0.bb
index de9e6db..5564a9b 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20221002.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20221009.0.bb
@@ -14,7 +14,7 @@
 
 inherit autotools-brokensep pkgconfig manpages
 
-SRCREV = "132379f59e223696f2382a84c2e12b6e7860a7ac"
+SRCREV = "5d506a1a3b6850f05de5e785c5d14cfd6f9b1620"
 SRC_URI = "git://github.com/universal-ctags/ctags;branch=master;protocol=https"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.127.bb b/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.128.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.127.bb
rename to meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.128.bb
index 5e0a488..4d13aa6 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.127.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.128.bb
@@ -11,7 +11,7 @@
     file://0001-do-not-hardcode-the-full-path-of-dpkg.patch \
 "
 
-SRC_URI[sha256sum] = "45887cf0582e6d16598e50713278d16b2272d02bdd117a9876e98277300dabd4"
+SRC_URI[sha256sum] = "09e7f8795fee894b77994213ee3a588e9d8f96ddf5f93afdec91e9a137aa7866"
 
 S = "${WORKDIR}/debootstrap"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.45.2.bb b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.50.0.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.45.2.bb
rename to meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.50.0.bb
index c2f952f..74ec3a8 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.45.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.50.0.bb
@@ -3,8 +3,8 @@
 (C++, Node.js, Python, Ruby, Objective-C, PHP, C#)"
 HOMEPAGE = "https://github.com/grpc/grpc"
 SECTION = "libs"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6e4cf218112648d22420a84281b68b88"
+LICENSE = "Apache-2.0 & BSD-3-Clause & MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=731e401b36f8077ae0c134b59be5c906"
 
 DEPENDS = "c-ares protobuf protobuf-native protobuf-c protobuf-c-native openssl libnsl2 abseil-cpp re2"
 DEPENDS:append:class-target = " googletest grpc-native "
@@ -20,9 +20,9 @@
 # RDEPENDS:${PN}-dev += "${PN}-compiler"
 
 S = "${WORKDIR}/git"
-SRCREV_grpc = "b39ffcc425ea990a537f98ec6fe6a1dcb90470d7"
-BRANCH = "v1.45.x"
-SRC_URI = "git://github.com/grpc/grpc.git;protocol=https;name=grpc;branch=${BRANCH} \
+SRCREV_grpc = "91091e3668144de9c6aa392f496bb7639f7025a7"
+BRANCH = "v1.50.x"
+SRC_URI = "gitsm://github.com/grpc/grpc.git;protocol=https;name=grpc;branch=${BRANCH} \
            file://0001-Revert-Changed-GRPCPP_ABSEIL_SYNC-to-GPR_ABSEIL_SYNC.patch \
            file://0001-cmake-add-separate-export-for-plugin-targets.patch \
            file://0001-cmake-Link-with-libatomic-on-rv32-rv64.patch \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/gst-editing-services/gst-editing-services_1.20.3.bb b/meta-openembedded/meta-oe/recipes-devtools/gst-editing-services/gst-editing-services_1.20.4.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-devtools/gst-editing-services/gst-editing-services_1.20.3.bb
rename to meta-openembedded/meta-oe/recipes-devtools/gst-editing-services/gst-editing-services_1.20.4.bb
index d14869b..37f7746 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/gst-editing-services/gst-editing-services_1.20.3.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/gst-editing-services/gst-editing-services_1.20.4.bb
@@ -18,7 +18,7 @@
 EXTRA_OEMESON = "-Dvalidate=disabled"
 
 SRC_URI = "http://gstreamer.freedesktop.org/src/gst-editing-services/gst-editing-services-${PV}.tar.xz"
-SRC_URI[sha256sum] = "5fd896de69fbe24421eb6b0ff8d2f8b4c3cba3f3025ceacd302172f39a8abaa2"
+SRC_URI[sha256sum] = "aa03e983af5d79c1befffe3575b034e60960619a96bf877447cb73c28016fc41"
 
 PACKAGES += "gst-validate-launcher libges"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perfetto/files/0001-Remove-check_build_deps-build-steps.patch b/meta-openembedded/meta-oe/recipes-devtools/perfetto/files/0001-Remove-check_build_deps-build-steps.patch
new file mode 100644
index 0000000..28fa983
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/perfetto/files/0001-Remove-check_build_deps-build-steps.patch
@@ -0,0 +1,71 @@
+From 3b7091243ec03054ca8800b51b85a1c09e7e3075 Mon Sep 17 00:00:00 2001
+From: Sui Chen <suichen6@gmail.com>
+Date: Mon, 13 Jun 2022 17:46:49 +0000
+Subject: [PATCH] Remove "check_build_deps" build steps
+
+When building with Bitbake, we want Bitbake to manage our dependencies,
+so we remove the "check_build_deps" steps from Perfetto.
+
+Also setting "is_cross_compiling" to true, so that the host-side tools
+(such as protoc) will always be generated using the native toolchain,
+rather than the Bitbake-generated one.
+
+Signed-off-by: Sui Chen <suichen6@gmail.com>
+---
+ gn/BUILD.gn                  |  1 -
+ gn/standalone/BUILD.gn       | 12 ++++++------
+ gn/standalone/BUILDCONFIG.gn |  5 +++--
+ 3 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/gn/BUILD.gn b/gn/BUILD.gn
+index 8a7ca72a8..e4a2d39f0 100644
+--- a/gn/BUILD.gn
++++ b/gn/BUILD.gn
+@@ -111,7 +111,6 @@ group("default_deps") {
+   deps = [ ":gen_buildflags" ]
+   if (perfetto_build_standalone) {
+     public_deps = [
+-      "//gn/standalone:check_build_deps",
+       "//gn/standalone/libc++:deps",
+       "//gn/standalone/sanitizers:deps",
+     ]
+diff --git a/gn/standalone/BUILD.gn b/gn/standalone/BUILD.gn
+index 582e9b867..9c77ac64c 100644
+--- a/gn/standalone/BUILD.gn
++++ b/gn/standalone/BUILD.gn
+@@ -441,10 +441,10 @@ config("android_liblog") {
+ }
+ 
+ # Checks that tools/install-build-deps has been run since it last changed.
+-perfetto_check_build_deps("check_build_deps") {
+-  args = []
+-}
++#perfetto_check_build_deps("check_build_deps") {
++#  args = []
++#}
+ 
+-perfetto_check_build_deps("check_build_deps_android") {
+-  args = [ "--android" ]
+-}
++#perfetto_check_build_deps("check_build_deps_android") {
++#  args = [ "--android" ]
++#}
+diff --git a/gn/standalone/BUILDCONFIG.gn b/gn/standalone/BUILDCONFIG.gn
+index 6f32686c1..c041989b0 100644
+--- a/gn/standalone/BUILDCONFIG.gn
++++ b/gn/standalone/BUILDCONFIG.gn
+@@ -59,8 +59,9 @@ declare_args() {
+   # the ossfuzz sanitizer overrides this to true. In that config the
+   # host/target cpu and arch are identical, but we want to build only the
+   # targets with the sanitizer/fuzzer flags
+-  is_cross_compiling =
+-      target_cpu != host_cpu || target_os != host_os || target_triplet != ""
++
++  # for Bitbake build
++  is_cross_compiling = true
+ }
+ default_configs = [
+   "//gn/standalone:debug_symbols",
+-- 
+2.37.1
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perfetto/perfetto.bb b/meta-openembedded/meta-oe/recipes-devtools/perfetto/perfetto.bb
new file mode 100644
index 0000000..143445c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/perfetto/perfetto.bb
@@ -0,0 +1,151 @@
+LICENSE = "Apache-2.0 & BSD-3-Clause & MIT & Zlib"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f87516e0b698007e9e75a1fe1012b390 \
+                    file://buildtools/libcxx/LICENSE.TXT;md5=55d89dd7eec8d3b4204b680e27da3953 \
+                    file://buildtools/libcxx/utils/google-benchmark/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+                    file://buildtools/libcxxabi/LICENSE.TXT;md5=7b9334635b542c56868400a46b272b1e \
+                    file://buildtools/libunwind/LICENSE.TXT;md5=f66970035d12f196030658b11725e1a1 \
+                    file://buildtools/protobuf/LICENSE;md5=37b5762e07f0af8c74ce80a8bda4266b \
+                    file://buildtools/zlib/LICENSE;md5=f09575dbfb09420642318b413159496f \
+                    file://debian/copyright;md5=4e08364c82141f181de69d0a2b89d612 \
+                    file://python/LICENSE;md5=c602a632c34ade9c78a976734077bce7"
+
+SRC_URI = "git://github.com/google/perfetto.git;branch=master;protocol=https;name=perfetto \
+           git://github.com/protocolbuffers/protobuf.git;branch=3.9.x;protocol=https;destsuffix=git/buildtools/protobuf;name=protobuf \
+           git://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git;protocol=https;destsuffix=git/buildtools/libcxx;branch=main;name=libcxx \
+           git://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git;protocol=https;destsuffix=git/buildtools/libcxxabi;branch=main;name=libcxxabi \
+           git://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git;protocol=https;destsuffix=git/buildtools/libunwind;branch=main;name=libunwind \
+           git://android.googlesource.com/platform/external/zlib.git;branch=master;protocol=https;destsuffix=git/buildtools/zlib;name=zlib \
+           https://storage.googleapis.com/perfetto/gn-linux64-1968-0725d782;subdir=git/buildtools/;name=gn \
+           file://0001-Remove-check_build_deps-build-steps.patch "
+
+SRCREV_perfetto = "5bd3f582c075d0d026c5fe0b5e291d34dee0d976"
+SRCREV_protobuf = "6a59a2ad1f61d9696092f79b6d74368b4d7970a3"
+SRCREV_libcxx = "d9040c75cfea5928c804ab7c235fed06a63f743a"
+SRCREV_libcxxabi = "196ba1aaa8ac285d94f4ea8d9836390a45360533"
+SRCREV_libunwind = "d999d54f4bca789543a2eb6c995af2d9b5a1f3ed"
+SRCREV_zlib = "5c85a2da4c13eda07f69d81a1579a5afddd35f59"
+SRC_URI[gn.sha256sum] = "f706aaa0676e3e22f5fc9ca482295d7caee8535d1869f99efa2358177b64f5cd"
+
+DEPENDS += " ninja-native"
+
+COMPATIBLE_HOST = "(i.86|x86_64|aarch64|arm).*-linux*"
+
+FILES:${PN}:append = " \
+  ${bindir}/tracebox \
+  "
+
+S = "${WORKDIR}/git"
+B = "${WORKDIR}/build"
+
+# Run the GN (Generate Ninja) script, and replace the compiler flags where applicable
+do_configure () {
+    # Configuration needs to be done from the source directory
+    cd ${S}
+    # Rename a few build tools if they have not been renamed
+    cd buildtools
+    x="gn-linux64-1968-0725d782"
+    [ -f $x ] && mkdir linux64 && mv $x linux64/gn
+    chmod +x linux64/gn
+    cd ..
+
+    CC_BIN=`echo $CC | awk '{print $1}'`
+    CXX_BIN=`echo $CXX | awk '{print $1}'`
+    STRIP_BIN=`echo $STRIP | awk '{print $1}'`
+
+    ARGS="is_debug=false "  # Tell gn to use release mode
+
+    if [ -z `echo ${TOOLCHAIN} | grep clang` ]; then
+        ARGS=$ARGS" is_clang=false"
+    else
+        ARGS=$ARGS" is_clang=true"
+    fi
+    
+    # Architecture parameter accepted by Perfetto
+    arch=${TARGET_ARCH}
+    if [ $arch = "i686" ]; then
+        arch="x86"
+    elif [ $arch = "x86_64" ]; then
+        arch="x64"
+    elif [ $arch = "aarch64" ]; then
+        arch="arm64"
+    fi
+    
+    # For ARM32 with hardware floating point using clang and musl, we need to
+    # specify -mfloat-abi=hard to make the ABI settings of the linker and the
+    # compiler match. The linker would use hardware float ABI. The compiler does
+    # not. As a result we need to force the compiler to do so by adding
+    # -mfloat-abi=hard to compilation flags.
+    FLOAT_ABI=""
+    if [[ "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'true', 'false', d)}" == "true" ]]; then
+      FLOAT_ABI="-mfloat-abi=hard"
+    fi
+
+    ARGS=$ARGS" target_os=\"linux\""
+    ARGS=$ARGS" target_cpu=\"$arch\""
+    ARGS=$ARGS" target_cc=\"$CC_BIN ${FLOAT_ABI}\""
+    ARGS=$ARGS" target_cxx=\"$CXX_BIN -std=c++11 ${FLOAT_ABI}\""
+    ARGS=$ARGS" target_strip=\"$STRIP_BIN\"" #
+    ARGS=$ARGS" target_sysroot=\"${RECIPE_SYSROOT}\""
+    ARGS=$ARGS" target_linker=\"$CC_BIN ${FLOAT_ABI} ${LDFLAGS}\""
+    ARGS=$ARGS" target_ar=\"$AR\""
+    ARGS="'$ARGS'"
+    cmd="tools/gn gen --args=$ARGS ${B}"
+
+    echo $cmd
+    # Use eval, not just call $cmd, due to escaping of single quotation marks
+    eval $cmd
+
+    cd ${B}
+    # Eliminate a few incompatible build flags
+    REPLACES="s/-Wl,--icf=all//g"
+    REPLACES=$REPLACES";s/-Werror//g"
+    REPLACES=$REPLACES";s/-mfpu=neon//g"
+    REPLACES=$REPLACES";s/-fcolor-diagnostics//g"
+    REPLACES=$REPLACES";s/=format-security//g"
+    REPLACES=$REPLACES";s/-fdiagnostics-show-template-tree//g"
+    REPLACES=$REPLACES";s/-D_FORTIFY_SOURCE=2//g"
+    REPLACES=$REPLACES";s/-fuse-ld=\S*//g"
+
+    find . -name "*.ninja" | xargs sed $REPLACES -i
+
+    # If using the clang toolchain: use the clang host-side binaries built by Bitbake
+    if [ "${TOOLCHAIN}" = "clang" ]; then
+        BB_CLANGXX="${BUILD_CXX} ${BUILD_LDFLAGS} ${FLOAT_ABI}"
+        BB_CLANG="${BUILD_CC} ${FLOAT_ABI}"
+        BB_LLVM_OBJCOPY="${RECIPE_SYSROOT_NATIVE}/usr/bin/llvm-objcopy"
+        
+        HOST_CLANGXX="${STAGING_DIR_NATIVE}/usr/bin/clang++ -stdlib=libc++ -rtlib=libgcc -unwindlib=libgcc ${FLOAT_ABI}"
+        HOST_CLANG="${STAGING_DIR_NATIVE}/usr/bin/clang ${FLOAT_ABI}"
+        HOST_LLVM_OBJCOPY="${STAGING_DIR_NATIVE}/usr/bin/llvm-objcopy"
+
+        cd gcc_like_host
+        REPLACES="s:\S*clang++ :$HOST_CLANGXX :g"
+        REPLACES=$REPLACES";s:\S*clang :$HOST_CLANG :g"
+        REPLACES=$REPLACES";s:\S*llvm-objcopy :$HOST_LLVM_OBJCOPY :g"
+        find . -name "*.ninja" | xargs sed "$REPLACES" -i
+        cd ..
+    fi
+    # Done processing the Ninja files
+
+    # Workaround for the functions not supported by musl
+    if [ "${TCLIBC}" = "musl" ]; then
+        sed -e 's/strtoll_l(__a, \&__p2, __base, _LIBCPP_GET_C_LOCALE)/strtoll(__a, \&__p2, __base)/g' \
+            -e 's/strtoull_l(__a, \&__p2, __base, _LIBCPP_GET_C_LOCALE)/strtoull(__a, \&__p2, __base)/g' \
+            ${S}/buildtools/libcxx/include/locale -i
+    fi
+}
+
+# Perfetto generates a few different binaries, such as traced and traced_probes and perfetto.
+# The "tracebox" is a busybox that combines the 3 above and provides a single stop for trace capture, so we only build "tracebox" here.
+do_compile () {
+    cd ${B}
+    ninja -C . tracebox
+}
+
+do_install () {
+    BIN_DIR=${D}${bindir}
+
+    install -d -m0755 $BIN_DIR
+    install ${B}/tracebox $BIN_DIR/tracebox
+}