summaryrefslogtreecommitdiff
path: root/meta-openembedded/meta-oe/recipes-devtools/perfetto/perfetto.bb
diff options
context:
space:
mode:
authorPatrick Williams <patrick@stwcx.xyz>2022-10-21 22:42:47 +0300
committerPatrick Williams <patrick@stwcx.xyz>2022-10-21 22:44:01 +0300
commit975a06f9a4c471adefa88ac82a1559b6463dba1d (patch)
tree4c0901586d4567cac89ca770b42251b88a1aec75 /meta-openembedded/meta-oe/recipes-devtools/perfetto/perfetto.bb
parent0999122bfe6f28863066012c0466fd7f3139b658 (diff)
downloadopenbmc-975a06f9a4c471adefa88ac82a1559b6463dba1d.tar.xz
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
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-devtools/perfetto/perfetto.bb')
-rw-r--r--meta-openembedded/meta-oe/recipes-devtools/perfetto/perfetto.bb151
1 files changed, 151 insertions, 0 deletions
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 0000000000..143445c145
--- /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
+}